Utilize a Integridade da Imagem para validar imagens assinadas antes de as implementar nos clusters do Azure Kubernetes Service (AKS) (Pré-visualização)
Azure Kubernetes Service (AKS) e o modelo de contentor subjacente proporcionam uma maior escalabilidade e capacidade de gestão para aplicações nativas da cloud. Com o AKS, pode iniciar aplicações de software flexíveis de acordo com as necessidades de runtime do seu sistema. No entanto, esta flexibilidade pode introduzir novos desafios.
Nestes ambientes de aplicação, a utilização de imagens de contentor assinadas ajuda a verificar se as suas implementações são criadas a partir de uma entidade fidedigna e que as imagens não foram adulteradas desde a sua criação. A Integridade da Imagem é um serviço que lhe permite adicionar um Azure Policy definição incorporada para verificar se apenas as imagens assinadas são implementadas nos clusters do AKS.
Nota
A Integridade da Imagem é uma funcionalidade baseada em Ratificar. Num cluster do AKS, o nome da funcionalidade e o nome da propriedade são ImageIntegrity
, enquanto os nomes dos pods relevantes da Integridade da Imagem contêm Ratify
.
Importante
As funcionalidades de pré-visualização do AKS estão disponíveis numa base personalizada e opt-in. As pré-visualizações são fornecidas "tal como estão" e "conforme disponíveis", sendo excluídas dos contratos de nível de serviço e da garantia limitada. As pré-visualizações do AKS são parcialmente abrangidas pelo suporte ao cliente numa base de melhor esforço. Como tal, estas funcionalidades não se destinam à utilização de produção. Para obter mais informações, veja os seguintes artigos de suporte:
Pré-requisitos
Uma subscrição do Azure. Se não tiver uma subscrição do Azure, pode criar uma conta gratuita.
aks-preview
Versão 0.5.96 ou posterior da extensão da CLI.Certifique-se de que o suplemento Azure Policy do AKS está ativado no cluster. Se não tiver este suplemento instalado, consulte Instalar Azure Policy suplemento para o AKS.
Um cluster do AKS ativado com o Emissor OIDC. Para criar um novo cluster ou atualizar um cluster existente, veja Configurar um cluster do AKS com o Emissor de OIDC.
Os
EnableImageIntegrityPreview
sinalizadores de funcionalidade eAKS-AzurePolicyExternalData
registados na sua subscrição do Azure. Registe os sinalizadores de funcionalidades com os seguintes comandos:Registe os
EnableImageIntegrityPreview
sinalizadores de funcionalidade eAKS-AzurePolicyExternalData
com oaz feature register
comando .# 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"
O estado pode demorar alguns minutos a ser apresentado como Registado.
Verifique o estado do registo com o
az feature show
comando .# 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"
Assim que o estado mostrar Registado, atualize o registo do fornecedor de
Microsoft.ContainerService
recursos com oaz provider register
comando .az provider register --namespace Microsoft.ContainerService
Considerações e limitações
- Os clusters do AKS têm de executar a versão 1.26 ou superior do Kubernetes.
- Não deve utilizar esta funcionalidade para registos de Azure Container Registry de produção (ACR) ou cargas de trabalho.
- A Integridade da Imagem suporta um máximo de 200 assinaturas exclusivas em simultâneo em todo o cluster.
- A notação é o único verificador suportado.
- A auditoria é o único efeito de política de verificação suportado.
Como funciona a Integridade da Imagem
A Integridade da Imagem utiliza o Ratify, o Azure Policy e o Gatekeeper para validar imagens assinadas antes de as implementar nos clusters do AKS. Ativar a Integridade da Imagem no cluster implementa um Ratify
pod. Este Ratify
pod executa as seguintes tarefas:
- Reconcilia certificados do Azure Key Vault de acordo com a configuração que configurou através
Ratify
de CRDs. - Acede a imagens armazenadas no ACR quando os pedidos de validação provêm de Azure Policy. Para ativar esta experiência, Azure Policy expande o Gatekeeper, um webhook do controlador de admissão para o Agente de Política Aberta (OPA).
- Determina se a imagem de destino está assinada com um certificado fidedigno e, portanto, considerada fidedigna.
AzurePolicy
eGatekeeper
consuma os resultados da validação como o estado de conformidade para decidir se pretende permitir o pedido de implementação.
Ativar a Integridade da Imagem no cluster do AKS
Nota
A verificação de assinatura de imagem é um cenário orientado para a governação e tira partido Azure Policy para verificar assinaturas de imagens em clusters do AKS em escala. Recomendamos que utilize a iniciativa de Azure Policy incorporada integridade de imagens do AKS, que está disponível na biblioteca de definições incorporada do Azure Policy.
Crie uma atribuição de política com a iniciativa
[Preview]: Use Image Integrity to ensure only trusted images are deployed
de política do AKS com oaz policy assignment create
comando .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}
O
Ratify
pod é implementado depois de ativar a funcionalidade.
Nota
A política implementa a funcionalidade Integridade da Imagem no cluster quando deteta qualquer operação de atualização no cluster. Se quiser ativar a funcionalidade imediatamente, tem de criar uma remediação de política com o az policy remediation create
comando .
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}
Configurar configurações de verificação
Para que a Integridade da Imagem verifique corretamente a imagem assinada de destino, tem de configurar Ratify
as configurações através de CRDs K8s com kubectl
.
Neste artigo, utilizamos um certificado de AC autoassinado da documentação oficial do Ratify para configurar as configurações de verificação. Para obter mais exemplos, veja Ratificar CRDs.
Crie um
VerifyConfig
ficheiro com o nomeverify-config.yaml
e copie o seguinte 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: - "*"
Aplique o
VerifyConfig
ao cluster com okubectl apply
comando .kubectl apply -f verify-config.yaml
Implementar imagens de exemplo no cluster do AKS
Implemente uma imagem assinada com o
kubectl run demo
comando .kubectl run demo-signed --image=ghcr.io/deislabs/ratify/notary-image:signed
O resultado de exemplo seguinte mostra que a Integridade da Imagem permite a implementação:
ghcr.io/deislabs/ratify/notary-image:signed pod/demo-signed created
Se quiser utilizar as suas próprias imagens, consulte a documentação de orientação para a assinatura de imagens.
Desativar a Integridade da Imagem
Desative a Integridade da Imagem no cluster com o
az aks update
comando com o--disable-image-integrity
sinalizador.az aks update --resource-group myResourceGroup --name MyManagedCluster --disable-image-integrity
Remover iniciativa de política
Remova a iniciativa de política com o
az policy assignment delete
comando .az policy assignment delete --name 'deploy-trustedimages'
Passos seguintes
Neste artigo, aprendeu a utilizar a Integridade da Imagem para validar imagens assinadas antes de as implementar nos clusters do Azure Kubernetes Service (AKS). Se quiser saber como assinar os seus próprios contentores, veja Compilar, assinar e verificar imagens de contentor com Notário e Key Vault do Azure (Pré-visualização).