Použití integrity image k ověření podepsaných imagí před jejich nasazením do clusterů Azure Kubernetes Service (AKS) (Preview)

Azure Kubernetes Service (AKS) a související kontejnerový model poskytují vyšší škálovatelnost a možnosti správy aplikací nativních pro cloud. S AKS můžete spouštět flexibilní softwarové aplikace podle potřeb běhu vašeho systému. Tato flexibilita však může přinést nové výzvy.

V těchto aplikačních prostředích pomáhá použití podepsaných imagí kontejnerů ověřit, že vaše nasazení pocházejí z důvěryhodné entity a že image od jejich vytvoření nebyly manipulovány. Integrita image je služba, která umožňuje přidat Azure Policy integrovanou definici a ověřit, že se do clusterů AKS nasazují jenom podepsané image.

Poznámka

Integrita obrazu je funkce založená na ratifikaci. V clusteru AKS je ImageIntegritynázev funkce a název vlastnosti , zatímco názvy příslušných podů integrity image obsahují Ratify.

Důležité

Funkce AKS Preview jsou k dispozici na základě samoobslužného souhlasu. Verze Preview se poskytují "tak, jak jsou" a "tak, jak jsou" a "tak, jak jsou k dispozici" a jsou vyloučeny ze smluv o úrovni služeb a omezené záruky. Verze Preview AKS jsou částečně pokryté zákaznickou podporou v maximálním úsilí. Z tohoto důvodu nejsou tyto funkce určeny pro produkční použití. Další informace najdete v následujících článcích podpory:

Požadavky

  • Předplatné Azure. Pokud nemáte předplatné Azure, můžete si vytvořit bezplatný účet.

  • Azure CLI nebo Azure PowerShell.

  • aks-preview Rozšíření CLI verze 0.5.96 nebo novější.

  • Ujistěte se, že je v clusteru povolený doplněk Azure Policy pro AKS. Pokud tento doplněk nemáte nainstalovaný, přečtěte si téma Instalace doplňku Azure Policy pro AKS.

  • Cluster AKS s povoleným vystavitelem OIDC Pokud chcete vytvořit nový cluster nebo aktualizovat existující cluster, přečtěte si téma Konfigurace clusteru AKS s vystavitelem OIDC.

  • Příznaky EnableImageIntegrityPreview funkce a AKS-AzurePolicyExternalData zaregistrované ve vašem předplatném Azure. Zaregistrujte příznaky funkcí pomocí následujících příkazů:

    1. EnableImageIntegrityPreview Zaregistrujte příznaky funkcí a AKS-AzurePolicyExternalData pomocí az feature register příkazu .

      # Register the EnableImageIntegrityPreview feature flag
      az feature register --namespace "Microsoft.ContainerService" --name "EnableImageIntegrityPreview"
      
      # Register the AKS-AzurePolicyExternalData feature flag
      az feature register --namespace "Microsoft.ContainerService" --name "AKS-AzurePolicyExternalData"
      

      Může trvat několik minut, než se stav zobrazí jako Zaregistrováno.

    2. Pomocí příkazu ověřte stav az feature show registrace.

      # Verify the EnableImageIntegrityPreview feature flag registration status
      az feature show --namespace "Microsoft.ContainerService" --name "EnableImageIntegrityPreview"
      
      # Verify the AKS-AzurePolicyExternalData feature flag registration status
      az feature show --namespace "Microsoft.ContainerService" --name "AKS-AzurePolicyExternalData"
      
    3. Jakmile se zobrazí stav Zaregistrováno, aktualizujte registraci Microsoft.ContainerService poskytovatele prostředků pomocí az provider register příkazu .

      az provider register --namespace Microsoft.ContainerService
      

Důležité informace a omezení

  • Vaše clustery AKS musí používat Kubernetes verze 1.26 nebo vyšší.
  • Tuto funkci byste neměli používat pro produkční Azure Container Registry (ACR) registry nebo úlohy.
  • Integrita image podporuje maximálně 200 jedinečných podpisů současně v celém clusteru.
  • Notace je jediným podporovaným ověřovatelem.
  • Audit je jediným podporovaným efektem zásad ověřování.

Jak funguje integrita obrázků

Snímek obrazovky znázorňující základní architekturu integrity obrázků

Integrita imagí používá ratifikační, Azure Policy a Gatekeeper k ověření podepsaných imagí před jejich nasazením do clusterů AKS. Povolením integrity image v clusteru se pod nasadí Ratify . Tento Ratify pod provádí následující úlohy:

  1. Odsouhlasí certifikáty z Azure Key Vault podle konfigurace, kterou jste nastavili prostřednictvím Ratify identifikátorů CRD.
  2. Přistupuje k obrázkům uloženým ve službě ACR, když žádosti o ověření pocházejí z Azure Policy. Pokud chcete toto prostředí povolit, Azure Policy rozšiřuje Gatekeeper, webhook kontroleru přístupu pro agenta OPA (Open Policy Agent).
  3. Určuje, jestli je cílová image podepsaná důvěryhodným certifikátem, a proto se považuje za důvěryhodnou.
  4. AzurePolicy a Gatekeeper výsledky ověření využívají jako stav dodržování předpisů, abyste mohli rozhodnout, jestli se má žádost o nasazení povolit.

Povolení integrity imagí v clusteru AKS

Poznámka

Ověření podpisu image je scénář zaměřený na zásady správného řízení a využívá Azure Policy k ověření signatur imagí v clusterech AKS ve velkém měřítku. Doporučujeme používat integrovanou iniciativu Azure Policy integrity imagí V AKS, která je k dispozici v integrované knihovně definic Azure Policy.

  • Pomocí příkazu vytvořte přiřazení zásad s iniciativou [Preview]: Use Image Integrity to ensure only trusted images are deployedaz policy assignment create zásad AKS.

    export SCOPE="/subscriptions/${SUBSCRIPTION}/resourceGroups/${RESOURCE_GROUP}"
    export LOCATION=$(az group show --name ${RESOURCE_GROUP} --query location -o tsv)
    
    az policy assignment create --name 'deploy-trustedimages' --policy-set-definition 'af28bf8b-c669-4dd3-9137-1e68fdc61bd6' --display-name 'Audit deployment with unsigned container images' --scope ${SCOPE} --mi-system-assigned --role Contributor --identity-scope ${SCOPE} --location ${LOCATION}
    

    Po povolení funkce se Ratify pod nasadí.

Poznámka

Zásada nasadí do clusteru funkci integrity image, když zjistí jakoukoli operaci aktualizace v clusteru. Pokud chcete tuto funkci povolit okamžitě, musíte vytvořit nápravu zásad pomocí az policy remediation create příkazu .

assignment_id=$(az policy assignment show --name 'deploy-trustedimages' --scope ${SCOPE} --query id -o tsv)
az policy remediation create --policy-assignment "$assignment_id" --definition-reference-id deployAKSImageIntegrity --name remediation --resource-group ${RESOURCE_GROUP}

Nastavení konfigurací ověřování

Pokud chcete správně ověřit cílovou podepsanou image, musíte nastavit Ratify konfigurace prostřednictvím identifikátorů C8s CRD pomocí kubectl.

V tomto článku používáme certifikát certifikační autority podepsaný svým držitelem z oficiální dokumentační dokumentace k certifikaci k nastavení konfigurací ověřování. Další příklady najdete v článku Osvědčování.

  1. Vytvořte soubor s VerifyConfig názvem verify-config.yaml a zkopírujte ho do následujícího souboru YAML:

    apiVersion: config.ratify.deislabs.io/v1beta1
    kind: CertificateStore
    metadata:
      name: certstore-inline
    spec:
      provider: inline
      parameters:
        value: |
          -----BEGIN CERTIFICATE-----
          MIIDQzCCAiugAwIBAgIUDxHQ9JxxmnrLWTA5rAtIZCzY8mMwDQYJKoZIhvcNAQEL
          BQAwKTEPMA0GA1UECgwGUmF0aWZ5MRYwFAYDVQQDDA1SYXRpZnkgU2FtcGxlMB4X
          DTIzMDYyOTA1MjgzMloXDTMzMDYyNjA1MjgzMlowKTEPMA0GA1UECgwGUmF0aWZ5
          MRYwFAYDVQQDDA1SYXRpZnkgU2FtcGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
          MIIBCgKCAQEAshmsL2VM9ojhgTVUUuEsZro9jfI27VKZJ4naWSHJihmOki7IoZS8
          3/3ATpkE1lGbduJ77M9UxQbEW1PnESB0bWtMQtjIbser3mFCn15yz4nBXiTIu/K4
          FYv6HVdc6/cds3jgfEFNw/8RVMBUGNUiSEWa1lV1zDM2v/8GekUr6SNvMyqtY8oo
          ItwxfUvlhgMNlLgd96mVnnPVLmPkCmXFN9iBMhSce6sn6P9oDIB+pr1ZpE4F5bwa
          gRBg2tWN3Tz9H/z2a51Xbn7hCT5OLBRlkorHJl2HKKRoXz1hBgR8xOL+zRySH9Qo
          3yx6WvluYDNfVbCREzKJf9fFiQeVe0EJOwIDAQABo2MwYTAdBgNVHQ4EFgQUKzci
          EKCDwPBn4I1YZ+sDdnxEir4wHwYDVR0jBBgwFoAUKzciEKCDwPBn4I1YZ+sDdnxE
          ir4wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAgQwDQYJKoZIhvcNAQEL
          BQADggEBAGh6duwc1MvV+PUYvIkDfgj158KtYX+bv4PmcV/aemQUoArqM1ECYFjt
          BlBVmTRJA0lijU5I0oZje80zW7P8M8pra0BM6x3cPnh/oZGrsuMizd4h5b5TnwuJ
          hRvKFFUVeHn9kORbyQwRQ5SpL8cRGyYp+T6ncEmo0jdIOM5dgfdhwHgb+i3TejcF
          90sUs65zovUjv1wa11SqOdu12cCj/MYp+H8j2lpaLL2t0cbFJlBY6DNJgxr5qync
          cz8gbXrZmNbzC7W5QK5J7fcx6tlffOpt5cm427f9NiK2tira50HU7gC3HJkbiSTp
          Xw10iXXMZzSbQ0/Hj2BF4B40WfAkgRg=
          -----END CERTIFICATE-----
    ---
    apiVersion: config.ratify.deislabs.io/v1beta1
    kind: Store
    metadata:
      name: store-oras
    spec:
      name: oras
    # If you want to you use Workload Identity for Ratify to access Azure Container Registry,
    # uncomment the following lines, and fill the proper ClientID:
    # See more: https://ratify.dev/docs/reference/oras-auth-provider
    # parameters:
    #  authProvider:
    #    name: azureWorkloadIdentity
    #    clientID: XXX
    ---
    apiVersion: config.ratify.deislabs.io/v1beta1
    kind: Verifier
    metadata:
      name: verifier-notary-inline
    spec:
      name: notation
      artifactTypes: application/vnd.cncf.notary.signature
      parameters:
        verificationCertStores:  # certificates for validating signatures
          certs: # name of the trustStore
            - certstore-inline # name of the certificate store CRD to include in this trustStore
        trustPolicyDoc: # policy language that indicates which identities are trusted to produce artifacts
          version: "1.0"
          trustPolicies:
            - name: default
              registryScopes:
                - "*"
              signatureVerification:
                level: strict
              trustStores:
                - ca:certs
              trustedIdentities:
                - "*"
    
  2. Použijte na VerifyConfig cluster pomocí kubectl apply příkazu .

    kubectl apply -f verify-config.yaml
    

Nasazení ukázkových imagí do clusteru AKS

  • Pomocí příkazu nasaďte podepsanou image kubectl run demo .

    kubectl run demo-signed --image=ghcr.io/deislabs/ratify/notary-image:signed 
    

    Následující příklad výstupu ukazuje, že integrita image umožňuje nasazení:

    ghcr.io/deislabs/ratify/notary-image:signed
    pod/demo-signed created
    

Pokud chcete použít vlastní image, projděte si doprovodné materiály k podepisování imagí.

Zakázat integritu obrázku

  • Zakažte integritu image v clusteru az aks update pomocí příkazu s příznakem --disable-image-integrity .

    az aks update --resource-group myResourceGroup --name MyManagedCluster --disable-image-integrity
    

Odebrat iniciativu zásad

Další kroky

V tomto článku jste zjistili, jak pomocí integrity imagí ověřit podepsané image před jejich nasazením do clusterů Azure Kubernetes Service (AKS). Pokud chcete zjistit, jak podepisovat vlastní kontejnery, přečtěte si téma Sestavování, podepisování a ověřování imagí kontejnerů pomocí služby Notary a Azure Key Vault (Preview).