Compartilhar via


Validar assinatura da imagem

As Operações do Azure IoT assinam suas imagens do docker e helm para permitir que os usuários verifiquem a integridade e a origem das imagens que usam. A assinatura utiliza um par de chaves público/privado para provar que a Microsoft criou uma imagem de contêiner ao criar uma assinatura digital e adicioná-la à imagem. Esse artigo fornece as etapas para verificar se uma imagem foi assinada pela Microsoft.

  1. Baixar Notação.

    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. Baixar o certificado público de assinatura da Microsoft: https://www.microsoft.com/pkiops/certs/Microsoft%20Supply%20Chain%20RSA%20Root%20CA%202022.crt.

    Certifique-se de que está salvo como msft_signing_cert.crt.

  3. Adicionar o certificado à CLI de notação.

    notation cert add --type ca --store supplychain msft_signing_cert.crt
    
  4. Verificar o certificado na notação.

    notation cert ls
    

    A saída do comando se parece com o exemplo a seguir:

    STORE TYPE  STORE NAME  CERTIFICATE 
    ca          supplychain msft_signing_cert.crt
    
  5. Crie um arquivo de política de confiança com seu escopo de imagem.

    {
        "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 todos os registryScopes para evitar listar cada imagem agrupada com as Operações do Azure IoT e evitar modificações futuras.
    • CN=Azure IoT Operations abrange todas as imagens das Operações do Azure IoT. No entanto, outras imagens da Microsoft precisam de CN=Microsoft SCD Products RSA Signing.
  6. Use notação para verificar suas imagens baixadas em relação a política de segurança.

    Substitua o espaço reservado da versão pelo número de versão da imagem que você deseja verificar. Para uma instância existente das Operações do Azure IoT, você pode encontrar o número de versão na página de visão geral da instância no portal do Azure ou executando az iot ops show. Para uma lista completa de versões disponíveis, confira azure-iot-operations releases.

    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>
    

    A saída do comando se parece com o exemplo a seguir:

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