Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Verifique assinaturas de imagens de contêiner com kritis-validation-hook

Última atualização: Sep 12, 2026

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:

    • Assinatura: Ultimate (se a edição atual não oferecer suporte a este recurso, faça o upgrade).

    • Pagamento conforme o uso: o plano pay-as-you-go do Host and Container Security está ativado (caso contrário, purchase).

  • Crie uma chave do KMS com algoritmo de criptografia assimétrica. Para mais informações, consulte Gerencie chaves.

    Importante

    A 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

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em Components and Add-ons .

  3. Na página Add-ons, clique na aba Security, localize o kritis-validation-hook e clique em Install.

  4. 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.

Importante

Ao criar a chave, defina Key Type como RSA_2048 e Key Usage como Sign/Verify.

Etapa 3: Crie uma testemunha no Security Center

  1. Faça login no Security Center console.

  2. No painel de navegação à esquerda, escolha Protection Configuration > Container Protection > Container Signature.

  3. 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

  1. Faça login no Container Registry console.

  2. Na barra de navegação superior, selecione uma região.

  3. No painel de navegação à esquerda, clique em Instances.

  4. Na página Instance, localize a instância Enterprise Edition e clique no respectivo nome ou em Manage na coluna Actions.

    Nota

    Para criar uma instância Enterprise Edition, clique em Create ACR EE. Defina Specification como Advanced.

  5. No painel de navegação à esquerda da página de detalhes da instância, escolha Repository > Namespaces.

    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.

  6. 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.

    1. No painel de navegação à esquerda da página de detalhes da instância, escolha Security and Trust > Image Signature .

    2. Na aba Image Signature , clique em Create a signature rule.

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.

  1. Faça login no Security Center console.

  2. No painel de navegação à esquerda, escolha Protection Configuration > Container Protection > Container Signature.

  3. 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.

    Nota

    A 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

Nota

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 10
    Error from server: admission webhook "kritis-validation-hook-deployments.grafeas.io" denied the request: image alpine:3.11 is not attested

    Com referência de imagem no formato de digest:

    kubectl -n default create deployment not-sign --image=alpine@sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 -- sleep 10
    Error 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.11
    The push refers to repository [kritis-demo***.cn-hongkong.cr.aliyuncs.com/kritis-demo***/alpine]
    5216338b40a7: Pushed
    3.11: digest: sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 size: 528

    Implante 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 10
    deployment.apps/is-signed created

Documentos relacionados