Поделиться через


Проверка подписи образа

Операции Интернета вещей Azure подписывают образы docker и helm, чтобы пользователи могли проверить целостность и происхождение используемых образов. Подписывание использует пару открытого и закрытого ключа, чтобы доказать, что корпорация Майкрософт создала образ контейнера, создав цифровую подпись и добавив ее в образ. В этой статье приведены действия по проверке подписи образа корпорацией Майкрософт.

  1. Скачайте нотацию.

    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. Скачайте открытый сертификат для подписи Майкрософт: https://www.microsoft.com/pkiops/certs/Microsoft%20Supply%20Chain%20RSA%20Root%20CA%202022.crt

    Убедитесь, что он сохранен как msft_signing_cert.crt.

  3. Добавьте сертификат в интерфейс командной строки нотации.

    notation cert add --type ca --store supplychain msft_signing_cert.crt
    
  4. Проверьте нотацию сертификата.

    notation cert ls
    

    Выходные данные команды выглядят следующим образом:

    STORE TYPE  STORE NAME  CERTIFICATE 
    ca          supplychain msft_signing_cert.crt
    
  5. Создайте файл trustpolicy с областью изображения.

    {
        "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"
                ]
            }
        ]
    }
    
    • Мы разрешаем всем реестрамScopes избегать перечисления всех образов, которые объединяются с операциями Интернета вещей Azure и чтобы избежать будущих изменений.
    • CN=Azure IoT Operations охватывает все образы операций Интернета вещей Azure. Однако для других образов Майкрософт требуется CN=Microsoft SCD Products RSA Signing.
  6. Используйте нотацию, чтобы проверить скачанные образы в отношении доверия.

    Замените заполнитель версии номером версии образа, который требуется проверить. Для существующего экземпляра операций Интернета вещей Azure можно найти номер версии на странице обзора экземпляра в портал Azure или запустив az iot ops show. Полный список доступных версий см . в выпусках 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>
    

    Выходные данные команды выглядят следующим образом:

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