Compartir a través de


Validación de la firma de imágenes

Las Operaciones de IoT de Azure firma sus imágenes de Docker y Helm para permitir a los usuarios comprobar la integridad y el origen de las imágenes que usan. La firma utiliza un par de claves pública y privada para demostrar que Microsoft creó una imagen de contenedor mediante la creación de una firma digital y su adición a la imagen. En este artículo se proporcionan los pasos para comprobar que Microsoft firmó una imagen.

  1. Descargue notación.

    export NOTATION_VERSION=1.1.0
    curl -LO https://github.com/notaryproject/notation/releases/download/v$NOTATION_VERSION/notation_$NOTATION_VERSION\_linux_amd64.tar.gz
    sudo tar xvzf notation_1.1.0_linux_amd64.tar.gz -C /usr/bin/ notation
    
  2. Descargue el certificado público de firma de Microsoft: https://www.microsoft.com/pkiops/certs/Microsoft%20Supply%20Chain%20RSA%20Root%20CA%202022.crt.

    Asegúrese de que se guarda como msft_signing_cert.crt.

  3. Agregue el certificado a la cli de notación.

    notation cert add --type ca --store supplychain msft_signing_cert.crt
    
  4. Compruebe el certificado en notación.

    notation cert ls
    

    La salida del comando tiene el siguiente ejemplo:

    STORE TYPE  STORE NAME  CERTIFICATE 
    ca          supplychain msft_signing_cert.crt
    
  5. Cree un archivo trustpolicy con el ámbito de la imagen.

    {
        "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"
                ]
            }
        ]
    }
    
    • Permitimos que todos los registryScopes eviten enumerar todas las imágenes que se incluyen con operaciones de Azure IoT y evitar modificaciones futuras.
    • CN=Azure IoT Operations cubre todas las imágenes de operaciones de Azure IoT. Sin embargo, otras imágenes de Microsoft necesitan CN=Microsoft SCD Products RSA Signing.
  6. Use la notación para comprobar las imágenes descargadas en la directiva de confianza.

    Reemplace el marcador de posición de versión por el número de versión de la imagen que quiera comprobar. Para una instancia existente de Azure IoT Operations, puede encontrar el número de versión en la página de información general de la instancia en Azure Portal, o bien si ejecuta az iot ops show. Para obtener una lista completa de las versiones disponibles, vea Versiones de azure-iot-operations.

    notation policy import <TRUSTPOLICY_FILE>.json
    export NOTATION_EXPERIMENTAL=1
    notation verify --allow-referrers-api mcr.microsoft.com/azureiotoperations/aio-operator:<AZURE_IOT_OPERATIONS_VERSION>
    

    La salida del comando tiene el siguiente ejemplo:

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