Este tópico explica como usar o Container Registry (ACR), o Key Management Service (KMS), o Security Center e o componente kritis-validation-hook para verificar automaticamente as assinaturas de imagens de contêiner. Esse processo garante a implantação apenas de imagens de contêiner provenientes de autoridades confiáveis, reduzindo o risco de código acidental ou malicioso em seu ambiente.
Pré-requisitos
-
O Security Center deve estar ativado:
-
Crie uma chave do KMS que utilize um algoritmo de criptografia assimétrica. Para mais informações, consulte Gerenciar chaves.
ImportanteA assinatura de contêineres exige uma chave assimétrica. Ao criar a chave do KMS, defina o Key Type como RSA_2048 e o Key Usage como Sign/Verify. Para mais detalhes sobre os algoritmos de chave do KMS, consulte a Visão geral do Key Management Service.
Você deve ter uma instância do ACR Enterprise Edition com a especificação Advanced.
Etapa 1: Instale o kritis-validation-hook
Faça login no console do ACK. 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 ao componente kritis-validation-hook.
O cluster deve ter as permissões adequadas para executar o componente kritis-validation-hook. Para mais informações, consulte Configurar permissões de acesso para recursos.
Etapa 2: Crie uma chave do KMS para assinatura de imagens
Para obter instruções sobre como criar uma Customer Master Key (CMK), consulte Gerenciar chaves.
Ao criar a chave, defina o Key Type como RSA_2048 e o Key Usage como Sign/Verify.
Etapa 3: Crie uma testemunha no Security Center
Faça login no console do Security Center.
No painel de navegação à esquerda, escolha .
-
Na aba Witness, clique em Create Witness. Após configurar os parâmetros, clique em OK.
Parâmetro
Descrição
Witness Name
A testemunha é selecionada durante a configuração de uma política de segurança para autorizar suas imagens de contêiner. Recomendamos definir um nome fácil de identificar.
Select Certificate
Selecione na lista de certificados a chave do KMS criada.
Description
Insira uma descrição para a testemunha.
Etapa 4: Ative a assinatura automática de imagens no ACR
Faça login no console do Container Registry.
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 nome dela ou em Manage na coluna Actions.
NotaPara criar uma instância Enterprise Edition, clique em Create ACR EE. Certifique-se de definir a Specification como Advanced.
-
No painel de navegação à esquerda da página de detalhes da instância, escolha .
Crie um namespace. É possível ativar a assinatura de imagens para todas as imagens de contêiner neste namespace. Para mais informações, consulte Operações básicas em namespaces.
-
Ative a assinatura automática de imagens para o namespace criado.
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 detalhes sobre como configurar uma regra de assinatura, consulte Configurar 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 console do Security Center.
No painel de navegação à esquerda, escolha .
-
Na aba Security Policy, clique em Add Policy. Após configurar a política, clique em OK.
Parâmetro
Descrição
Policy Name
Insira um nome descritivo para a política de segurança.
Witness
Selecione a testemunha criada.
Application Cluster
Clique no grupo de clusters para o qual deseja ativar a verificação de assinatura e selecione o Cluster Namespace alvo.
Policy Status
Ative esta opção para habilitar a política imediatamente.
NotaA política vem desativada por padrã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 Ativar imutabilidade de tag de imagem.
Execute os comandos abaixo para confirmar se a verificação de assinatura funciona conforme o esperado.
-
No namespace onde a verificação de assinatura está ativa, tentativas de implantar imagens de contêiner não assinadas são rejeitadas.
Use uma 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 attestedUse uma 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 attestedEnvie uma imagem para o namespace do ACR onde a assinatura automática está ativada. Em seguida, confirme se é possível implantar a imagem de contêiner assinada como uma carga de trabalho.
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 createdDocumentos relacionados
Para uma visão geral do componente kritis-validation-hook, consulte Visão geral do componente kritis-validation-hook.
Para consultar as notas de versão do componente kritis-validation-hook, veja kritis-validation-hook.