O Container Registry assina automaticamente as imagens em namespaces especificados para proteger sua cadeia de suprimentos contra ataques man-in-the-middle (MITM) e adulterações não autorizadas. Após o envio de uma imagem ao Container Registry, o sistema a assina com base nas regras de assinatura correspondentes. Assim, apenas imagens verificadas são executadas no seu ambiente.
Pré-requisitos
Antes de começar, verifique se você possui:
Uma instância do Container Registry Enterprise Edition (Advanced Edition) — A assinatura de imagens exige o nível Advanced Edition. Para obter instruções de configuração, consulte Criar uma instância do Container Registry Enterprise Edition.
Key Management Service (KMS) ativado — O KMS fornece as chaves assimétricas usadas para assinar imagens. Para obter instruções de configuração, consulte Ativar o KMS.
Criar chaves assimétricas
A assinatura de imagens utiliza algoritmos de chave assimétrica. Crie uma chave KMS do tipo EC ou RSA com a finalidade definida como SIGN/VERIFY.
Faça logon no console do KMS.
Na barra de navegação superior, selecione a região onde deseja criar as chaves.
No painel de navegação à esquerda, clique em Keys e, em seguida, clique em Create Key.
Na caixa de diálogo Create Key, defina o tipo de chave como EC ou RSA e configure o parâmetro Purpose como SIGN/VERIFY; depois, clique em OK. Para detalhes sobre outros parâmetros, consulte Criar uma CMK.
Autorizar o Container Registry a acessar chaves KMS
O Container Registry precisa de permissão para ler suas chaves assimétricas destinadas à assinatura. Configure esse acesso usando uma função do Resource Access Management (RAM) com uma política personalizada.
Criar a função RAM
Faça logon no console do RAM.
No painel de navegação à esquerda, escolha Identities > Roles.
Na página Roles, clique em Create Role.
Na página Create Role, defina Principal Type como Cloud Account, especifique sua conta Alibaba Cloud e clique em OK.
Na caixa de diálogo Create Role, defina Role Name como
AliyunContainerRegistryKMSRolee clique em OK.
Atualizar a política de confiança
Na página Roles, pesquise por
AliyunContainerRegistryKMSRolee clique no nome da função.Clique na aba Trust Policy e, em seguida, clique em Edit Trust Policy.
-
Substitua o conteúdo da política pelo seguinte e clique em OK:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "cr.aliyuncs.com" ] } } ], "Version": "1" }
Criar e anexar a política de permissões
No painel de navegação à esquerda do console do RAM, escolha Permissions > Policies.
Na página Policies, clique em Create Policy.
-
Na página Create Policy, clique na aba JSON e insira a política a seguir. Substitua
${region}e${accountid}pela sua região e ID da conta reais.{ "Statement": [ { "Effect": "Allow", "Action": [ "kms:*" ], "Resource": "acs:kms:${region}:${accountid}:*" } ], "Version": "1" } Clique em OK. Na caixa de diálogo Create Policy, defina Policy Name como
AliyunContainerRegistryKMSRolePolicy, configure a Description e clique em OK.No painel de navegação à esquerda, escolha Identities > Roles. Localize
AliyunContainerRegistryKMSRolee clique em Add Permissions na coluna Actions.No painel Add Permissions, selecione Custom Policy como tipo de política, localize e selecione
AliyunContainerRegistryKMSRolePolicye clique em OK.
Configurar um witness e uma política de verificação de assinatura
Um witness vincula suas chaves KMS ao fluxo de trabalho de assinatura do Container Registry. Opcionalmente, associe o witness a um cluster ACK para impor a verificação de assinatura durante a implantação.
Faça logon no console do Cloud Security Center.
No painel de navegação à esquerda, escolha Protection Configuration > Container Protection > Container Signature. Na página Container Signature, clique na aba Witness e, em seguida, clique em create a witness.
Crie um witness e associe-o às chaves KMS criadas anteriormente. Essas chaves serão utilizadas para a assinatura das imagens.
(Opcional) Crie uma política de verificação de assinatura para associar o witness a um cluster do Container Service for Kubernetes (ACK). Para mais detalhes, consulte Usar o recurso de assinatura de contêiner.
Configurar uma regra de assinatura
Uma regra de assinatura define quais imagens serão assinadas e de que forma. Após a criação da regra, o Container Registry assina automaticamente cada nova imagem enviada ao namespace especificado.
A regra de assinatura aplica-se apenas a imagens enviadas após a criação da regra. Imagens existentes no namespace não são assinadas.
Faça logon 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 Instances, clique na instância Enterprise Edition que deseja gerenciar.
No painel de navegação à esquerda, escolha Security and Trust > Image Signature e clique em Create a signature rule.
Na etapa Key Configuration, selecione o witness criado no Cloud Security Center, associe-o às chaves KMS e clique em Next.
-
Na etapa Signature Configurations, configure os parâmetros a seguir e clique em Create Signing Rule.
Parâmetro
Descrição
Algorithms
Algoritmo utilizado para assinar as imagens. Valores válidos: RSA_PSS_SHA_256 e RSA_PKCS1_SHA_256.
Scope
Namespace cujas imagens serão assinadas automaticamente.
Signature types
Default: Assina tanto os resumos (digests) quanto as tags das imagens. Recomendado para verificação de assinatura dentro da mesma instância. Simple: Assina apenas os resumos das imagens (não assina tags). Indicado para cenários de replicação de imagens entre instâncias, onde as tags podem mudar.
Trigger Type
Define como a assinatura da imagem é acionada. O valor padrão é Automatic Trigger, que assina as imagens sempre que elas são enviadas ao Container Registry.
Verificar assinaturas de imagem
Utilize o kritis-validation-hook para verificar assinaturas de imagens de contêiner em clusters ACK. Esse componente pode bloquear automaticamente a implantação de imagens caso a verificação de assinatura falhe. Para instruções de configuração, consulte Introdução ao kritis-validation-hook.
Como alternativa, use o recurso de verificação de assinatura do KMS para validar as assinaturas diretamente no Container Registry.
Limitações
|
Limitação |
Detalhes |
|
Apenas novas imagens |
As regras de assinatura aplicam-se somente a imagens enviadas após a criação da regra. Imagens já presentes no namespace não são assinadas. |
Próximos passos
Usar o recurso de assinatura de contêiner — Configure uma política de verificação de assinatura para impor o uso de imagens assinadas em clusters ACK.
Introdução ao kritis-validation-hook — Implante o kritis-validation-hook para bloquear automaticamente a execução de imagens não assinadas.