Überprüfen der Imagesignierung

Azure IoT Einsatz signiert seine Docker- und Helm-Images, damit Benutzer die Integrität und den Ursprung der von ihnen verwendeten Images überprüfen können. Das Signieren verwendet ein öffentliches/privates Schlüsselpaar, um zu beweisen, dass Microsoft ein Containerimage erstellt hat, indem eine digitale Signatur erstellt und dem Image hinzugefügt wird. Dieser Artikel enthält die Schritte, um zu überprüfen, ob ein Image von Microsoft signiert wurde.

  1. Laden Sie die Notation herunter. Aktualisieren Sie die Versionsnummer im Befehl auf die neueste Version von Notation. Die neueste Version findest du auf der Notation-Veröffentlichungsseite.

    export NOTATION_VERSION=1.3.2
    curl -LO https://github.com/notaryproject/notation/releases/download/v$NOTATION_VERSION/notation_$NOTATION_VERSION\_linux_amd64.tar.gz
    sudo tar xvzf notation_${NOTATION_VERSION}_linux_amd64.tar.gz -C /usr/bin/ notation
    
  2. Laden Sie das öffentliche Microsoft-Signaturzertifikat herunter: https://www.microsoft.com/pkiops/certs/Microsoft%20Supply%20Chain%20RSA%20Root%20CA%202022.crt.

    Stellen Sie sicher, dass es als msft_signing_cert.crt gespeichert wird.

  3. Fügen Sie das Zertifikat zu Notation CLI hinzu.

    notation cert add --type ca --store supplychain msft_signing_cert.crt
    
  4. Überprüfen Sie das Zertifikat in der Notation.

    notation cert ls
    

    Die Ausgabe des Befehls sieht wie das folgende Beispiel aus:

    STORE TYPE  STORE NAME  CERTIFICATE 
    ca          supplychain msft_signing_cert.crt
    
  5. Erstellen Sie eine Trust-Policy-Datei für Ihren Image-Bereich.

    {
        "version": "1.0",
        "trustPolicies": [
            {
                "name": "supplychain",
                "registryScopes": [ "*" ],
                "signatureVerification": {
                    "level" : "strict" 
                },
                "trustStores": [ "ca:supplychain" ],
                "trustedIdentities": [
                    "x509.subject: CN=Azure IoT Operations,O=Microsoft Corporation,L=Redmond,ST=Washington,C=US",
                    "x509.subject: CN=Microsoft SCD Products RSA Signing,O=Microsoft Corporation,L=Redmond,ST=Washington,C=US"
                ]
            }
        ]
    }
    
    • Wir erlauben alle registryScopes, damit nicht jedes in Azure IoT Einsatz enthaltene Image einzeln aufgelistet werden muss und um künftige Änderungen zu vermeiden.
    • CN=Azure IoT Einsatz umfasst alle Azure IoT Einsatz-Images. Andere Microsoft-Images benötigen jedoch CN=Microsoft SCD Products RSA Signing.
  6. Verwenden Sie die Notation, um Ihre heruntergeladenen Images anhand der Vertrauensrichtlinie zu überprüfen.

    Ersetzen Sie den Versionsplatzhalter durch die Versionsnummer des Bilds, das Sie überprüfen möchten. Für eine vorhandene Instanz von Azure IoT Einsatz finden Sie die Versionsnummer auf der Seite „Instanzübersicht“ im Azure-Portal oder indem Sie az iot ops show ausführen. Eine vollständige Liste der verfügbaren Versionen finden Sie unter azure-iot-operations releases.

    notation policy import <TRUSTPOLICY_FILE>.json
    notation verify mcr.microsoft.com/azureiotoperations/aio-operator:<AZURE_IOT_OPERATIONS_VERSION>
    

    Die Ausgabe des Befehls sieht wie das folgende Beispiel aus:

    Successfully verified signature for mcr.microsoft.com/azureiotoperations/aio-operator@sha256:09cbca56a2149d624cdc4ec952abe9a92ee88c347790c6657e3dd2a0fcc12d10