Skip to main content
Cada endpoint KMS verifica uma ação do IAM antes de fazer qualquer coisa. Esta é a lista completa — não há outros, e nenhum endpoint ignora a verificação.
A referência da API mostra a ação na própria página de cada ponto de extremidade, para que você não precise voltar aqui para procurar uma. Ambos vêm do mesmo lugar: a chamada de autorização no serviço, lida no momento da compilação.

As ações

Toda operação em uma chave específica é autorizada contra CRN dessa chave, com as tags da chave disponíveis como contexto de condição. Apenas as duas operações de nível de coleção não são.

Selagem e abertura são concessões diferentes

kms:Decrypt e kms:GenerateDataKey são ações separadas de kms:GetKey precisamente para que as operações que retornam material de chave utilizável possam ser concedidas de forma restrita. Um componente que só precisa selar dados deve conter kms:Encrypt e kms:GenerateDataKey e nada mais — ele pode então escrever, e nunca ler de volta. A mesma divisão aparece em certificates, onde certificate:GetCertificateMaterial é separado da leitura de um certificado.
kms:GenerateDataKey retorna a nova chave de dados em texto simples, bem como envolto, porque o chamador tem que usá-lo antes de jogá-lo fora. Trate-o como equivalente a kms:Decrypt no raio de explosão quando você decidir quem o segura, mesmo que os dois guardem direções diferentes.

A listagem não pode ser restringida

kms:ListKeys é autorizado contra a coleção, não contra chaves individuais, então restringi-lo por CRN ou tag não tem efeito. Escopo das operações que usam uma chave; listagem diz a um chamador que uma chave existe e nada mais.

Recursos

As ações KMS são verificadas em relação a uma forma de recurso:
O slot de região é populado, ao contrário do DNS ou dos certificados. Uma chave existe em uma região e só pode ser usada a partir daí, portanto, uma política escrita para uma região não alcança as chaves de outra região, mesmo quando os nomes correspondem.

Condições

Create carrega as tags da solicitação; cada ação com escopo de tecla carrega as tags já na tecla. Assim, uma política pode definir tanto o que um chamador pode rotular uma tecla como, quanto quais teclas existentes ele pode tocar:
  • basalt:RequestTag/<key> — em kms:CreateKey.
  • basalt:ResourceTag/<key> — em cada ação com escopo para um CRN de chave.

Escrever uma política

Um caminho de gravação que pode selar, mas nunca abrir:
Cercar uma frota por rótulo em vez de por nome:
kms:* inclui descriptografia e exclusão. Um curinga concede kms:Decrypt, kms:GenerateDataKey e kms:ScheduleKeyDeletion junto com tudo o mais. Liste as ações quando a credencial pertencer a uma carga de trabalho; um serviço que sela dados não tem motivo para agendar a destruição da chave.
Veja writing policies para o formato completo do documento e cada operador de condição.

Como é uma negação

Uma verificação falhada responde 403:
Ele não diz qual ação estava faltando, deliberadamente — a mensagem é a mesma para cada negação, então não pode ser usada para mapear o que uma credencial pode ou não alcançar. Procure a chamada que você fez na tabela acima, e a ação que ela precisa é a que você adiciona.
Um 404 não é um 403 disfarçado. A propriedade é resolvida antes da autorização: uma chave pertencente a outra conta responde KMS_KEY_NOT_FOUND porque não é sua para ver, e uma que você possui, mas não tem a ação para respostas 403. Se você estiver recebendo 404 em uma chave que você acredita que possui, verifique a região e a conta à qual a credencial pertence antes de verificar a política.