O Container Registry (ACR), o Key Management Service (KMS), o Security Center e o add-on kritis-validation-hook verificam automaticamente as assinaturas de imagens de contêiner. Isso garante a implantação apenas de imagens assinadas por autoridades confiáveis, o que reduz o risco de código acidental ou malicioso no ambiente.
Pré-requisitos
-
Security Center ativado:
-
Crie uma chave do KMS com algoritmo de criptografia assimétrica. Para mais informações, consulte Gerencie chaves.
ImportanteA assinatura de contêineres exige uma chave assimétrica. Ao criar a chave do KMS, defina Key Type como RSA_2048 e Key Usage como Sign/Verify. Para mais detalhes sobre os algoritmos de chave do KMS, consulte Key Management Service overview.
Disponha de uma instância do ACR Enterprise Edition com a especificação Advanced.
Etapa 1: Instale o kritis-validation-hook
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em Components and Add-ons .
Na página Add-ons, clique na aba Security, localize o kritis-validation-hook e clique em Install.
-
Conceda as permissões necessárias para acessar o add-on kritis-validation-hook.
Verifique se o cluster possui as permissões exigidas para executar o componente kritis-validation-hook. Para mais informações, consulte Configure permissões de acesso para recursos.
Etapa 2: Crie uma chave do KMS para assinatura de imagens
Para criar uma Customer Master Key (CMK), consulte Gerencie chaves.
Ao criar a chave, defina Key Type como RSA_2048 e Key Usage como Sign/Verify.
Etapa 3: Crie uma testemunha no Security Center
Faça login no Security Center console.
No painel de navegação à esquerda, escolha .
-
Na aba Witness, clique em Create Witness. Configure os parâmetros e clique em OK.
Parâmetro
Descrição
Witness Name
Selecione uma testemunha para fornecer autorização confiável às imagens ao configurar uma política de segurança de assinatura de contêineres. Use um nome descritivo.
Select Certificate
Selecione a chave do KMS criada anteriormente na lista de certificados.
Description
Insira uma descrição para a testemunha.
Etapa 4: Ative a assinatura automática de imagens no ACR
Faça login no Container Registry console.
Na barra de navegação superior, selecione uma região.
No painel de navegação à esquerda, clique em Instances.
-
Na página Instance, localize a instância Enterprise Edition e clique no respectivo nome ou em Manage na coluna Actions.
NotaPara criar uma instância Enterprise Edition, clique em Create ACR EE. Defina Specification como Advanced.
-
No painel de navegação à esquerda da página de detalhes da instância, escolha .
Crie um namespace para ativar a assinatura de todas as imagens de contêiner nele contidas. Para mais informações, consulte Basic operations on namespaces.
-
Ative a assinatura automática de imagens para o namespace criado anteriormente.
Ao adicionar uma regra de assinatura, selecione a testemunha criada no Security Center na Etapa 3.
No painel de navegação à esquerda da página de detalhes da instância, escolha .
-
Na aba Image Signature , clique em Create a signature rule.
Para mais informações, consulte Configure uma regra para assinatura automática de imagens.
Etapa 5: Ative a verificação de assinatura no Security Center
Crie e ative uma política de segurança no Security Center para impor a verificação de assinatura de imagens de contêiner em um namespace específico do Kubernetes.
Faça login no Security Center console.
No painel de navegação à esquerda, escolha .
-
Na aba Security Policy, clique em Create Policy. Configure a política e clique em OK.
Parâmetro
Descrição
Policy Name
Selecione uma testemunha para conceder autorização confiável ao cluster de destino ao configurar uma política de segurança de assinatura.
Insira um nome de política descritivo e fácil de identificar.
Witness
Selecione a testemunha criada anteriormente.
Application Cluster
Clique no grupo de clusters que requer verificação de assinatura e selecione o Cluster Namespace de destino.
Policy Status
Ative esta opção para aplicar a política imediatamente.
NotaA política vem desativada por padrão. Ela só entra em vigor após a ativação.
Descrição
Insira uma descrição para a política de segurança.
Etapa 6: Validar a verificação automática de assinatura
Caso a imutabilidade de tag de imagem não esteja ativada, use uma referência de imagem no formato de digest. Para mais informações, consulte Ative imutabilidade de tag de imagem.
Execute os comandos abaixo para confirmar se a verificação de assinatura funciona conforme o esperado.
-
No namespace com verificação de assinatura ativa, o sistema rejeita tentativas de implantar imagens de contêiner não assinadas.
Com referência de imagem no formato de tag:
kubectl -n default create deployment not-sign --image=alpine:3.11 -- sleep 10Error from server: admission webhook "kritis-validation-hook-deployments.grafeas.io" denied the request: image alpine:3.11 is not attestedCom referência de imagem no formato de digest:
kubectl -n default create deployment not-sign --image=alpine@sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 -- sleep 10Error from server: admission webhook "kritis-validation-hook-deployments.grafeas.io" denied the request: image alpine@sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 is not attested -
Envie uma imagem para o namespace do ACR com assinatura automática ativada e verifique se a implantação da imagem assinada ocorre com êxito.
docker push kritis-demo***.cn-hongkong.cr.aliyuncs.com/kritis-demo***/alpine:3.11The push refers to repository [kritis-demo***.cn-hongkong.cr.aliyuncs.com/kritis-demo***/alpine] 5216338b40a7: Pushed 3.11: digest: sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 size: 528Implante a imagem de contêiner assinada automaticamente:
kubectl -n default create deployment is-signed --image=kritis-demo***.cn-hongkong.cr.aliyuncs.com/kritis-demo***/alpine@sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 -- sleep 10deployment.apps/is-signed created
Documentos relacionados
Para obter uma visão geral do componente kritis-validation-hook, consulte kritis-validation-hook component overview.
Para consultar as notas de versão do componente kritis-validation-hook, consulte kritis-validation-hook.