

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Acesso e permissões de chave do KMS
<a name="control-access"></a>

Para usar AWS KMS, você deve ter credenciais que AWS possam ser usadas para autenticar suas solicitações. As credenciais devem incluir permissões para acessar AWS recursos: AWS KMS keys e [aliases](kms-alias.md). Nenhum AWS diretor tem permissões para uma chave KMS, a menos que essa permissão seja fornecida explicitamente e nunca negada. Não há permissão implícita ou automática para usar ou gerenciar uma chave do KMS. 

Para controlar o acesso às suas chaves do KMS, você pode usar os seguintes mecanismos de política.
+ [Política de chaves](key-policies.md): cada chave do KMS tem uma política de chave. Esse é o mecanismo principal para controlar o acesso a uma chave do KMS. Você pode usar apenas a política de chaves para controlar o acesso, ou seja, o escopo completo de acesso à chave do KMS é definido em um único documento (a política de chaves). Para mais informações sobre como usar políticas de chaves, consulte [Políticas de chaves](key-policies.md).
+ [Políticas do IAM](iam-policies.md): você pode usar políticas do IAM combinadas com a política de chaves e concessões para controlar o acesso a uma chave do KMS. Com esse controle de acesso, você pode gerenciar todas as permissões para suas identidades do IAM no IAM. Para usar uma política do IAM para permitir o acesso a uma chave do KMS, a política de chaves deve explicitamente permitir isso. Para mais informações sobre como usar políticas do IAM, consulte [Políticas do IAM](iam-policies.md). 
+ [Concessões](grants.md): você pode usar concessões combinadas com a política de chaves e políticas do IAM para permitir o acesso a uma chave do KMS. Controlar o acesso dessa maneira possibilita permitir o acesso à chave do KMS na política de chaves e permitir que as identidades deleguem o acesso para outras pessoas. Para obter mais informações sobre como usar concessões, consulte [Subsídios em AWS KMS](grants.md).

## Políticas de chave do KMS
<a name="intro-key-policy"></a>

A principal forma de gerenciar o acesso aos seus AWS KMS recursos é com *políticas*. Políticas são documentos que descrevem quais entidades principais podem acessar recursos específicos. As políticas anexadas a uma identidade do IAM são chamadas de *políticas baseadas em identidade (ou políticas* *do IAM*), e as políticas anexadas a outros tipos de recursos são chamadas de políticas de *recursos*. AWS KMS as políticas de recursos para chaves KMS são chamadas de *políticas de chaves*.

Todas as chaves do KMS têm uma política de chaves. Se você não fornecer um, AWS KMS cria um para você. A [política de chaves padrão](key-policy-default.md) AWS KMS usada difere dependendo se você cria a chave no AWS KMS console ou usa a AWS KMS API. Recomendamos que você edite a política de chave padrão para se alinhar aos requisitos de [permissões de privilégios mínimos](least-privilege.md) da sua organização. 

Você pode usar a política de chaves sozinha para controlar o acesso se a chave e o principal do IAM estiverem na mesma AWS conta, o que significa que o escopo completo do acesso à chave KMS é definido em um único documento (a política de chaves). No entanto, quando um chamador em uma conta precisar acessar uma chave em outra conta, você não poderá usar a política de chave sozinha para conceder acesso. No cenário entre contas, uma política do IAM deverá ser anexada ao usuário ou ao perfil do chamador permitindo explicitamente que o chamador faça a chamada de API.

Você também pode usar políticas do IAM juntamente com políticas de chave e concessões para controlar o acesso à uma chave do KMS. Para usar uma política do IAM para controlar o acesso a uma chave do KMS, a política de chave deve conceder permissão para a conta usar políticas do IAM. Você pode especificar uma [declaração de política de chave que habilite as políticas do IAM](key-policy-default.md#key-policy-default-allow-root-enable-iam) ou pode [especificar as entidades principais permitidas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying) explicitamente na política de chave.

Ao escrever políticas, certifique-se de ter controles rígidos que restrinjam quem pode realizar as seguintes ações:
+ Atualizar, criar e excluir políticas de chave do IAM e do KMS
+ Anexar e desanexar políticas do IAM de usuários, perfis e grupos
+ Anexar e desanexar políticas de chaves do KMS de suas chaves do KMS

## Concessões de chave do KMS
<a name="intro-kms-grants"></a>

Além do IAM e das principais políticas, AWS KMS apoia [subsídios](grants.md). As concessões oferecem uma maneira flexível e poderosa de delegar permissões. Você pode usar concessões para emitir acesso por chave KMS com prazo determinado aos diretores do IAM em sua AWS conta ou em outras contas. AWS Recomendamos emitir acesso com limite de tempo se você não souber os nomes das entidades principais no momento em que as políticas foram criadas ou se as entidades principais que precisam acesso mudarem com frequência. A [entidade principal](grants.md#terms-grantee-principal) receptora da concessão pode estar na mesma conta que a chave do KMS ou em outra conta. Se a entidade principal e a chave do KMS estiverem em contas diferentes, você deverá especificar uma política do IAM além da concessão. As concessões exigem gerenciamento adicional porque você precisa chamar uma API para criar a concessão e retirar ou revogar a concessão quando ela não for mais necessária. 

# Políticas-chave em AWS KMS
<a name="key-policies"></a>

Uma política fundamental é uma política de recursos para um AWS KMS key. Políticas de chaves são a principal maneira de controlar o acesso a chaves do KMS. Cada chave do KMS deve ter exatamente uma política de chaves. As instruções na política de chaves determinam quem tem permissão para usar a chave do KMS e como eles podem usá-la. Você também pode usar [políticas do IAM](iam-policies.md) e [concessões](grants.md) para controlar o acesso à chave do KMS, mas cada chave do KMS deve ter uma política de chaves. 

Nenhum AWS diretor, incluindo o usuário raiz da conta ou o criador da chave, tem qualquer permissão para uma chave KMS, a menos que seja explicitamente permitida, e nunca negada, em uma política de chaves, política do IAM ou concessão. 

A menos que a política de chaves permita isto explicitamente, você não pode usar políticas do IAM para *autorizar* o acesso a uma chave do KMS. Sem permissão da política de chaves, as políticas do IAM que autorizam permissões não têm efeito. (Você pode usar uma política do IAM para *negar* uma permissão para uma chave KMS sem permissão de uma política de chaves.) A política de chaves padrão habilita as políticas do IAM. Para habilitar políticas do IAM em sua política de chaves, adicione a declaração de política descrita em [Permite o acesso Conta da AWS e ativa as políticas do IAM](key-policy-default.md#key-policy-default-allow-root-enable-iam).

Ao contrário das políticas do IAM, que são globais, as políticas de chaves são regionais. Uma política de chaves controla o acesso somente a uma chave do KMS na mesma região. Ela não tem efeito sobre as chaves do KMS em outras regiões.

**Topics**
+ [Criação de uma política de chave](key-policy-overview.md)
+ [Política de chaves padrão](key-policy-default.md)
+ [Visualizar uma política de chave](key-policy-viewing.md)
+ [Alterar uma política de chave](key-policy-modifying.md)
+ [Permissões para AWS serviços](key-policy-services.md)

# Criação de uma política de chave
<a name="key-policy-overview"></a>

Você pode criar e gerenciar políticas de chaves no AWS KMS console ou usando operações de AWS KMS API [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html), como [ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html), [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)e. 

Quando você cria uma chave KMS no AWS KMS console, o console orienta você pelas etapas de criação de uma política de chaves com base na [política de chaves padrão do console](key-policy-default.md). Quando você usa o `CreateKey` ou `ReplicateKey` APIs, se você não especificar uma política de chaves, eles APIs aplicam a [política de chaves padrão para chaves criadas programaticamente](key-policy-default.md). Ao usar a API `PutKeyPolicy`, você precisa especificar uma política de chaves.

Cada documento de política pode ter uma ou mais declarações de política. O exemplo a seguir mostra um documento válido de política de chaves com uma instrução de política.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DescribePolicyStatement",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:user/Alice"
      },
      "Action": "kms:DescribeKey",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:KeySpec": "SYMMETRIC_DEFAULT"
        }
      }
    }
  ]
}
```

------

**Topics**
+ [Formato de política de chaves](#key-policy-format)
+ [Elementos em uma política de chaves](#key-policy-elements)
+ [Exemplo de política de chave do](#key-policy-example)

## Formato de política de chaves
<a name="key-policy-format"></a>

Um documento de política de chaves deve estar de acordo com as seguintes regras:
+ Até 32 kilobytes (32.768 bytes)
+ O elemento `Sid` em uma instrução de política de chaves pode incluir espaços. (É proibido usar espaços no elemento `Sid` de um documento de política do IAM.)

Um documento de política de chaves pode incluir apenas os seguintes caracteres:
+ Caracteres ASCII imprimíveis
+ Caracteres imprimíveis no conjunto de caracteres Basic Latin e Latin-1 Supplement
+ Os caracteres especiais de tabulação (`\u0009`), alimentação de linha (`\u000A`) e retorno de carro (`\u000D`)

## Elementos em uma política de chaves
<a name="key-policy-elements"></a>

Um documento de política de chaves deve ter os elementos a seguir:

**Versão**  
Especifica a versão do documento de política de chaves. Define a versão como `2012-10-17` (a versão mais recente).

**Declaração**  
Inclui as instruções da política. Um documento de política de chaves deve ter pelo menos uma instrução.  
Cada instrução de política de chaves pode consistir em até seis elementos. Os elementos `Effect`, `Principal`, `Action` e `Resource` são obrigatórios.    
**Sid **  
(Opcional) O identificador de instrução (`Sid`) é uma string arbitrária que você pode usar para descrever a instrução. O `Sid` em uma política de chaves pode incluir espaços. (Você não pode incluir espaços no elemento `Sid` de uma política do IAM.)  
**Efeito**  
(Obrigatório) Determina se as permissões devem ser permitidas ou negadas na instrução de política. Os valores válidos são `Allow` ou `Deny`. Se você não permitir explicitamente o acesso a uma chave do KMS, esse acesso será implicitamente negado. Também é possível negar explicitamente o acesso a uma chave do KMS. Você poderia fazer isso para garantir que um usuário não possa acessá-la, mesmo quando uma política diferente permite o acesso.  
**Entidade principal**  
(Obrigatório) A [entidade principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying) é a identidade que recebe a especificação de permissões na instrução de política. Você pode especificar usuários do IAM Contas da AWS, funções do IAM e alguns AWS serviços como principais em uma política de chaves. [Grupos de usuários](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) do IAM não são uma entidade principal válida em nenhum tipo de política.  
Um valor de asterisco, como `"AWS": "*"` representa todas as identidades da AWS em todas as contas.  
Não defina a entidade principal como um asterisco (\$1) em qualquer instrução de política de chave que permita permissões, a menos que você utilize [condições](policy-conditions.md) para limitar a política de chave. Um asterisco dá a cada identidade em cada Conta da AWS permissão para usar a chave KMS, a menos que outra declaração de política a negue explicitamente. Usuários de outros usuários Contas da AWS podem usar sua chave KMS sempre que tiverem permissões correspondentes em suas próprias contas.
As práticas recomendadas do IAM não encorajam o uso de usuários do IAM com credenciais de longo prazo. Sempre que possível, use os perfis do IAM, por fornecerem credenciais temporárias. Para obter detalhes, consulte [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) no *Guia do usuário do IAM*.
Quando a entidade em uma declaração de política de chaves é uma [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts) no formato `arn:aws:iam::111122223333:root"`, a declaração da política não dá permissão a nenhuma entidade principal do IAM. Em vez disso, ele dá Conta da AWS permissão para usar políticas do IAM para delegar as permissões especificadas na política de chaves. (Uma entidade principal no formato `arn:aws:iam::111122223333:root"` *não* representa o [usuário raiz de conta da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html), apesar do uso de “root” no identificador da conta. No entanto, a entidade principal da conta representa a conta e seus administradores, incluindo o usuário raiz da conta.)  
Quando o principal é outro Conta da AWS ou seus diretores, as permissões são efetivas somente quando a conta é ativada na região com a chave e a política de chaves do KMS. Para obter informações sobre regiões não habilitadas por padrão (“regiões de adesão”), consulte [Gerenciar Regiões da AWS](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html) em *Referência geral da AWS*.  
Para permitir que outra Conta da AWS pessoa ou seus principais usem uma chave KMS, você deve fornecer permissão em uma política de chaves e em uma política do IAM na outra conta. Para obter detalhes, consulte [Permitir que usuários de outras contas usem uma chave do KMS](key-policy-modifying-external-accounts.md).  
**Ação**  
(Obrigatório) Especifica as operações de API que serão permitidas ou negadas. Por exemplo, a `kms:Encrypt` ação corresponde à operação AWS KMS [Criptografar.](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) Você pode listar mais de uma ação em uma declaração de política. Para obter mais informações, consulte [Referência de permissões](kms-api-permissions-reference.md).  
Se o elemento `Action` necessário estiver ausente de uma declaração de política de chave, a declaração de política não terá efeito. Uma declaração de política de chaves sem um elemento `Action` não é aplicável a nenhuma chave do KMS.   
Quando uma declaração de política chave não tem seu `Action` elemento, o AWS KMS console relata corretamente um erro, mas o [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)e é [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) APIs bem-sucedido, mesmo que a declaração de política seja ineficaz.  
**Recurso**  
(Obrigatório) Em uma política de chaves, o valor do elemento Recurso é `"*"`, o que significa “esta chave do KMS”. O asterisco (`"*"`) identifica a chave do KMS à qual a política de chaves está associada.  
Se o elemento `Resource` necessário estiver ausente de uma declaração de política de chave, a declaração de política não terá efeito. Uma declaração de política de chaves sem um elemento `Resource` não se aplica a nenhuma chave do KMS.   
Quando uma declaração de política chave não tem seu `Resource` elemento, o AWS KMS console relata corretamente um erro, mas o [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)e é [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) APIs bem-sucedido, mesmo que a declaração de política seja ineficaz.  
**Condição**  
(Opcional) As condições especificam os requisitos que devem ser atendidos para que a política de chaves entre em vigor. Com condições, AWS pode avaliar o contexto de uma solicitação de API para determinar se a declaração de política se aplica ou não.   
Para especificar condições, você usa *chaves de condição* predefinidas. AWS KMS suporta chaves de [condição AWS globais e chaves](conditions-aws.md) [de AWS KMS condição](conditions-kms.md). Para oferecer suporte ao controle de acesso baseado em atributos (ABAC), AWS KMS fornece chaves de condição que controlam o acesso a uma chave KMS com base em tags e aliases. Para obter detalhes, consulte [ABAC para AWS KMS](abac.md).  
O formato de uma condição é:  

```
"Condition": {"condition operator": {"condition key": "condition value"}}
```
como:  

```
"Condition": {"StringEquals": {"kms:CallerAccount": "111122223333"}}
```

Para obter mais informações sobre a sintaxe da AWS política, consulte [Referência de política AWS do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) no *Guia do usuário do IAM*.

## Exemplo de política de chave do
<a name="key-policy-example"></a>

O exemplo a seguir mostra uma política de chaves completa para uma chave do KMS de criptografia simétrica. Você pode usá-lo para referência ao ler sobre os principais conceitos de política neste capítulo. Esta política de chaves combina as declarações da política de exemplo da seção anterior de [política de chaves padrão](key-policy-default.md) em uma política de chaves única que faz o seguinte:
+ Permite Conta da AWS, por exemplo, 111122223333, acesso total à chave KMS. Há permissão para que a conta e seus administradores, incluindo o usuário raiz da conta (para emergências), usem políticas do IAM na conta para conceder acesso à chave do KMS.
+ Permite que o perfil do IAM `ExampleAdminRole` administre a chave do KMS.
+ Permite que o perfil do IAM `ExampleUserRole` use a chave do KMS.

------
#### [ JSON ]

****  

```
{
    "Id": "key-consolepolicy",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnableIAMUserPermissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "AllowKeyAdministratorsAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/ExampleAdminRole"
            },
            "Action": [
                "kms:Create*",
                "kms:Describe*",
                "kms:Enable*",
                "kms:List*",
                "kms:Put*",
                "kms:Update*",
                "kms:Revoke*",
                "kms:Disable*",
                "kms:Get*",
                "kms:Delete*",
                "kms:TagResource",
                "kms:UntagResource",
                "kms:ScheduleKeyDeletion",
                "kms:CancelKeyDeletion",
                "kms:RotateKeyOnDemand"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowKeyUse",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/ExampleUserRole"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowAttachmentPersistentResources",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/ExampleUserRole"
            },
            "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                }
            }
        }
    ]
}
```

------

# Política de chaves padrão
<a name="key-policy-default"></a>

Ao criar uma chave do KMS, é possível especificar a política de chaves da nova chave do KMS. Se você não fornecer um, AWS KMS cria um para você. A política de chaves padrão AWS KMS usada difere dependendo se você cria a chave no AWS KMS console ou usa a AWS KMS API.

**Política de chaves padrão ao criar uma chave do KMS de forma programática**  
Quando você cria uma chave KMS programaticamente com a [AWS KMS API](https://docs.aws.amazon.com/kms/latest/APIReference/) (inclusive usando o [AWS SDKs](https://aws.amazon.com/tools/#sdk), [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/)ou [Ferramentas da AWS para PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/)) e não especifica uma política de chaves, AWS KMS aplica uma política de chaves padrão muito simples. Essa política de chaves padrão tem uma declaração de política que dá ao Conta da AWS proprietário da chave KMS permissão para usar políticas do IAM para permitir acesso a todas as AWS KMS operações na chave KMS. Para obter mais informações sobre essa declaração de política, consulte [Permite o acesso Conta da AWS e ativa as políticas do IAM](#key-policy-default-allow-root-enable-iam).

**Política de chaves padrão quando você cria uma chave KMS com o Console de gerenciamento da AWS**  
Quando você [cria uma chave KMS com o Console de gerenciamento da AWS, a](create-keys.md) política de chaves começa com a declaração de política que [permite o acesso Conta da AWS e ativa as políticas do IAM](#key-policy-default-allow-root-enable-iam). [Em seguida, o console adiciona uma declaração de [administradores de chaves, uma declaração](#key-policy-default-allow-administrators) de [usuários-chave](#key-policy-default-allow-users) e (para a maioria dos tipos de chaves) uma declaração que permite que os diretores usem a chave KMS com outros serviços. AWS](#key-policy-service-integration) Você pode usar os recursos do AWS KMS console para especificar os usuários do IAM, as funções do IAM e Contas da AWS quem são os principais administradores e aqueles que são os principais usuários (ou ambos).

**Permissões**
+ [Permite o acesso Conta da AWS e ativa as políticas do IAM](#key-policy-default-allow-root-enable-iam)
+ [Permite que administradores de chaves administrem a chave do KMS](#key-policy-default-allow-administrators)
+ [Permite que os usuários de chaves usem a chave do KMS](#key-policy-default-allow-users)
  + [Permite que usuários de chaves usem uma chave do KMS para operações de criptografia](#key-policy-users-crypto)
  + [Permite que os principais usuários usem a chave KMS com serviços AWS](#key-policy-service-integration)

## Permite o acesso Conta da AWS e ativa as políticas do IAM
<a name="key-policy-default-allow-root-enable-iam"></a>

A declaração de política de chave padrão a seguir é fundamental. 
+ Ele dá ao Conta da AWS proprietário da chave KMS acesso total à chave KMS. 

  Diferentemente AWS de outras políticas de recursos, uma política de AWS KMS chaves não dá permissão automática à conta ou a nenhuma de suas identidades. Para dar permissão aos administradores de conta, a política de chaves deve incluir uma declaração explícita que forneça essa permissão, como esta.
+ Ele permite que a conta use políticas do IAM para permitir acesso à chave do KMS, além da política de chaves.

  Sem essa permissão, as políticas do IAM que permitem o acesso à chave são ineficazes, embora as políticas do IAM que negam acesso à chave ainda sejam efetivas. 
+ Ela reduz o risco de a chave se tornar não gerenciável, dando permissão de controle de acesso aos administradores da conta, incluindo o usuário raiz da conta, que não pode ser excluído. 

A declaração de política de chaves a seguir é toda a política de chaves padrão para chaves do KMS criadas programaticamente. É a primeira declaração de política na política de chaves padrão para chaves KMS criadas no AWS KMS console.

```
{
  "Sid": "Enable IAM User Permissions",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:root"
   },
  "Action": "kms:*",
  "Resource": "*"
}
```

**Permite que políticas do IAM permitam o acesso à chave do KMS.**  <a name="allow-iam-policies"></a>
A declaração de política de chaves mostrada acima dá ao Conta da AWS proprietário da chave permissão para usar políticas do IAM, bem como políticas de chave, para permitir todas as ações (`kms:*`) na chave KMS.   
A entidade principal nesta declaração de política de chave é a [entidade principal da conta](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts), que é representada por um ARN neste formato: `arn:aws:iam::account-id:root`. O principal da conta representa a AWS conta e seus administradores.   
Quando a entidade principal em uma instrução de política de chave é a entidade principal da conta, a instrução de política não concede permissões para o uso da chave do KMS a nenhuma entidade principal do IAM. Em vez disso, ela permite que a conta use políticas do IAM para *delegar* as permissões especificadas na política de chaves. Essa declaração de política de chaves padrão permite que a conta use políticas do IAM para delegar permissão para todas as ações (`kms:*`) na chave do KMS.

** reduz o risco de a chave do KMS perder a capacidade de gerenciamento.**  
Ao contrário AWS de outras políticas de recursos, uma política de AWS KMS chaves não dá permissão automática à conta ou a qualquer um de seus diretores. Para dar permissão a qualquer entidade principal, incluindo a [entidade principal da conta](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts), você deve usar uma declaração de política chave que forneça a permissão explicitamente. Você não precisa dar à entidade principal da conta, ou a qualquer entidade principal, acesso à chave do KMS. No entanto, dar acesso à entidade principal da conta ajuda você a evitar que a chave se torne não gerenciável.  
Por exemplo, suponha que você crie uma política de chaves que dê acesso a apenas um usuário à chave do KMS. Se você excluir esse usuário, a chave se tornará não gerenciável e você deverá [contatar o suporte da AWS](https://console.aws.amazon.com/support/home#/case/create) para recuperar o acesso à chave do KMS.   
A instrução da política de chave mostrada acima concede permissão à [entidade principal da conta](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts) para controlar a chave. O principal da conta representa o Conta da AWS e seus administradores, incluindo o [usuário raiz da conta](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html). O usuário raiz da conta é a única entidade principal que não pode ser excluída, a menos que você exclua a Conta da AWS. As práticas recomendadas do IAM desencorajam agir em nome do usuário raiz da conta, exceto em caso de emergência. No entanto, talvez seja necessário atuar como usuário raiz da conta se você excluir todos os outros usuários e funções com acesso à chave do KMS. 

## Permite que administradores de chaves administrem a chave do KMS
<a name="key-policy-default-allow-administrators"></a>

A política de chaves padrão criada pelo console permite que você escolha usuários e funções do IAM na conta e os torne *administradores de chaves*. Essa declaração é chamada de *declaração de administradores de chaves*. Os administradores de chaves têm permissões para gerenciar a chave do KMS, mas não têm permissões para usar essa chave em [operações de criptografia](kms-cryptography.md#cryptographic-operations). Você pode adicionar usuários e funções do IAM à lista de administradores de chaves ao criar a chave do KMS na visualização padrão ou na visualização de políticas. 

**Atenção**  
Como os administradores de chaves têm permissão para alterar a política de chaves e criar concessões, eles podem conceder a si mesmos e a outras pessoas AWS KMS permissões não especificadas nessa política.  
As entidades principais que têm permissão para gerenciar etiquetas e aliases também podem controlar o acesso a uma chave do KMS. Para obter detalhes, consulte [ABAC para AWS KMS](abac.md).

**nota**  
As práticas recomendadas do IAM não encorajam o uso de usuários do IAM com credenciais de longo prazo. Sempre que possível, use os perfis do IAM, por fornecerem credenciais temporárias. Para obter detalhes, consulte [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) no *Guia do usuário do IAM*.

O exemplo a seguir mostra a declaração de administradores de chaves na visualização padrão do console do AWS KMS .

![\[Administradores de chaves na política de chaves padrão do console, visualização padrão\]](http://docs.aws.amazon.com/pt_br/kms/latest/developerguide/images/console-key-policy-administrators-60.png)


A seguir é apresentado um exemplo que mostra a declaração de administradores de chaves na visualização padrão do console do AWS KMS . Essa instrução de administrador de chave destina-se a uma chave do KMS de criptografia simétrica de região única.

**nota**  
O AWS KMS console adiciona administradores de chaves à política de chaves sob o identificador `"Allow access for Key Administrators"` de instrução. A modificação desse identificador de instrução pode afetar a forma como o console exibe as atualizações feitas na instrução.

```
{
  "Sid": "Allow access for Key Administrators",
  "Effect": "Allow",
  "Principal": {"AWS":"arn:aws:iam::111122223333:role/ExampleAdminRole"},
  "Action": [
    "kms:Create*",
    "kms:Describe*",
    "kms:Enable*",
    "kms:List*",
    "kms:Put*",
    "kms:Update*",
    "kms:Revoke*",
    "kms:Disable*",
    "kms:Get*",
    "kms:Delete*",
    "kms:TagResource",
    "kms:UntagResource",
    "kms:ScheduleKeyDeletion",
    "kms:CancelKeyDeletion",
    "kms:RotateKeyOnDemand"
  ],
  "Resource": "*"
}
```

A instrução padrão de administradores de chaves para a chave mais comum do KMS, uma chave do KMS de criptografia simétrica de região única, possibilita as permissões a seguir. Para obter informações detalhadas sobre cada permissão, consulte a [AWS KMS permissões](kms-api-permissions-reference.md).

Quando você usa o AWS KMS console para criar uma chave KMS, o console adiciona os usuários e as funções que você especifica ao `Principal` elemento na instrução dos administradores de chaves.

Muitas dessas permissões contêm o caractere curinga (`*`), que permite todas as permissões que começam com o verbo especificado. Como resultado, ao AWS KMS adicionar novas operações de API, os administradores de chaves podem usá-las automaticamente. Não é necessário atualizar suas políticas de chaves para incluir as novas operações. Se você preferir limitar seus administradores de chaves a um conjunto fixo de operações de API, poderá [alterar sua política de chaves](key-policy-modifying.md).

**`kms:Create*`**  
Permite [`kms:CreateAlias`](kms-alias.md) e [`kms:CreateGrant`](grants.md). (A permissão `kms:CreateKey` é válida somente em uma política do IAM.)

**`kms:Describe*`**  
Permite [`kms:DescribeKey`](viewing-keys.md). A permissão `kms:DescribeKey` é necessária para visualizar a página de detalhes de chaves de uma chave do KMS no Console de gerenciamento da AWS.

**`kms:Enable*`**  
Permite [`kms:EnableKey`](enabling-keys.md). Para chaves do KMS de criptografia simétrica, ela também permite [`kms:EnableKeyRotation`](rotate-keys.md).

**`kms:List*`**  
Permite [`kms:ListGrants`](grants.md), [https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeyPolicies.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeyPolicies.html) e [`kms:ListResourceTags`](tagging-keys.md). (As permissões `kms:ListAliases` e `kms:ListKeys`, que são necessárias para exibir chaves do KMS no Console de gerenciamento da AWS, são válidas somente em políticas do IAM.)

**`kms:Put*`**  
Permite [https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html). Essa permissão permite que os administradores de chaves alterem a política de chaves dessa chave do KMS.

**`kms:Update*`**  
Permite [`kms:UpdateAlias`](alias-update.md) e [https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateKeyDescription.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateKeyDescription.html). Para chaves de várias regiões, ele permite [`kms:UpdatePrimaryRegion`](multi-region-update.md#update-primary-console) nesta chave do KMS.

**`kms:Revoke*`**  
Permite que o [`kms:RevokeGrant`](grant-delete.md), que permite que os administradores de chave [excluam uma concessão](grant-delete.md) mesmo que eles não sejam uma [entidade principal de retirada](grants.md#terms-retiring-principal) na concessão. 

**`kms:Disable*`**  
Permite [`kms:DisableKey`](enabling-keys.md). Para chaves do KMS de criptografia simétrica, ela também permite [`kms:DisableKeyRotation`](rotate-keys.md).

**`kms:Get*`**  
Permite [`kms:GetKeyPolicy`](key-policy-viewing.md) e [`kms:GetKeyRotationStatus`](rotate-keys.md). Para chaves do KMS com material de chave importado, ela permite [https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html). Para chaves do KMS assimétricas, ela permite [https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html). A permissão `kms:GetKeyPolicy` é necessária para visualizar a política da chave de uma chave do KMS no Console de gerenciamento da AWS.

**`kms:Delete*`**  
Permite [`kms:DeleteAlias`](kms-alias.md). Para chaves com material de chave importado, ela permite [`kms:DeleteImportedKeyMaterial`](importing-keys.md). A permissão `kms:Delete*` não permite que os administradores de chaves excluam a chave do KMS (`ScheduleKeyDeletion`).

**`kms:TagResource`**  
Permite [`kms:TagResource`](tagging-keys.md), que, por sua vez, permite que os administradores de chaves adicionem tags à chave do KMS. Como as tags também podem ser usadas para controlar o acesso à chave do KMS, essa permissão pode permitir que os administradores concedam ou neguem acesso à chave do KMS. Para obter detalhes, consulte [ABAC para AWS KMS](abac.md).

**`kms:UntagResource`**  
Permite [`kms:UntagResource`](tagging-keys.md), que, por sua vez, permite que os administradores de chaves excluam tags da chave do KMS. Como as tags podem ser usadas para controlar o acesso à chave, essa permissão pode permitir que os administradores concedam ou neguem acesso à chave do KMS. Para obter detalhes, consulte [ABAC para AWS KMS](abac.md).

**`kms:ScheduleKeyDeletion`**  
Permite [https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html), que, por sua vez, permite que os administradores de chaves excluam [esta chave do KMS](deleting-keys.md). Para excluir essa permissão, desmarque a opção **Allow key administrators to delete this key**(Permitir que os administradores de chaves excluam essa chave).

**`kms:CancelKeyDeletion`**  
Permite [https://docs.aws.amazon.com/kms/latest/APIReference/API_CancelKeyDeletion.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_CancelKeyDeletion.html), que, por sua vez, permite que os administradores de chaves [cancelem a exclusão desta chave do KMS](deleting-keys.md). Para excluir essa permissão, desmarque a opção **Allow key administrators to delete this key**(Permitir que os administradores de chaves excluam essa chave).

**`kms:RotateKeyOnDemand`**  
Permite [https://docs.aws.amazon.com/kms/latest/APIReference/API_RotateKeyOnDemand.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_RotateKeyOnDemand.html), que permite que os administradores de chaves [realizem a alternância sob demanda do material de chave nessa chave do KMS](rotating-keys-on-demand.md).

 

AWS KMS adiciona as seguintes permissões à declaração padrão dos administradores de chaves quando você cria chaves para fins especiais.

**`kms:ImportKeyMaterial`**  
A permissão [https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html) permite que os administradores de chaves importem material de chave para a chave do KMS. Essa permissão está incluída na política de chaves somente quando você [cria uma chave do KMS sem material de chave](importing-keys-create-cmk.md).

**`kms:ReplicateKey`**  
A [https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html)permissão permite que os administradores de chaves [criem uma réplica de uma chave primária multirregional em uma região](multi-region-keys-replicate.md) diferente. AWS Essa permissão é incluída na política de chaves somente quando você cria uma chave primária ou de réplica de várias regiões.

**`kms:UpdatePrimaryRegion`**  
A permissão [https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html) permite que os administradores de chaves [alterem uma chave de réplica de várias regiões para uma chave primária de várias regiões](multi-region-update.md). Essa permissão é incluída na política de chaves somente quando você cria uma chave primária ou de réplica de várias regiões.

## Permite que os usuários de chaves usem a chave do KMS
<a name="key-policy-default-allow-users"></a>

A política de chaves padrão que o console cria para chaves KMS permite que você escolha usuários do IAM e funções do IAM na conta, e externas Contas da AWS, e os torne *usuários-chave*. 

O console adiciona duas instruções de política à política de chaves para usuários de chaves.
+ [Use a chave do KMS diretamente](#key-policy-users-crypto) – A primeira instrução de política de chaves dá aos usuários de chave permissão para usar a chave do KMS diretamente para todas as [operações de criptografia](kms-cryptography.md#cryptographic-operations) com suporte para esse tipo de chave do KMS.
+ [Use a chave KMS com AWS serviços](#key-policy-service-integration) — A segunda declaração de política dá permissão aos principais usuários para permitir que os AWS serviços integrados usem a chave KMS em seu nome AWS KMS para proteger recursos, como buckets do Amazon S3 e tabelas do Amazon DynamoDB.

Você pode adicionar usuários do IAM, funções do IAM e outros Contas da AWS à lista de usuários principais ao criar a chave do KMS. Você também pode editar a lista com a visualização padrão do console para políticas de chaves, conforme mostrado na imagem a seguir. A visualização padrão para políticas de chaves está na página de detalhes de chaves. Para obter mais informações sobre como permitir que usuários de outras Contas da AWS pessoas usem a chave KMS, consulte[Permitir que usuários de outras contas usem uma chave do KMS](key-policy-modifying-external-accounts.md).

**nota**  
As práticas recomendadas do IAM não encorajam o uso de usuários do IAM com credenciais de longo prazo. Sempre que possível, use os perfis do IAM, por fornecerem credenciais temporárias. Para obter detalhes, consulte [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) no *Guia do usuário do IAM*.

![\[Usuários de chaves na política de chaves padrão do console, visualização padrão\]](http://docs.aws.amazon.com/pt_br/kms/latest/developerguide/images/console-key-policy-users-sm.png)


As *declarações de usuários de chaves* padrão para uma chave simétrica de região única possibilita as permissões a seguir. Para obter informações detalhadas sobre cada permissão, consulte a [AWS KMS permissões](kms-api-permissions-reference.md).

Quando você usa o AWS KMS console para criar uma chave KMS, o console adiciona os usuários e as funções que você especifica ao `Principal` elemento em cada declaração de usuários da chave.

**nota**  
O AWS KMS console adiciona os principais usuários à política de chaves sob os identificadores de declaração `"Allow use of the key"` e. `"Allow attachment of persistent resources"` A modificação desses identificadores de instrução pode afetar a forma como o console exibe as atualizações feitas na instrução.

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": [
    "arn:aws:iam::111122223333:role/ExampleRole",
    "arn:aws:iam::444455556666:root"
  ]},
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:DescribeKey"
  ],
  "Resource": "*"
},
{
  "Sid": "Allow attachment of persistent resources",
  "Effect": "Allow",
  "Principal": {"AWS": [
    "arn:aws:iam::111122223333:role/ExampleRole",
    "arn:aws:iam::444455556666:root"
  ]},
  "Action": [
    "kms:CreateGrant",
    "kms:ListGrants",
    "kms:RevokeGrant"
  ],
  "Resource": "*",
  "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}
}
```

## Permite que usuários de chaves usem uma chave do KMS para operações de criptografia
<a name="key-policy-users-crypto"></a>

Os usuários de chaves têm permissão para usar a chave do KMS diretamente em todas as [operações de criptografia](kms-cryptography.md#cryptographic-operations) com suporte na chave do KMS. Eles também podem usar a [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)operação para obter informações detalhadas sobre a chave KMS no AWS KMS console ou usando as operações da AWS KMS API.

Por padrão, o AWS KMS console adiciona declarações de usuários-chave, como as dos exemplos a seguir, à política de chaves padrão. Como elas são compatíveis com diferentes operações de API, as ações nas instruções de política para chaves do KMS de criptografia simétrica, chaves do KMS de Hash-based message authentication code (HMAC – Código de autenticação de mensagem por hash), chaves do KMS assimétricas para criptografia de chave pública e chaves do KMS assimétricas para assinatura e verificação são ligeiramente diferentes.

**Chaves do KMS de criptografia simétrica**  
O console adiciona a seguinte instrução à política de chaves para chaves do KMS de criptografia simétrica.  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",  
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"},
  "Action": [
    "kms:Decrypt",
    "kms:DescribeKey",
    "kms:Encrypt",
    "kms:GenerateDataKey*",
    "kms:ReEncrypt*"
  ],
  "Resource": "*"
}
```

**Chaves do KMS de HMAC**  
O console adiciona a seguinte instrução à política de chaves para chaves do KMS de HMAC.  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",  
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"},
  "Action": [
    "kms:DescribeKey",
    "kms:GenerateMac",
    "kms:VerifyMac"
  ],
  "Resource": "*"
}
```

**Chaves do KMS assimétricas para criptografia de chave pública**  
O console adiciona a seguinte instrução à política de chaves para chaves do KMS assimétricas com um uso de chave de **Encrypt and decrypt** (Criptografar e descriptografar).  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:DescribeKey",
    "kms:GetPublicKey"
  ],
  "Resource": "*"
}
```

**Chaves do KMS assimétricas para assinatura e verificação**  
O console adiciona a seguinte instrução à política de chaves para chaves do KMS assimétricas com um uso de chave de **Sign and verify** (Assinar e verificar).  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"},
  "Action": [
    "kms:DescribeKey",
    "kms:GetPublicKey",
    "kms:Sign",
    "kms:Verify"
  ],
  "Resource": "*"
}
```

**Chaves assimétricas do KMS para derivar segredos compartilhados**  
O console adiciona a seguinte instrução à política de chave para chaves assimétricas do KMS com um uso de chave de **Acordo de chave**.  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"},
  "Action": [
    "kms:DescribeKey",
    "kms:GetPublicKey",
    "kms:DeriveSharedSecret"
  ],
  "Resource": "*"
}
```

As ações nessas declarações concedem aos usuários de chaves as permissões a seguir.

[https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)  
Permite que os usuários de chaves criptografem dados com essa chave do KMS.

[https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)  
Permite que os usuários de chaves descriptografem dados com essa chave do KMS.

[https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html)  
Permite que os usuários de chaves derivem segredos compartilhados com essa chave do KMS.

[https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)  
Permite que os usuários de chaves obtenham informações detalhadas sobre essa chave do KMS, incluindo seus identificadores, data de criação e estado de chave. Também permite que os principais usuários exibam detalhes sobre a chave KMS no AWS KMS console.

`kms:GenerateDataKey*`  
Permite que os usuários de chaves solicitem uma chave de dados simétrica ou um par de chaves de dados assimétricas para operações criptográficas no lado do cliente. O console usa o caractere curinga \$1 para representar a permissão para as seguintes operações de API: [GenerateDataKey[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html), e. [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html) Essas permissões são válidas somente nas chaves do KMS simétricas que criptografam as chaves de dados.

[kms: GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html)  
Permite que os usuários de chaves usem uma chave do KMS de HMAC para gerar uma etiqueta de HMAC.

[kms: GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)  
Permite que os usuários de chaves baixem a chave pública da chave do KMS assimétrica. As partes com quem você compartilha essa chave pública podem criptografar dados fora do AWS KMS. No entanto, esses textos cifrados só podem ser descriptografados chamando a operação [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) no AWS KMS.

[km: \$1 ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)   
Permite que os usuários de chaves criptografem novamente os dados que foram originalmente criptografados com essa chave do KMS ou permite que eles usem essa chave do KMS para criptografar novamente dados já criptografados. A [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)operação requer acesso às chaves KMS de origem e destino. Para fazer isso, é possível conceder a permissão `kms:ReEncryptFrom` na chave do KMS de origem e a permissão `kms:ReEncryptTo` na chave do KMS de destino. No entanto, para simplificar, o console permite `kms:ReEncrypt*` (com o caractere curinga `*`) nas duas chaves do KMS.

[kms:Sign](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html)  
Permite que os usuários de chaves assinem mensagens com essa chave do KMS.

[kms:Verify](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html)  
Permite que os usuários de chaves verifiquem assinaturas com essa chave do KMS.

[kms: VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html)  
Permite que os usuários de chaves usem uma chave do KMS de HMAC para verificar uma etiqueta de HMAC.

## Permite que os principais usuários usem a chave KMS com serviços AWS
<a name="key-policy-service-integration"></a>

A política de chaves padrão no console também dá aos principais usuários as permissões de que precisam para proteger seus dados em AWS serviços que usam concessões. AWS os serviços geralmente usam concessões para obter permissão específica e limitada para usar uma chave KMS.

Essa declaração de política de chaves permite que o usuário da chave crie, visualize e revogue concessões na chave KMS, mas somente quando a solicitação de operação de concessão vem de um [AWS serviço integrado](https://aws.amazon.com/kms/features/#AWS_Service_Integration) com o. AWS KMS A condição [kms: GrantIsFor AWSResource](conditions-kms.md#conditions-kms-grant-is-for-aws-resource) policy não permite que o usuário chame essas operações de concessão diretamente. Quando o usuário da chave permite, um AWS serviço pode criar uma concessão em nome do usuário que permite que o serviço use a chave KMS para proteger os dados do usuário. 

Os usuários de chaves precisam dessas permissões de concessão para usar a chave do KMS com os serviços integrados, mas essas permissões não são suficientes. Os usuários de chaves também precisam de permissão para usar os serviços integrados. Para obter detalhes sobre como dar aos usuários acesso a um AWS serviço que se integra ao AWS KMS, consulte a documentação do serviço integrado.

```
{
  "Sid": "Allow attachment of persistent resources",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"},
  "Action": [
    "kms:CreateGrant",
    "kms:ListGrants",
    "kms:RevokeGrant"
  ],
  "Resource": "*",
  "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}
}
```

Por exemplo, os usuários de chaves podem usar essas permissões na chave do KMS das maneiras indicadas a seguir.
+ Use essa chave do KMS com o Amazon Elastic Block Store (Amazon EBS) e com o Amazon Elastic Compute Cloud (Amazon EC2) para anexar um volume do EBS criptografado a uma instância do EC2. O usuário de chaves concede implicitamente permissão ao Amazon EC2 para usar a chave do KMS com o objetivo de associar o volume criptografado à instância. Para obter mais informações, consulte [Como o Amazon Elastic Block Store (Amazon EBS) usa AWS KMS](services-ebs.md).
+ Use essa chave do KMS com o Amazon Redshift para executar um cluster criptografado. O usuário de chaves concede implicitamente permissão ao Amazon Redshift para usar a chave do KMS para executar o cluster criptografado e criar snapshots criptografados. Para obter mais informações, consulte [Como o Amazon Redshift usa AWS KMS](services-redshift.md).
+ Use essa chave do KMS com outros [serviços da AWS integrados ao AWS KMS](service-integration.md) que usem concessões para criar, gerenciar ou usar recursos criptografados com esses serviços.

Apolítica de chaves padrão permite que os usuários de chaves deleguem suas permissões de concessão para *todos* os serviços integrados que usam concessões. No entanto, você pode criar uma política de chaves personalizada que restrinja a permissão a AWS serviços específicos. Para obter mais informações, consulte a [kms:ViaService](conditions-kms.md#conditions-kms-via-service) chave de condição.

# Visualizar uma política de chave
<a name="key-policy-viewing"></a>

Você pode ver a política de chaves de uma [chave gerenciada pelo AWS KMS cliente](concepts.md#customer-mgn-key) ou [Chave gerenciada pela AWS](concepts.md#aws-managed-key)em sua conta usando o AWS KMS console ou a [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html)operação na AWS KMS API. Não é possível usar essas técnicas para visualizar a política de chaves de uma chave do KMS em outra Conta da AWS. 

Para saber mais sobre as AWS KMS principais políticas, consulte[Políticas-chave em AWS KMS](key-policies.md). Para saber como determinar quais usuários e funções têm acesso a uma chave do KMS, consulte [Determinando o acesso ao AWS KMS keys](determining-access.md).

## Usando o AWS KMS console
<a name="key-policy-viewing-console"></a>

Os usuários autorizados podem visualizar a política de chaves de uma [Chave gerenciada pela AWS](concepts.md#aws-managed-key) ou de uma [chave gerenciada pelo cliente](concepts.md#customer-mgn-key) na guia **Key policy** (Política de chaves) do Console de gerenciamento da AWS. 

Para visualizar a política de chaves de uma chave KMS no Console de gerenciamento da AWS, você deve ter as permissões [kms: ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html), [kms: DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) e [kms](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html):. GetKeyPolicy

1. Faça login no console Console de gerenciamento da AWS e abra o AWS Key Management Service (AWS KMS) em [https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms).

1. Para alterar o Região da AWS, use o seletor de região no canto superior direito da página.

1. 

   Para ver as chaves em sua conta que AWS cria e gerencia para você, no painel de navegação, escolha **chaves AWS gerenciadas**. Para exibir as chaves em sua conta que você cria e gerencia, no painel de navegação, escolha **Customer managed keys (Chaves gerenciadas de cliente)**.

1. Na lista de chaves do KMS, escolha o alias ou o ID de chave da chaves do KMS que você deseja examinar.

1. Selecione a guia **Key policy (Política de chaves)**.

   Na seção **Key policy** (Política de chaves), você pode ver o documento da política de chaves. Essa é a *visualização da política*. Nas instruções da política de chaves, é possível ver as entidades principais que receberam acesso à chave do KMS pela política de chaves e ver as ações que elas podem executar.

   O exemplo a seguir mostra a visualização da [política de chaves padrão](key-policy-default.md).   
![\[Visualização da política de chaves padrão na exibição de políticas no AWS KMS console\]](http://docs.aws.amazon.com/pt_br/kms/latest/developerguide/images/console-key-policy-view.png)

   **Ou, se você criou a chave KMS no Console de gerenciamento da AWS, você verá a *visualização padrão* com seções para **administradores de chaves**, **exclusão de chaves** e usuários de chaves.** Para ver o documento da política de chaves, selecione **Switch to policy view (Alternar para a visualização da políticas)**.

   O exemplo a seguir mostra a visualização padrão da [política de chaves padrão](key-policy-default.md).   
![\[Visualização da política de chaves padrão na visualização padrão no AWS KMS console\]](http://docs.aws.amazon.com/pt_br/kms/latest/developerguide/images/console-key-policy-full-vsm.png)

## Usando a AWS KMS API
<a name="key-policy-viewing-api"></a>

Para obter a política de chaves de uma chave KMS em sua Conta da AWS, use a [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html)operação na AWS KMS API. Não é possível usar essa operação para visualizar uma política de chaves em uma conta diferente.

O exemplo a seguir usa o [get-key-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html)comando no AWS Command Line Interface (AWS CLI), mas você pode usar qualquer AWS SDK para fazer essa solicitação. 

Observe que o parâmetro `PolicyName` será exigido mesmo se `default` for seu único valor válido. Além disso, esse comando solicita a saída em texto, em vez de em JSON, para facilitar a visualização.

Antes de executar esse comando, substitua o ID de chave de exemplo por um válido da sua conta.

```
$ aws kms get-key-policy --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --policy-name default --output text
```

A resposta deve ser semelhante à seguinte, que retorna a [política de chaves padrão](key-policy-default.md).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id" : "key-consolepolicy-3",
  "Statement" : [ {
  "Sid" : "EnableIAMUserPermissions",
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "arn:aws:iam::111122223333:root"
    },
    "Action" : "kms:*",
    "Resource" : "*"
  } ]
}
```

------

# Alterar uma política de chave
<a name="key-policy-modifying"></a>

Você pode alterar a política de chaves de uma chave KMS na sua Conta da AWS usando a Console de gerenciamento da AWS ou a [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)operação. Não é possível usar essas técnicas para alterar a política de chaves de uma chave do KMS em outra Conta da AWS.

Ao alterar a política de chaves, lembre-se das seguintes regras:
+ É possível visualizar a política de chaves de uma [Chave gerenciada pela AWS](concepts.md#aws-managed-key) ou de uma [chave gerenciada pelo cliente](concepts.md#customer-mgn-key), mas só é possível alterar a política de chaves de uma chave gerenciada pelo cliente. As políticas de Chaves gerenciadas pela AWS são criadas e gerenciadas pelo AWS serviço que criou a chave KMS em sua conta. Não é possível visualizar ou alterar a política de chaves para uma [Chave pertencente à AWS](concepts.md#aws-owned-key).
+ Você pode adicionar ou remover usuários do IAM, funções do IAM e Contas da AWS na política de chaves e alterar as ações que são permitidas ou negadas para esses diretores. Para mais informações sobre as maneiras de especificar principais e permissões em uma política de chaves, consulte [Políticas de chaves](key-policies.md).
+ Não é possível adicionar grupos do IAM a uma política de chaves, mas é possível adicionar diversos usuários do IAM e perfis do IAM. Para obter mais informações, consulte [Permitir que diversas entidades principais do IAM acessem uma chave do KMS](iam-policies.md#key-policy-modifying-multiple-iam-users).
+ Se você adicionar externo Contas da AWS a uma política de chaves, também deverá usar políticas do IAM nas contas externas para dar permissões aos usuários, grupos ou funções do IAM nessas contas. Para obter mais informações, consulte [Permitir que usuários de outras contas usem uma chave do KMS](key-policy-modifying-external-accounts.md).
+ O documento de política de chaves resultante não pode exceder 32 KB (32.768 bytes).

## Como alterar uma política de chaves
<a name="key-policy-modifying-how-to"></a>

Você pode alterar uma política de chaves de três maneiras diferentes, conforme explicado nas seções a seguir.

**Topics**
+ [Usando a visualização Console de gerenciamento da AWS padrão](#key-policy-modifying-how-to-console-default-view)
+ [Usando a visualização Console de gerenciamento da AWS da política](#key-policy-modifying-how-to-console-policy-view)
+ [Usando a AWS KMS API](#key-policy-modifying-how-to-api)

### Usando a visualização Console de gerenciamento da AWS padrão
<a name="key-policy-modifying-how-to-console-default-view"></a>

Você pode usar o console para alterar uma política de chaves com uma interface gráfica chamada *visualização padrão*.

Se as seguintes etapas não correspondem à visualização no console, isso significa que essa política de chaves não foi criada pelo console. Ou significa que a política de chaves foi modificada e é incompatível com a visualização padrão do console. Nesse caso, siga as etapas em [Usando a visualização Console de gerenciamento da AWS da política](#key-policy-modifying-how-to-console-policy-view) ou [Usando a AWS KMS API](#key-policy-modifying-how-to-api).

1. Visualize a política de chaves de uma chave gerenciada pelo cliente conforme descrito em [Usando o AWS KMS console](key-policy-viewing.md#key-policy-viewing-console). (Você não pode alterar as principais políticas do Chaves gerenciadas pela AWS.)

1. Defina o que alterar.
   + Para adicionar ou remover [administradores de chaves](key-policy-default.md#key-policy-default-allow-administrators) e permitir ou impedir que eles [excluam a chave do KMS](deleting-keys.md), use os controles na seção **Key administrators** (Administradores de chaves) da página. Os administradores de chaves gerenciam a chave do KMS, incluindo sua habilitação e desabilitação, a configuração da política de chaves e a [habilitação da alternância de chaves](rotate-keys.md).
   + Para adicionar ou remover [usuários principais](key-policy-default.md#key-policy-default-allow-users) e permitir ou Contas da AWS proibir o uso externo da chave KMS, use os controles na seção **Usuários principais** da página. Usuários de chaves podem usar a chave do KMS em [operações de criptografia](kms-cryptography.md#cryptographic-operations), como criptografar, descriptografar, recriptografar e gerar chaves de dados.

### Usando a visualização Console de gerenciamento da AWS da política
<a name="key-policy-modifying-how-to-console-policy-view"></a>

Você pode usar o console para alterar um documento de política de chaves com a *visualização de política* do console.

1. Visualize a política de chaves de uma chave gerenciada pelo cliente conforme descrito em [Usando o AWS KMS console](key-policy-viewing.md#key-policy-viewing-console). (Você não pode alterar as principais políticas do Chaves gerenciadas pela AWS.)

1. Na seção **Política de chave**, selecione **Alternar para visualização de política**.

1. Escolha **Editar**.

1. Defina o que alterar.
   + Para adicionar uma nova instrução, escolha **Adicionar nova instrução**. Então, você pode selecionar as ações, as entidades principais e as condições para a nova instrução de política de chave entre as opções listadas no painel do construtor de instruções ou inserir manualmente os elementos de instrução da política.
   + Para remover uma instrução da política de chave, selecione a instrução e escolha **Remover**. Leia a instrução de política selecionada e confirme se deseja removê-la. Se você decidir que não deseja continuar com a remoção da instrução, escolha **Cancelar**.
   + Para editar uma instrução de política de chave existente, selecione a instrução. Em seguida, use o painel do construtor de instruções para escolher os elementos específicos que deseja modificar, ou edite manualmente a instrução.

1. Escolha **Salvar alterações**.

### Usando a AWS KMS API
<a name="key-policy-modifying-how-to-api"></a>

Você pode usar a [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)operação para alterar a política de chaves de uma chave KMS no seu Conta da AWS. Não é possível usar essa API em uma chave do KMS em outra Conta da AWS.

1. Use a [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html)operação para obter o documento de política de chaves existente e, em seguida, salve o documento de política de chaves em um arquivo. Para obter o código de exemplo em várias linguagens de programação, consulte [Use `GetKeyPolicy` com um AWS SDK ou CLI](example_kms_GetKeyPolicy_section.md).

1. Abra o documento de política de chaves no editor de texto de sua preferência, edite-o e salve o arquivo.

1. Use a [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)operação para aplicar o documento de política de chaves atualizado à chave KMS. Para obter o código de exemplo em várias linguagens de programação, consulte [Use `PutKeyPolicy` com um AWS SDK ou CLI](example_kms_PutKeyPolicy_section.md).

Para ver um exemplo de cópia de uma política de chaves de uma chave KMS para outra, consulte o [GetKeyPolicy exemplo](https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html#examples) na Referência de AWS CLI Comandos.

# Permissões para AWS serviços nas principais políticas
<a name="key-policy-services"></a>

Muitos AWS serviços são usados AWS KMS keys para proteger os recursos que gerenciam. Quando um serviço usa [Chaves pertencentes à AWS](concepts.md#aws-owned-key) ou [Chaves gerenciadas pela AWS](concepts.md#aws-managed-key), o serviço estabelece e mantém as políticas de chaves para essas chaves do KMS. 

No entanto, ao usar uma [chave gerenciada pelo cliente](concepts.md#customer-mgn-key) com um serviço da AWS , você é quem define e mantém a política de chaves. Essa política de chaves deve conceder ao serviço as permissões mínimas necessárias para proteger o recurso em seu nome. Recomendamos seguir o princípio de privilégio mínimo: conceda ao serviço apenas as permissões necessárias. Você pode fazer isso de forma eficaz aprendendo quais permissões o serviço precisa e usando [chaves de condição globais da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) e [chaves de condição do AWS KMS](policy-conditions.md) para refinar as permissões. 

Para encontrar as permissões que o serviço exige em uma chave gerenciada pelo cliente, consulte a documentação de criptografia do serviço. A lista a seguir inclui links para a documentação de alguns serviços:
+ **AWS CloudTrail**permissões - [Configure as AWS KMS principais políticas para CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create-kms-key-policy-for-cloudtrail.html#create-kms-key-policy-for-cloudtrail-decrypt)
+ Permissões do **Amazon Elastic Block Store**: [Guia do usuário do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#ebs-encryption-permissions)
+ Permissões do **AWS Lambda**: [criptografia de dados em repouso para o Lambda](https://docs.aws.amazon.com/lambda/latest/dg/security-encryption-at-rest.html)
+ Permissões do **Amazon Q**: [criptografia de dados para o Amazon Q](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/data-encryption.html)
+ Permissões do **Amazon Relational Database Service**: [gerenciamento de chave do AWS KMS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.Keys.html)
+ Permissões da **AWS Secrets Manager**: [autorização de uso da chave do KMS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html#security-encryption-authz)
+ Permissões do **Amazon Simple Queue Service**: [gerenciamento de chave do Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html)

# Usando políticas do IAM com AWS KMS
<a name="iam-policies"></a>

Você pode usar as políticas do IAM, junto com [as principais políticas](key-policies.md), [concessões](grants.md) e [políticas de VPC endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#edit-vpc-endpoint-policy), para controlar o acesso à sua entrada. AWS KMS keys AWS KMS

**nota**  
Para usar uma política do IAM para controlar o acesso a uma chave do KMS, a política de chaves da chave do KMS deve conceder à conta permissão para usar políticas do IAM. Especificamente, a política de chaves deve incluir a [instrução de política que habilita políticas do IAM](key-policy-default.md#key-policy-default-allow-root-enable-iam).  
Esta seção explica como usar as políticas do IAM para controlar o acesso às AWS KMS operações. Para obter informações mais gerais sobre permissões do IAM, consulte o [Manual do usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/).

Todas chaves do KMS do KMS têm uma política de chaves. Políticas do IAM são opcionais. Para usar uma política do IAM para controlar o acesso a uma chave do KMS, a política de chaves da chave do KMS deve conceder à conta permissão para usar políticas do IAM. Especificamente, a política de chaves deve incluir a [instrução de política que habilita políticas do IAM](key-policy-default.md#key-policy-default-allow-root-enable-iam).

As políticas do IAM podem controlar o acesso a qualquer AWS KMS operação. Diferentemente das políticas de chaves, as políticas do IAM podem controlar o acesso a várias chaves do KMS e fornecer permissões para as operações de vários AWS serviços relacionados. Mas as políticas do IAM são particularmente úteis para controlar o acesso a operações [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html), como aquelas que não podem ser controladas por uma política de chaves porque não envolvem nenhuma chave KMS específica.

Se você acessar AWS KMS por meio de um endpoint da Amazon Virtual Private Cloud (Amazon VPC), você também pode usar uma política de endpoint de VPC para limitar o acesso aos seus AWS KMS recursos ao usar o endpoint. Por exemplo, ao usar o VPC endpoint, você pode permitir que apenas os principais acessem suas Conta da AWS chaves gerenciadas pelo cliente. Para obter detalhes, consulte [Editar a política de endpoints da VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#edit-vpc-endpoint-policy).

Para ajuda sobre como escrever e formatar um documento de política JSON, consulte a[Referência a políticas JSON do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html), no *Manual do usuário do IAM*.

Use as políticas do IAM das seguintes maneiras:
+ **Anexar uma política de permissões a uma função de federação ou a permissões entre contas** – Você pode anexar uma política do IAM a uma função do IAM para permitir a federação de identidades, conceder permissões entre contas ou a aplicações em execução nas instâncias do EC2. Para mais informações sobre os vários casos de uso das funções do IAM, consulte [Funções do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) no *Manual do usuário do IAM*.
+ **Vincular uma política de permissões a um usuário ou a um grupo**: é possível vincular uma política que permite que um usuário ou um grupo de usuários chame operações do AWS KMS . No entanto, as práticas recomendadas do IAM recomendam usar identidades com credenciais temporárias, como perfis do IAM, sempre que possível.

O exemplo a seguir mostra uma política do IAM com AWS KMS permissões. Essa política permite que as identidades do IAM às quais está associada obtenham todas as chaves do KMS e aliases.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:ListKeys",
      "kms:ListAliases"
    ],
    "Resource": "*"
  }
}
```

------

Como todas as políticas do IAM, essa política não tem um elemento `Principal`. Quando você vincula uma política do IAM a uma identidade do IAM, essa identidade obtém as permissões especificadas na política.

Para ver uma tabela mostrando todas as ações da AWS KMS API e os recursos aos quais elas se aplicam, consulte [Referência de permissões](kms-api-permissions-reference.md) o.

## Permitir que diversas entidades principais do IAM acessem uma chave do KMS
<a name="key-policy-modifying-multiple-iam-users"></a>

Grupos do IAM não são entidades principais válidas em uma política de chaves. Para permitir que diversos usuários e perfis acessem uma chave do KMS, siga um dos procedimentos a seguir:
+ Use um perfil do IAM como entidade principal na política de chaves. Diversos usuários autorizados podem assumir o perfil, conforme necessário. Para obter detalhes, consulte [Perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) no *Guia do usuário do IAM*.

  Embora você possa listar diversos usuários do IAM em uma política de chaves, essa prática não é recomendada porque requer que você atualize a política de chaves sempre que a lista de usuários autorizados for alterada. Além disso, as práticas recomendadas do IAM não encorajam o uso de usuários do IAM com credenciais de longo prazo. Para obter detalhes, consulte [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) no *Guia do usuário do IAM*.
+ Use uma política do IAM para conceder permissões a um grupo do IAM. Para fazer isso, certifique-se de que a política de chaves inclua a instrução que [possibilita que as políticas do IAM concedam acesso à chave do KMS](key-policy-default.md#key-policy-default-allow-root-enable-iam), [crie uma política do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#create-managed-policy-console) que conceda acesso à chave do KMS e, em seguida, [vincule essa política a um grupo do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console) que contenha os usuários do IAM autorizados. Com essa abordagem, você não precisará alterar nenhuma política quando a lista de usuários autorizados for alterada. Basta adicionar ou remover esses usuários do grupo do IAM apropriado. Para obter detalhes, consulte [Grupos de usuários do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) no *Guia do usuário do IAM*.

Para obter mais informações sobre como as AWS KMS principais políticas e as políticas do IAM funcionam juntas, consulte[Solução de problemas de AWS KMS permissões](policy-evaluation.md).

# Práticas recomendadas para políticas do IAM
<a name="iam-policies-best-practices"></a>

Proteger o acesso ao AWS KMS keys é fundamental para a segurança de todos os seus AWS recursos. Chaves do KMS são usadas para proteger muitos dos recursos mais confidenciais da sua Conta da AWS. Reserve algum tempo para elaborar as [políticas de chave](key-policies.md), políticas do IAM, [concessões](grants.md) e políticas de endpoint da VPC que controlam o acesso às suas chaves do KMS.

Em instruções de políticas do IAM que controlam o acesso a chaves do KMS, use o [princípio de menor privilégio](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege). Conceda às entidades principais do IAM somente as permissões de que eles precisam somente nas chaves do KMS que elas devem usar ou gerenciar. 

As práticas recomendadas a seguir se aplicam às políticas do IAM que controlam o acesso a AWS KMS chaves e aliases. Para obter uma orientação geral sobre as práticas recomendadas da política do IAM, consulte [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) no *Guia do usuário do IAM*.

**Usar políticas de chaves**  
Sempre que possível, conceda permissões em políticas de chaves que afetem uma chave do KMS, em vez de em uma política do IAM que possa ser aplicada a muitas chaves do KMS, incluindo aquelas em outras Contas da AWS. Isso é particularmente importante para permissões confidenciais, como [kms: PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) e [kms:](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html), ScheduleKeyDeletion mas também para operações criptográficas que determinam como seus dados são protegidos.

**Limitar CreateKey a permissão**  
Dê permissão para criar chaves ([kms: CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)) somente aos diretores que precisarem delas. Entidades principais que criam uma chave do KMS também definem sua política de chave, para que possam conceder a si mesmas e a outros permissão para usar e gerenciar as chaves do KMS criadas. Ao conceder essa permissão, considere limitá-la usando [condições de política](policy-conditions.md). Por exemplo, você pode usar a KeySpec condição [kms:](conditions-kms.md#conditions-kms-key-spec) para limitar a permissão às chaves KMS de criptografia simétrica.

**Especificar chaves do KMS em uma política do IAM**  
Como prática recomendada, especifique o [ARN da chave](concepts.md#key-id-key-ARN) de cada chave do KMS à qual a permissão se aplica no elemento `Resource` da instrução de política. Esta prática restringe a permissão a chaves do KMS necessárias para a entidade principal. Por exemplo, esse elemento `Resource` lista apenas as chaves do KMS que a entidade principal precisa usar.  

```
"Resource": [
    "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321"
]
```
Quando especificar chaves KMS for impraticável, use um `Resource` valor que limite o acesso às chaves KMS em uma região confiável, Conta da AWS como. `arn:aws:kms:region:account:key/*` Ou limite o acesso às chaves KMS em todas as regiões (\$1) de uma rede confiável Conta da AWS, como`arn:aws:kms:*:account:key/*`.  
Não é possível usar um [ID de chave](concepts.md#key-id-key-id), um [alias do nome](concepts.md#key-id-alias-name) ou [alias do ARN](concepts.md#key-id-alias-ARN) para representar uma chave do KMS no campo `Resource` de uma política do IAM. Se você especificar um ARN de alias, a política se aplicará ao alias, e não à chave do KMS. Para obter informações gerais sobre políticas do IAM para aliases, consulte [Controlar o acesso a aliases](alias-access.md)

**Evite "Resource": "\$1" em uma política do política do IAM**  <a name="avoid-resource-star"></a>
Use caracteres curinga (\$1) com critério. Em uma política de chaves, o caractere curinga no elemento `Resource` representa a chave do KMS à qual a política de chaves está associada. Mas em uma política do IAM, um caractere curinga sozinho no `Resource` elemento (`"Resource": "*"`) aplica as permissões a todas as chaves do KMS em tudo o Contas da AWS que a conta do diretor tem permissão para usar. Isso pode incluir [chaves KMS em outras Contas da AWS](key-policy-modifying-external-accounts.md), bem como chaves KMS na conta do diretor.  
Por exemplo, para usar uma chave KMS em outra Conta da AWS, um principal precisa da permissão da política de chaves da chave KMS na conta externa e de uma política do IAM em sua própria conta. Suponha que uma conta arbitrária concedeu permissão à sua Conta da AWS [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) em suas . Em caso afirmativo, uma política do IAM na sua conta que dê acesso uma função com permissão `kms:Decrypt` em todas as chaves do KMS (`"Resource": "*"`) atenderá à parte do IAM do requisito. Como resultado, as entidades principais que podem assumir essa função agora podem descriptografar textos cifrados usando a chave do KMS na conta não confiável. As entradas de suas operações aparecem nos CloudTrail registros de ambas as contas.  
Especificamente, evite usar `"Resource": "*"` em uma declaração de política que permita as operações de API a seguir. Essas operações podem ser chamadas em chaves KMS em outras Contas da AWS.  
+ [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [GetKeyRotationStatus](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyRotationStatus.html)
+ [Operações criptográficas](kms-cryptography.md#cryptographic-operations) [https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html)
+ [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html), [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html), [ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListRetirableGrants.html), [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html), [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)

**Quando usar "Resource": "\$1"**  <a name="require-resource-star"></a>
Em uma política do IAM, use um caractere curinga no elemento `Resource` somente para permissões que o exijam. Somente as permissões a seguir exigem o elemento `"Resource": "*"`.  
+ [kms: CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)
+ [kms: GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html)
+ [kms: ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)
+ [kms: ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)
+ Permissões para armazenamentos de chaves personalizadas, como [kms: CreateCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateCustomKeyStore.html) e [kms](https://docs.aws.amazon.com/kms/latest/APIReference/API_ConnectCustomKeyStore.html):. ConnectCustomKeyStore
As permissões para operações de alias ([kms: CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html), [kms:UpdateAlias, [kms: DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateAlias.html)) devem ser anexadas ao alias e à chave KMS. É possível usar `"Resource": "*"` em uma política do IAM para representar os aliases e as chaves do KMS, ou especificar os aliases e as chaves do KMS no elemento `Resource`. Para obter exemplos, consulte [Controlar o acesso a aliases](alias-access.md).

 

Os exemplos deste tópico fornecem mais informações e orientações para criar políticas do IAM para chaves do KMS. Para ver as melhores práticas do IAM para todos os AWS recursos, consulte [as melhores práticas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) *no Guia do usuário do IAM*.

# Especificando chaves do KMS em instruções de políticas do IAM
<a name="cmks-in-iam-policies"></a>

É possível usar uma política do IAM para permitir que uma entidade principal use ou gerencie chaves do KMS. Chaves do KMS são especificadas no elemento `Resource` da instrução de política. 
+ Para especificar uma chave do KMS em uma instrução de política do IAM, use seu [ARN de chave](concepts.md#key-id-key-ARN). Não é possível usar um [ID de chave](concepts.md#key-id-key-id), um [nome de alias](concepts.md#key-id-alias-name) nem um [ARN de alias](concepts.md#key-id-alias-ARN) para identificar uma chave do KMS em uma instrução de política do IAM. 

  Por exemplo: "`Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`"

  Para controlar o acesso a uma chave KMS com base em seus aliases, use as chaves de condição [kms: RequestAlias](conditions-kms.md#conditions-kms-request-alias) ou [kms](conditions-kms.md#conditions-kms-resource-aliases):. ResourceAliases Para obter detalhes, consulte [ABAC para AWS KMS](abac.md).

  Use um alias ARN como recurso somente em uma declaração de política que controle o acesso às operações de alias, [CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/CreateAlias.html)como [UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/UpdateAlias.html), ou. [DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/DeleteAlias.html) Para obter detalhes, consulte [Controlar o acesso a aliases](alias-access.md).
+ Para especificar várias chaves do KMS na conta e região, use caracteres curinga (\$1) nas posições de Região ou ID de recurso do ARN de chave. 

  Por exemplo, para especificar todas as chaves do KMS na região Oeste dos EUA (Oregon) de uma conta, use ”`Resource": "arn:aws:kms:us-west-2:111122223333:key/*`“. Para especificar todas as chaves do KMS em todas as regiões da conta, use "`Resource": "arn:aws:kms:*:111122223333:key/*`".
+ Para representar todas as chaves do KMS, use um caractere curinga sozinho (`"*"`). Use esse formato para operações que não usam nenhuma chave KMS específica, a saber [CreateKey[GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html), [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html), e. [ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)

Ao escrever suas instruções de política, é uma [prática recomendada](iam-policies-best-practices.md) limitar as chaves do KMS àquelas que as entidades principais precisam usar, em vez de conceder acesso a todas as chaves do KMS. 

Por exemplo, a declaração de política do IAM a seguir permite que o diretor chame as operações [DescribeKey[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html),, [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) somente nas chaves KMS listadas no `Resource` elemento da declaração de política. Especificar chaves do KMS por ARN de chave, que é uma prática recomendada, garante que as permissões sejam limitadas apenas às chaves do KMS especificadas.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:DescribeKey",
      "kms:GenerateDataKey",
      "kms:Decrypt"
    ],
    "Resource": [
     "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
     "arn:aws:kms:us-west-2:111122223333:key/01234abcd-12ab-34cd-56ef-1234567890ab"
    ]
  }
}
```

------

Para aplicar a permissão a todas as chaves KMS em um determinado local confiável Conta da AWS, você pode usar caracteres curinga (\$1) na região e nas posições de ID da chave. Por exemplo, a instrução de política a seguir permite que a entidade principal chame as operações especificadas em quaisquer chaves do KMS em duas contas confiáveis demonstrativas.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:DescribeKey",
      "kms:GenerateDataKey",
      "kms:GenerateDataKeyPair"
    ],
    "Resource": [
      "arn:aws:kms:*:111122223333:key/*",
      "arn:aws:kms:*:444455556666:key/*"
    ]
  }
}
```

------

Também é possível usar um caractere curinga (`"*"`) sozinho no elemento `Resource`. Como ela permite o acesso a todas as chaves do KMS que a conta tem permissão para usar, é recomendável principalmente para operações que não envolvam uma chaves do KMS específica e para instruções `Deny`. Você também pode usá-lo em declarações de política que permitam apenas operações somente leitura menos confidenciais. Para determinar se uma AWS KMS operação envolve uma chave KMS específica, procure o valor da **chave KMS** na coluna **Recursos** da tabela em. [AWS KMS permissões](kms-api-permissions-reference.md)

Por exemplo, a instrução de política a seguir usa um efeito `Deny` para proibir as entidades principais de usar as operações especificadas em qualquer chave do KMS. Ela usa um caractere curinga no elemento `Resource` para representar todas as chaves do KMS.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": [
      "kms:CreateKey",
      "kms:PutKeyPolicy",
      "kms:CreateGrant",
      "kms:ScheduleKeyDeletion"
    ],
    "Resource": "*"
  }
}
```

------

A instrução de política a seguir usa um caractere curinga isoladamente para representar todas as chaves do KMS. Porém, ela permite apenas operações menos confidenciais somente leitura e operações que não se aplicam a uma chave do KMS específica.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:CreateKey",
      "kms:ListKeys",
      "kms:ListAliases",
      "kms:ListResourceTags"
    ],
    "Resource": "*"
  }
}
```

------

# Exemplos de política do IAM
<a name="customer-managed-policies"></a>

Nesta seção, você pode encontrar exemplos de políticas do IAM que concedem permissões para várias ações do AWS KMS .

**Importante**  
Algumas permissões das políticas a seguir são concedidas somente quando a política de chaves da chave do KMS também as concede. Para obter mais informações, consulte [Referência de permissões](kms-api-permissions-reference.md).

Para ajuda sobre como escrever e formatar um documento de política JSON, consulte a[Referência a políticas JSON do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html), no *Manual do usuário do IAM*.

**Topics**
+ [Permitir que um usuário visualize as chaves KMS no console AWS KMS](#iam-policy-example-read-only-console)
+ [Permitir que um usuário crie chaves do KMS](#iam-policy-example-create-key)
+ [Permitir que um usuário criptografe e descriptografe com qualquer chave KMS em uma determinada Conta da AWS](#iam-policy-example-encrypt-decrypt-one-account)
+ [Permitir que um usuário criptografe e descriptografe com qualquer chave KMS em uma região específica Conta da AWS](#iam-policy-example-encrypt-decrypt-one-account-one-region)
+ [Permitir que um usuário criptografe e descriptografe com chaves do KMS específicas](#iam-policy-example-encrypt-decrypt-specific-cmks)
+ [Impedir que um usuário desabilite ou exclua qualquer chave do KMS](#iam-policy-example-deny-disable-delete)

## Permitir que um usuário visualize as chaves KMS no console AWS KMS
<a name="iam-policy-example-read-only-console"></a>

A política do IAM a seguir permite que os usuários tenham acesso somente de leitura ao AWS KMS console. Os usuários com essas permissões podem visualizar todas as chaves KMS em suas Conta da AWS, mas não podem criar ou alterar nenhuma chave KMS. 

[Para visualizar as chaves KMS nas páginas de chaves **gerenciadas pelo cliente **Chaves gerenciadas pela AWS**e pelas páginas de chaves gerenciadas** pelo clienteListKeys, os diretores exigem as GetResources permissões [kms: ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html), kms: e [tag:](https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetResources.html), mesmo que as chaves não tenham tags ou aliases.](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html) As permissões restantes, especialmente [kms: DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html), são necessárias para visualizar colunas e dados opcionais da tabela de chaves KMS nas páginas de detalhes da chave KMS. As ListRoles permissões [iam: ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html) e [iam:](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html) são necessárias para exibir a política de chaves na visualização padrão sem erros. Para visualizar dados na página **Armazenamentos de chaves personalizadas** e detalhes sobre chaves KMS em armazenamentos de chaves personalizadas, os diretores também precisam da permissão [kms:](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html). DescribeCustomKeyStores

Se você limitar o acesso do console de um usuário a chaves do KMS específicas, o console exibirá um erro para cada chave do KMS que não estiver visível. 

Essa política inclui duas declarações de política. O elemento `Resource` na primeira instrução de política habilita as permissões especificadas em todas as chaves do KMS em todas as regiões da Conta da AWS de exemplo. Os visualizadores do console não precisam de acesso adicional porque o console do AWS KMS exibe somente chaves do KMS na conta da entidade principal. Isso é verdade mesmo que eles tenham permissão para visualizar as chaves KMS em outros Contas da AWS. As permissões restantes AWS KMS e do IAM exigem um `"Resource": "*"` elemento porque não se aplicam a nenhuma chave KMS específica.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ReadOnlyAccessForAllKMSKeysInAccount",
      "Effect": "Allow",
      "Action": [
        "kms:GetPublicKey",        
        "kms:GetKeyRotationStatus",
        "kms:GetKeyPolicy",
        "kms:DescribeKey",
        "kms:ListKeyPolicies",
        "kms:ListResourceTags",
        "tag:GetResources"
      ],
      "Resource": "arn:aws:kms:*:111122223333:key/*"
    },
    {
      "Sid": "ReadOnlyAccessForOperationsWithNoKMSKey",
      "Effect": "Allow",
      "Action": [
        "kms:ListKeys",
        "kms:ListAliases",
        "iam:ListRoles",
        "iam:ListUsers"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## Permitir que um usuário crie chaves do KMS
<a name="iam-policy-example-create-key"></a>

A seguinte política do IAM permite que um usuário crie todos os tipos de chaves do KMS. O valor do `Resource` elemento é `*` porque a `CreateKey` operação não usa nenhum AWS KMS recurso específico (chaves ou aliases do KMS).

Para restringir o usuário a tipos específicos de chaves KMS, use as chaves de [condição kms: KeySpec](conditions-kms.md#conditions-kms-key-spec), [kms: KeyUsage](conditions-kms.md#conditions-kms-key-usage) e [kms](conditions-kms.md#conditions-kms-key-origin):. KeyOrigin

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "kms:CreateKey",
    "Resource": "*"
  }
}
```

------

As entidades principais que criam chaves podem precisar de algumas permissões relacionadas.
+ **kms: PutKeyPolicy** — Os diretores que têm `kms:CreateKey` permissão podem definir a política inicial de chaves para a chave KMS. No entanto, o `CreateKey` chamador deve ter a PutKeyPolicy permissão [kms:](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html), que permite alterar a política de chaves do KMS, ou deve especificar o `BypassPolicyLockoutSafetyCheck` parâmetro de`CreateKey`, o que não é recomendado. O autor da chamada `CreateKey` pode obter a permissão `kms:PutKeyPolicy` para a chave do KMS a partir de uma política do IAM ou incluir essa permissão na política de chaves da chave do KMS que ele está criando.
+ **kms: TagResource** — Para adicionar tags à chave KMS durante a `CreateKey` operação, o `CreateKey` chamador deve ter a TagResource permissão [kms:](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html) em uma política do IAM. Não é suficiente incluir essa permissão na política de chaves da nova chave do KMS. No entanto, se o autor da chamada `CreateKey` incluir `kms:TagResource` na política de chaves inicial, ele poderá adicionar etiquetas a uma chamada separada após a criação da chave do KMS.
+ **kms: CreateAlias** — Os diretores que criam uma chave KMS no AWS KMS console devem ter a CreateAlias permissão [kms:](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html) na chave KMS e no alias. (O console faz duas chamadas; uma para `CreateKey` e outra para `CreateAlias`). É necessário fornecer a permissão de alias em uma política do IAM. É possível fornecer a permissão da chave do KMS em uma política de chave ou política do IAM. Para obter detalhes, consulte [Controlar o acesso a aliases](alias-access.md).

Além disso`kms:CreateKey`, a política do IAM a seguir fornece `kms:TagResource` permissão para todas as chaves KMS na Conta da AWS e `kms:CreateAlias` permissão para todos os aliases da conta. Ela também inclui algumas permissões úteis somente leitura que podem ser fornecidas somente em uma política do IAM. 

Essa política do IAM não inclui a permissão `kms:PutKeyPolicy` nem outras permissões que possam ser definidas em uma política de chaves. Uma [prática recomendada](iam-policies-best-practices.md) é definir essas permissões na política de chaves em que elas se aplicam exclusivamente a uma chave do KMS.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IAMPermissionsForParticularKMSKeys",
      "Effect": "Allow",
      "Action": "kms:TagResource",
      "Resource": "arn:aws:kms:*:111122223333:key/*"
    },
    {
      "Sid": "IAMPermissionsForParticularAliases",
      "Effect": "Allow",
      "Action": "kms:CreateAlias",
      "Resource": "arn:aws:kms:*:111122223333:alias/*"
    },
    {
      "Sid": "IAMPermissionsForAllKMSKeys",
      "Effect": "Allow",
      "Action": [
        "kms:CreateKey",
        "kms:ListKeys",
        "kms:ListAliases"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## Permitir que um usuário criptografe e descriptografe com qualquer chave KMS em uma determinada Conta da AWS
<a name="iam-policy-example-encrypt-decrypt-one-account"></a>

A política do IAM a seguir permite que um usuário criptografe e descriptografe dados com qualquer chave KMS em 111122223333. Conta da AWS 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Encrypt",
      "kms:Decrypt"
    ],
    "Resource": "arn:aws:kms:*:111122223333:key/*"
  }
}
```

------

## Permitir que um usuário criptografe e descriptografe com qualquer chave KMS em uma região específica Conta da AWS
<a name="iam-policy-example-encrypt-decrypt-one-account-one-region"></a>

A política do IAM a seguir permite que um usuário criptografe e descriptografe dados com qualquer chave KMS Conta da AWS `111122223333` na região Oeste dos EUA (Oregon).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Encrypt",
      "kms:Decrypt"
    ],
    "Resource": [
      "arn:aws:kms:us-west-2:111122223333:key/*"
    ]
  }
}
```

------

## Permitir que um usuário criptografe e descriptografe com chaves do KMS específicas
<a name="iam-policy-example-encrypt-decrypt-specific-cmks"></a>

A política do IAM a seguir permite que um usuário criptografe e descriptografe dados com as duas chaves do KMS especificadas no elemento `Resource`. Ao especificar uma chave do KMS em uma instrução de política do IAM, você deve usar o [ARN de chave](concepts.md#key-id-key-ARN) dessa chave do KMS.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Encrypt",
      "kms:Decrypt"
    ],
    "Resource": [
      "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
      "arn:aws:kms:us-west-2:111122223333:key/01234abc-d12a-b34c-d56e-f1234567890a'"
    ]
  }
}
```

------

## Impedir que um usuário desabilite ou exclua qualquer chave do KMS
<a name="iam-policy-example-deny-disable-delete"></a>

A política do IAM a seguir impede que um usuário desabilite ou exclua chaves do KMS, mesmo quando outra política do IAM ou uma política de chaves concede essas permissões. Uma política que nega explicitamente permissões substitui todas as outras políticas, mesmo aquelas que concedem explicitamente as mesmas permissões. Para obter mais informações, consulte [Solução de problemas de AWS KMS permissões](policy-evaluation.md).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": [
      "kms:DisableKey",
      "kms:ScheduleKeyDeletion"
    ],
    "Resource": "*"
  }
}
```

------

# Políticas de controle de recursos em AWS KMS
<a name="resource-control-policies"></a>

As políticas de controle de recursos (RCPs) são um tipo de política organizacional que você pode usar para impor controles preventivos sobre AWS os recursos em sua organização. RCPs ajudam você a restringir centralmente o acesso externo aos seus AWS recursos em grande escala. RCPs complementam as políticas de controle de serviços (SCPs). Embora SCPs possa ser usado para definir centralmente as permissões máximas sobre as funções e usuários do IAM em sua organização, RCPs pode ser usado para definir centralmente o máximo de permissões em AWS recursos em sua organização.

Você pode usar RCPs para gerenciar as permissões das chaves KMS gerenciadas pelo cliente em sua organização. RCPs sozinhos, não são suficientes para conceder permissões às chaves gerenciadas pelo cliente. Nenhuma permissão é concedida por uma RCP. Uma RCP define uma barreira de proteção de permissões, ou define limites, nas ações que as identidades podem realizar em recursos nas contas afetadas. O administrador ainda deve anexar políticas baseadas em identidade a usuários ou perfis do IAM, ou políticas de chave para conceder permissões de fato.

**nota**  
As políticas de controle de recursos de sua organização não se aplicam a [Chaves gerenciadas pela AWS](concepts.md#aws-managed-key).  
Chaves gerenciadas pela AWS são criados, gerenciados e usados em seu nome por um AWS serviço, você não pode alterar ou gerenciar suas permissões.

**Saiba mais**
+ Para obter mais informações gerais sobre RCPs, consulte [Políticas de controle de recursos](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) no *Guia AWS Organizations do usuário*.
+ Para obter detalhes sobre como definir RCPs, incluindo exemplos, consulte a [sintaxe RCP](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps_syntax.html) no Guia do *AWS Organizations Usuário*.

O exemplo a seguir demonstra como usar uma RCP para impedir que entidades principais externas acessem chaves gerenciadas pelo cliente em sua organização. Essa política é somente um exemplo. Você deverá adaptá-la para atender às suas necessidades específicas de negócios e segurança. Por exemplo, talvez seja necessário personalizar sua política para permitir o acesso de seus parceiros de negócios. Para obter mais detalhes, consulte o [repositório de exemplos de política de perímetro de dados](https://github.com/aws-samples/data-perimeter-policy-examples/tree/main/resource_control_policies).

**nota**  
A permissão `kms:RetireGrant` não tem efeito em uma RCP, mesmo que o elemento `Action` especifique um asterisco (\$1) como curinga.  
Para obter mais informações sobre como a permissão `kms:RetireGrant` é determinada, consulte [Retirar e revogar concessões](grant-delete.md).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RCPEnforceIdentityPerimeter",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "kms:*",
            "Resource": "*",
            "Condition": {
                "StringNotEqualsIfExists": {
                    "aws:PrincipalOrgID": "my-org-id"
                },
                "Bool": {
                    "aws:PrincipalIsAWSService": "false"
                }
            }
        }
    ]
}
```

------

O exemplo de RCP a seguir exige que os diretores de AWS serviço só possam acessar suas chaves KMS gerenciadas pelo cliente quando a solicitação for originada de sua organização. Esta política aplica o controle somente às solicitações que têm `aws:SourceAccount` presente. Isso garante que as integrações de serviços que não exigem o uso de `aws:SourceAccount` não sejam afetadas. Se `aws:SourceAccount` estiver presente no contexto da solicitação, a condição `Null` será avaliada como `true`, fazendo com que a chave `aws:SourceOrgID` seja aplicada.

Para obter mais informações sobre o problema de “confused deputy”, consulte [O problema de “confused deputy”](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) no *Guia do usuário do IAM*.

```
```

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RCPEnforceConfusedDeputyProtection",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "kms:*",
            "Resource": "*",
            "Condition": {
                "StringNotEqualsIfExists": {
                    "aws:SourceOrgID": "my-org-id"
                },
                "Bool": {
                    "aws:PrincipalIsAWSService": "true"
                },
                "Null": {
                    "aws:SourceAccount": "false"
                }
            }
        }
    ]
}
```

------

# Subsídios em AWS KMS
<a name="grants"></a>

Uma *concessão* é um instrumento de política que permite que as [entidades principais da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) usem chaves do KMS em operações de criptografia. Ela também pode permitir que essas entidades visualizem uma chave do KMS (`DescribeKey`) e criem e gerenciem concessões. Ao autorizar o acesso a uma chave do KMS, concessões são consideradas junto com [políticas de chave](key-policies.md) e [políticas do IAM](iam-policies.md). Concessões geralmente são usadas para permissões temporárias, pois você pode criar uma, usar suas permissões e excluí-la sem alterar suas principais políticas ou políticas do IAM.

As concessões são comumente usadas por AWS serviços que se integram AWS KMS para criptografar seus dados em repouso. O serviço cria uma concessão em nome de um usuário na conta, usa suas permissões e desativa a concessão assim que sua tarefa é concluída. Para obter detalhes sobre como AWS os serviços usam concessões, consulte o tópico *Criptografia em repouso* no guia do usuário ou no guia do desenvolvedor do serviço.

Concessões são um mecanismo de controle de acesso muito flexível e útil. Quando você cria uma concessão para uma chave do KMS, essa concessão permite que a entidade principal autorizada chame as operações de concessão especificadas na chave do KMS, desde que todas as condições especificadas na concessão sejam atendidas. 
+ Cada concessão permite o acesso a exatamente uma chave do KMS. Você pode criar uma concessão para uma chave do KMS em uma Conta da AWS diferente.
+ Uma concessão pode permitir acesso a uma chave do KMS, mas não pode negar acesso.
+ Cada concessão tem uma [entidade principal autorizada](#terms-grantee-principal). O principal beneficiário pode representar uma ou mais identidades na Conta da AWS mesma chave KMS ou em uma conta diferente.
+ Uma concessão só pode permitir [operações de concessão](#terms-grant-operations). Operações de concessão devem ter suporte pela chave do KMS na concessão. Se você especificar uma operação sem suporte, a [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)solicitação falhará com uma `ValidationError` exceção.
+ A entidade principal autorizada pode usar as permissões autorizadas pela concessão sem especificar a concessão, exatamente como fariam se as permissões fossem provenientes de uma política de chave ou de uma política do IAM. No entanto, como a AWS KMS API segue um modelo de [consistência eventual](#terms-eventual-consistency), quando você cria, retira ou revoga uma concessão, pode haver um breve atraso antes que a alteração esteja disponível por completo. AWS KMS Para usar as permissões em uma concessão imediatamente, [use um token de concessão](using-grant-token.md).
+ Uma entidade principal autorizada pode excluir a concessão ([retirar](#terms-retire-grant) ou [revogar](#terms-revoke-grant) a concessão). A exclusão de uma concessão elimina todas as permissões permitidas por ela. Você não precisa descobrir quais políticas adicionar ou remover para desfazer a concessão. 
+ AWS KMS limita o número de concessões em cada chave KMS. Para obter detalhes, consulte [Concessões por chave do KMS: 50.000](resource-limits.md#grants-per-key).

Tenha cautela ao criar concessões e ao dar permissão a outras pessoas para criar concessões. A permissão para criar concessões tem implicações de segurança, assim como permitir que o [kms: PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) defina políticas.
+ Usuários com permissão para criar concessões para uma chave KMS (`kms:CreateGrant`) podem usar uma concessão para permitir que usuários e funções, incluindo AWS serviços, usem a chave KMS. Os diretores podem ser identidades próprias Conta da AWS ou identidades em uma conta ou organização diferente.
+ Os subsídios podem permitir somente um subconjunto de AWS KMS operações. É possível usar concessões para permitir que as entidades principais exibam a chave do KMS, usá-la em operações de criptografia e criar e retirar concessões. Para obter mais detalhes, consulte [Operações de concessão](#terms-grant-operations). Você também pode usar [restrições de concessão](create-grant-overview.md#grant-constraints) para limitar as permissões em uma concessão para uma chave de criptografia simétrica.
+ As entidades principais podem obter permissão para criar concessões a partir de uma política de chave ou de uma política do IAM. Entidades principais que recebem a permissão `kms:CreateGrant` de uma política podem criar concessões para qualquer [operação de concessão](#terms-grant-operations) na chave do KMS. Essas entidades principais não precisam ter a permissão que estão concedendo na chave. Quando você concede a permissão `kms:CreateGrant` em uma política, pode usar [condições de políticas](grant-authorization.md) para limitar essa permissão.
+ As entidades principais também podem obter permissão para criar concessões de uma concessão. Mesmo que tenham outras permissões de uma política, essas entidades principais só podem delegar as permissões que foram concedidas a elas. Para obter detalhes, consulte [Concedendo permissão CreateGrant](create-grant-overview.md#grant-creategrant).

## Conceitos sobre concessões
<a name="grant-concepts"></a>

Para usar concessões de maneira eficaz, você precisa entender os termos e conceitos que são usados pela AWS KMS . 

**Restrições de concessão**  <a name="terms-grant-constraint"></a>
Uma condição que limita as permissões na concessão. Atualmente, AWS KMS suporta restrições de concessão com base no [contexto de criptografia](encrypt_context.md) na solicitação de uma operação criptográfica. Para obter detalhes, consulte [Usar restrições de concessão](create-grant-overview.md#grant-constraints).

**ID de concessão**  <a name="terms-grant-id"></a>
O identificador exclusivo de uma concessão para uma chave do KMS. Você pode usar uma ID de concessão, junto com um [identificador de chave](concepts.md#key-id), para identificar uma concessão em uma [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)solicitação [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)or.

**Operações de concessão**  <a name="terms-grant-operations"></a>
As AWS KMS operações que você pode permitir em uma concessão. Se você especificar outras operações, a [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)solicitação falhará com uma `ValidationError` exceção. Estas são também as operações que aceitam um [token de concessão](#grant_token). Para obter informações detalhadas sobre essas permissões, consulte a [AWS KMS permissões](kms-api-permissions-reference.md).  
Essas operações de concessão realmente representam permissão para usar a operação. Portanto, para a operação `ReEncrypt`, você pode especificar `ReEncryptFrom`, `ReEncryptTo` ou ambos `ReEncrypt*`.  
As operações de concessão são:  
+ Operações criptográficas
  + [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)
  + [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html)
  + [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)
  + [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)
  + [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)
  + [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html)
  + [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)
  + [GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html)
  + [ReEncryptFrom](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)
  + [ReEncryptTo](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)
  + [Sign](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html)
  + [Verificar](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html)
  + [VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html)
+ Outras operações
  + [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)
  + [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
  + [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)
  + [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)
As operações de concessão permitidas devem ter suporte pela chave do KMS na concessão. Se você especificar uma operação sem suporte, a [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)solicitação falhará com uma `ValidationError` exceção. Por exemplo, as concessões para chaves do KMS de criptografia simétrica não podem permitir as operações [Sign](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html), [Verify](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html), [https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html) ou [https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html). As concessões para chaves assimétricas do KMS não podem permitir nenhuma operação que gere chaves de dados ou pares de chaves de dados.

**Token de concessão**  <a name="grant_token"></a>
A AWS KMS API segue um modelo de [consistência eventual](#terms-eventual-consistency). Quando você cria uma concessão, pode haver um breve atraso antes que a alteração esteja disponível em todo o AWS KMS. Normalmente, a alteração leva menos de alguns segundos para se propagar por todo o sistema, mas, em alguns casos, pode levar vários minutos. Se você tentar usar uma concessão antes de ela se propagar totalmente pelo sistema, poderá obter um erro de acesso negado. Um token de concessão permite que você faça referência à concessão e use as permissões de concessão imediatamente.   
Um *token de concessão* é uma string única, não secreta, de comprimento variável e codificada em base64 que representa uma concessão. Você pode usar o token de concessão para identificar a concessão em qualquer [operação de concessão](#terms-grant-operations). No entanto, como o valor do token é um resumo de hash, ele não revela detalhes sobre a concessão.  
Um token de concessão é projetado para ser usado somente até que a concessão seja totalmente propagada em todo o AWS KMS. Depois disso, a [entidade principal receptora da concessão](#terms-grantee-principal) pode usar a permissão nessa concessão sem fornecer um token de concessão ou qualquer outra evidência da concessão. Você pode usar um token de concessão a qualquer momento, mas quando a concessão estiver consistente, AWS KMS use a concessão para determinar as permissões, não o token de concessão.  
Por exemplo, o comando a seguir chama a [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)operação. Ele usa um token de concessão para representar a concessão que dá ao autor da chamada (a entidade principal receptora da concessão) permissão para chamar `GenerateDataKey` na chave do KMS especificada.  

```
$ aws kms generate-data-key \
        --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
        --key-spec AES_256 \
        --grant-token $token
```
Também é possível pode usar um token de concessão para identificar uma concessão em operações que gerenciam concessões. Por exemplo, o [diretor que está se aposentando](#terms-retiring-principal) pode usar um token de concessão em uma chamada para a [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)operação.   

```
$ aws kms retire-grant \
        --grant-token $token
```
`CreateGrant` é a única operação que retorna um token de concessão. Você não pode obter um token de concessão de nenhuma outra AWS KMS operação ou do [evento de CloudTrail log](ct-creategrant.md) da CreateGrant operação. As [ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListRetirableGrants.html)operações [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)e retornam o [ID de concessão](#terms-grant-id), mas não um token de concessão.  
Para obter detalhes, consulte [Usar um token de concessão](using-grant-token.md).

**Entidade principal receptora da concessão**  <a name="terms-grantee-principal"></a>
As identidades que obtêm as permissões especificadas na concessão. Cada concessão tem uma entidade principal autorizada, mas a entidade principal autorizada pode representar várias identidades.   
O principal beneficiário pode ser qualquer AWS principal, incluindo um Conta da AWS (root), um [usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html), uma função do [IAM, uma função](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) ou usuário [federado ou um usuário com função](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) assumida. A entidade principal receptora da concessão pode estar na mesma conta da que a chave do KMS ou uma conta diferente. No entanto, a entidade principal receptora da concessão não pode ser uma[entidade principal do serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), um[grupo do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) ou um[AWS organização](https://docs.aws.amazon.com/organizations/latest/userguide/).  
As práticas recomendadas do IAM não encorajam o uso de usuários do IAM com credenciais de longo prazo. Sempre que possível, use os perfis do IAM, por fornecerem credenciais temporárias. Para obter detalhes, consulte [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) no *Guia do usuário do IAM*.

**Retira (uma concessão)**  <a name="terms-retire-grant"></a>
Encerra uma concessão. Você retira uma concessão ao terminar de usar as permissões.  
A revogação e a retirada de uma concessão excluem essa concessão. No entanto, o processo é feito por uma entidade principal especificada na concessão. A revogação geralmente é feita por um administrador de chave. Para obter detalhes, consulte [Retirar e revogar concessões](grant-delete.md).

**Retirada da entidade principal**  <a name="terms-retiring-principal"></a>
Uma entidade principal que pode [retirar uma concessão](#terms-retire-grant). Você pode especificar uma entidade de retirada em uma concessão, mas ela não é necessária. O diretor que está se aposentando pode ser qualquer AWS principal, incluindo usuários do IAM Contas da AWS, funções do IAM, usuários federados e usuários com funções assumidas. A entidade principal de retirada pode estar na mesma conta da que a chave do KMS ou uma conta diferente.  
As práticas recomendadas do IAM não encorajam o uso de usuários do IAM com credenciais de longo prazo. Sempre que possível, use os perfis do IAM, por fornecerem credenciais temporárias. Para obter detalhes, consulte [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) no *Guia do usuário do IAM*.
Além de se aposentar do diretor especificado no subsídio, um subsídio pode ser aposentado pela pessoa Conta da AWS em que o subsídio foi criado. Se a concessão permitir a operação `RetireGrant`, a [entidade principal receptora da concessão](#terms-grantee-principal) poderá retirar a concessão. Além disso, o Conta da AWS ou Conta da AWS aquele que é o diretor que está se aposentando pode delegar a permissão para retirar uma bolsa a um diretor do IAM no mesmo. Conta da AWS Para obter detalhes, consulte [Retirar e revogar concessões](grant-delete.md).

**Revocar (uma concessão)**  <a name="terms-revoke-grant"></a>
Encerra uma concessão. Você revoga uma concessão para negar ativamente as permissões que a concessão permite.   
A revogação e a retirada de uma concessão excluem essa concessão. No entanto, o processo é feito por uma entidade principal especificada na concessão. A revogação geralmente é feita por um administrador de chave. Para obter detalhes, consulte [Retirar e revogar concessões](grant-delete.md).

**Consistência eventual (para concessões)**  <a name="terms-eventual-consistency"></a>
A AWS KMS API segue um modelo de [consistência eventual](https://en.wikipedia.org/wiki/Eventual_consistency). Quando você cria, retira ou revoga uma concessão, pode haver um breve atraso antes que a alteração esteja disponível em todo o AWS KMS. Normalmente, a alteração leva menos de alguns segundos para se propagar por todo o sistema, mas, em alguns casos, pode levar vários minutos.  
Você pode ter conhecimento desse breve atraso se receber erros inesperados. Por exemplo, se você tentar gerenciar uma nova concessão ou usar as permissões em uma nova concessão antes que a concessão seja totalmente conhecida AWS KMS, você pode receber um erro de acesso negado. Se você retirar ou revogar uma concessão, a entidade principal receptora da concessão ainda poderá usar suas permissões por um breve período até que a concessão seja totalmente excluída. A estratégia típica é repetir a solicitação, e algumas AWS SDKs incluem lógica automática de recuo e repetição.  
AWS KMS tem recursos para mitigar esse breve atraso.   
+ Para usar as permissões em uma nova concessão imediatamente, use um [token de concessão](using-grant-token.md). Você pode usar um token de concessão para fazer referência a uma concessão em qualquer [operação de concessão](#terms-grant-operations). Para instruções, consulte [Usar um token de concessão](using-grant-token.md). 
+ A [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operação tem um `Name` parâmetro que impede que operações de repetição criem concessões duplicadas.
Os tokens de concessão substituem a validade da concessão até que todos os endpoints do serviço sejam atualizados com o novo estado de concessão. Na maioria dos casos, a consistência eventual será alcançada em cinco minutos.
Para obter informações, consulte [consistência eventual do AWS KMS](accessing-kms.md#programming-eventual-consistency).

# Melhores práticas para AWS KMS subsídios
<a name="grant-best-practices"></a>

AWS KMS recomenda as seguintes melhores práticas ao criar, usar e gerenciar subsídios.
+ Limite as permissões na concessão àquelas que são exigidas pela entidade principal receptora da concessão. Use o princípio de [acesso com menos privilégio](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege).
+ Use uma entidade principal receptora da concessão específica, como uma função do IAM, e dê a ela permissão para usar somente as operações de API necessárias. 
+ Use [restrições de concessão](grants.md#terms-grant-constraint) do contexto de criptografia para garantir que os autores de chamadas estejam usando a chave do KMS para o propósito pretendido. Para obter detalhes sobre como usar o contexto de criptografia em uma solicitação para proteger seus dados, consulte [Como proteger a integridade de seus dados criptografados usando AWS Key Management Service e EncryptionContext](https://aws.amazon.com/blogs/security/how-to-protect-the-integrity-of-your-encrypted-data-by-using-aws-key-management-service-and-encryptioncontext/) no *blog AWS de segurança*.
**dica**  
Use a restrição de [EncryptionContextEqual](create-grant-overview.md#grant-constraints)concessão sempre que possível. A restrição de [EncryptionContextSubset](create-grant-overview.md#grant-constraints)concessão é mais difícil de usar corretamente. Se precisar usá-la, leia atentamente a documentação e teste a restrição de concessão para se certificar de que ela funciona como pretendido.
+ Exclua concessões duplicadas. Concessões duplicadas têm o mesmo ARN de chave, ações de API, entidade principal receptora da concessão, contexto de criptografia e nome. Se você retirar ou revogar a concessão original, mas deixar as duplicatas, as concessões duplicadas restantes constituirão escalonamentos não intencionais de privilégio. Para evitar duplicar concessões ao tentar novamente uma solicitação `CreateGrant`, use o [parâmetro `Name`](create-grant-overview.md#grant-create). Para detectar concessões duplicadas, use a [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)operação. Se você criar acidentalmente uma concessão duplicada, retire ou revogue-a assim que possível. 
**nota**  
Concessões para [chaves gerenciadas da AWS](concepts.md#aws-managed-key) podem parecer duplicadas, mas têm diferentes entidades principais receptoras de concessão.  
O campo `GranteePrincipal` na resposta `ListGrants` geralmente contém o principal favorecido da concessão. No entanto, quando o principal beneficiário da concessão é um AWS serviço, o `GranteePrincipal` campo contém o [principal do serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), que pode representar vários diretores beneficiários diferentes.
+ Lembre-se de que as concessões não expiram automaticamente. [Reitre ou revogue a concessão](grant-delete.md) assim que a permissão não for mais necessária. Concessões que não forem excluídas podem criar riscos de segurança para recursos criptografados.

# Controlar o acesso a concessões
<a name="grant-authorization"></a>

Você pode controlar o acesso às operações que criam e gerenciam concessões em políticas de chaves, políticas do IAM e concessões. As entidades principais que recebem a permissão `CreateGrant` de uma concessão tem [permissões de concessão mais limitadas](create-grant-overview.md#grant-creategrant). 


| Operação de API | Política de chaves ou política do IAM | Concessão | 
| --- | --- | --- | 
| CreateGrant | ✓ | ✓ | 
| ListGrants | ✓ | - | 
| ListRetirableGrants | ✓ | - | 
| Retirar concessões | (Limitado. Consulte [Retirar e revogar concessões](grant-delete.md)) | ✓ | 
| RevokeGrant | ✓ | - | 

Ao usar uma política de chaves ou uma política do IAM para controlar o acesso às operações que criam e gerenciam concessões, você pode usar uma ou mais das seguintes condições de política para limitar a permissão. AWS KMS suporta todas as seguintes chaves de condição relacionadas à concessão. Para obter informações e exemplos detalhados, consulte [AWS KMS chaves de condição](conditions-kms.md).

[kms: GrantConstraintType](conditions-kms.md#conditions-kms-grant-constraint-type)  
Permite que as entidades principais criem uma concessão somente quando esta inclui a [restrição de concessão](create-grant-overview.md#grant-constraints) especificada.

[kms: GrantIsFor AWSResource](conditions-kms.md#conditions-kms-grant-is-for-aws-resource)  
Permite que os diretores `CreateGrant` liguem ou `RevokeGrant` somente quando [um AWS serviço integrado AWS KMS](https://aws.amazon.com/kms/features/#AWS_Service_Integration) envia a solicitação em nome do diretor. `ListGrants`

[kms: GrantOperations](conditions-kms.md#conditions-kms-grant-operations)  
Permite que as entidades principais criem uma concessão, mas limita a concessão às operações especificadas.

[kms: GranteePrincipal](conditions-kms.md#conditions-kms-grantee-principal)  
Permite que as entidades principais criem uma concessão somente para a [entidade principal receptora da concessão](grants.md#terms-grantee-principal).

[kms: RetiringPrincipal](conditions-kms.md#conditions-kms-retiring-principal)  
Permite que as entidades principais criem uma concessão somente quando esta especifica um [entidade principal de retirada](grants.md#terms-retiring-principal).

# Criar concessões
<a name="create-grant-overview"></a>

Antes de criar uma concessão, saiba mais sobre as opções para personalizar sua concessão. Você pode usar *restrições de concessão* para limitar as permissões na concessão. Além disso, saiba mais sobre como conceder a permissão `CreateGrant`. As entidades principais que obtêm permissão para criar concessões a partir de uma concessão são limitados em termos das concessões que elas podem criar.

**Topics**
+ [Criar uma concessão](#grant-create)
+ [Concedendo permissão CreateGrant](#grant-creategrant)

## Criar uma concessão
<a name="grant-create"></a>

Para criar uma concessão, chame a [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operação. Especifique uma chave do KMS, uma [entidade principal receptora da concessão](grants.md#terms-grantee-principal) e uma lista de [operações de concessão](grants.md#terms-grant-operations). Você também pode designar uma [entidade principal de retirada](grants.md#terms-retiring-principal) opcional. Para personalizar a concessão, use parâmetros `Constraints` opcionais para definir as [restrições de concessão](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html)

Quando você cria, retira ou revoga uma concessão, pode haver um breve atraso, geralmente menos de cinco minutos, antes que a alteração esteja disponível em todo o AWS KMS. Para obter informações, consulte [Eventual consistency (for grants)](grants.md#terms-eventual-consistency) (Consistência eventual (para concessões)).

Por exemplo, o comando `CreateGrant` a seguir cria uma concessão que permite que usuários que estão autorizados a assumir o perfil `keyUserRole` chamem a operação [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) na [chave do KMS simétrica](symm-asymm-choose-key-spec.md#symmetric-cmks) especificada. A concessão usa o parâmetro `RetiringPrincipal` para designar um principal que pode desativar a concessão. Ele também inclui uma restrição de concessão que concede a permissão somente quando o [contexto de criptografia](encrypt_context.md) na solicitação inclui `"Department": "IT"`.

```
$  aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \
    --operations Decrypt \
    --retiring-principal arn:aws:iam::111122223333:role/adminRole \
    --constraints EncryptionContextSubset={Department=IT}
```

Se o seu código tentar novamente a operação `CreateGrant` ou usar um[SDK da AWS que repete solicitações automaticamente](https://docs.aws.amazon.com/general/latest/gr/api-retries.html), use o parâmetro [Name](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-Name) opcional para impedir a criação de concessões duplicadas. Se AWS KMS receber uma `CreateGrant` solicitação de concessão com as mesmas propriedades de uma concessão existente, incluindo o nome, ela reconhecerá a solicitação como uma nova tentativa e não criará uma nova concessão. Não é possível usar o valor `Name` para identificar a concessão em qualquer operação do AWS KMS .

**Importante**  
Não inclua informações confidenciais ou sigilosas no nome da concessão. Ele pode aparecer em texto simples em CloudTrail registros e outras saídas.

```
$ aws kms create-grant \
    --name IT-1234abcd-keyUserRole-decrypt \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \
    --operations Decrypt \
    --retiring-principal arn:aws:iam::111122223333:role/adminRole \
    --constraints EncryptionContextSubset={Department=IT}
```

Para exemplos de código que demonstram como criar concessões em várias linguagens de programação, consulte [Use `CreateGrant` com um AWS SDK ou CLI](example_kms_CreateGrant_section.md).

### Usar restrições de concessão
<a name="grant-constraints"></a>

[Restrições de concessão](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html) definem condições para as permissões que a concessão fornece à entidade principal receptora da concessão. Restrições de concessão ocupam o lugar de [chaves de condição](policy-conditions.md) em uma [política de chaves](key-policies.md) ou [política do IAM](iam-policies.md). Cada valor de restrição de concessão pode incluir até oito pares de contexto de criptografia. O valor do contexto de criptografia em cada restrição de concessão não pode exceder 384 caracteres.

**Importante**  
Não inclua informações confidenciais ou sigilosas nesse campo. Esse campo pode ser exibido em texto simples em CloudTrail registros e outras saídas.

AWS KMS suporta duas restrições de concessão `EncryptionContextEquals` e `EncryptionContextSubset` ambas estabelecem requisitos para o [contexto de criptografia](encrypt_context.md) em uma solicitação de uma operação criptográfica. 

As restrições de concessão de contexto de criptografia foram projetadas para serem usadas com [operações de concessão](grants.md#terms-grant-operations) que têm um parâmetro de contexto de criptografia. 
+ As restrições de contexto de criptografia são válidas somente em uma concessão para uma chave do KMS de criptografia simétrica. Operações criptográficas com outras chaves do KMS não são compatíveis com um contexto de criptografia.
+ A restrição do contexto de criptografia é ignorada para operações `DescribeKey` e `RetireGrant`. `DescribeKey` e `RetireGrant` não têm um parâmetro de contexto de criptografia, mas você pode incluir essas operações em uma concessão que tenha uma restrição de contexto de criptografia.
+ É possível usar uma restrição de contexto de criptografia em uma concessão para a operação `CreateGrant`. A restrição de contexto de criptografia requer que todas as concessões criadas com a permissão `CreateGrant` tenham uma restrição de contexto de criptografia igualmente rigorosa ou ainda mais rigorosa.

AWS KMS suporta as seguintes restrições de concessão de contexto de criptografia.

**EncryptionContextEquals**  
Use `EncryptionContextEquals` para especificar o contexto de criptografia exato para solicitações permitidas.   
`EncryptionContextEquals` requer que os pares de contexto de criptografia na solicitação sejam uma correspondência exata, com distinção entre maiúsculas e minúsculas, para os pares de contexto de criptografia na restrição de concessão. Os pares podem aparecer em qualquer ordem, mas as chaves e os valores em cada par não podem variar.   
Por exemplo, se a restrição de concessão `EncryptionContextEquals` exigir o par de contexto de criptografia `"Department": "IT"`, a concessão permitirá solicitações do tipo especificado apenas quando o contexto de criptografia na solicitação for exatamente`"Department": "IT"`.

**EncryptionContextSubset**  
Use `EncryptionContextSubset` para exigir que as solicitações incluam pares de contexto de criptografia específicos.  
`EncryptionContextSubset` requer que a solicitação inclua todos os pares de contexto de criptografia na restrição de concessão (uma correspondência exata com distinção entre maiúsculas e minúsculas), mas a solicitação também pode conter pares de contexto de criptografia adicionais. Os pares podem aparecer em qualquer ordem, mas as chaves e os valores em cada par não podem variar.   
Por exemplo, se a restrição de concessão `EncryptionContextSubset` exigir o par de contexto de criptografia `Department=IT`, a concessão permitirá solicitações do tipo especificado quando o contexto de criptografia na solicitação for `"Department": "IT"` ou incluir `"Department": "IT"` juntamente com outros pares de contexto de criptografia, como `"Department": "IT","Purpose": "Test"`.

Para especificar uma restrição de contexto de criptografia em uma concessão para uma chave KMS de criptografia simétrica, use o `Constraints` parâmetro na operação. [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) A concessão que esse comando cria concede aos usuários que estão autorizados a assumir a permissão do perfil `keyUserRole` para chamar a operação [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html). Porém, essa permissão entrará em vigor somente quando o contexto de criptografia na solicitação `Decrypt` for um par de contexto de criptografia `"Department": "IT"`.

```
$ aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \
    --operations Decrypt \
    --retiring-principal arn:aws:iam::111122223333:role/adminRole \
    --constraints EncryptionContextEquals={Department=IT}
```

A concessão resultante é semelhante à seguinte. Observe que a permissão concedida ao perfil `keyUserRole` entrará em vigor somente quando a solicitação `Decrypt` usar o mesmo par de contexto de criptografia especificado na restrição de concessão. Para encontrar as concessões em uma chave KMS, use a [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)operação.

```
$ aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
{
    "Grants": [
        {
            "Name": "",
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a",
            "Operations": [
                "Decrypt"
            ],
            "GranteePrincipal": "arn:aws:iam::111122223333:role/keyUserRole",
            "Constraints": {
                "EncryptionContextEquals": {
                    "Department": "IT"
                }
            },
            "CreationDate": 1568565290.0,
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole"
        }
    ]
}
```

Para atender à restrição de concessão `EncryptionContextEquals`, o contexto de criptografia na solicitação para a operação `Decrypt` deve ser um par `"Department": "IT"`. Uma solicitação como a seguinte da entidade principal receptora da concessão atenderia à restrição de concessão `EncryptionContextEquals`.

```
$ aws kms decrypt \
    --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\
    --ciphertext-blob fileb://encrypted_msg \
    --encryption-context Department=IT
```

Quando a restrição de concessão é `EncryptionContextSubset`, os pares de contexto de criptografia na solicitação devem incluir pares de contexto de criptografia na restrição de concessão, mas a solicitação também pode incluir outros pares de contexto de criptografia. A restrição de concessão a seguir exige que um dos pares de contexto de criptografia na solicitação seja `"Deparment": "IT"`.

```
"Constraints": {
   "EncryptionContextSubset": {
       "Department": "IT"
   }
}
```

A solicitação a seguir da entidade principal receptora da concessão atenderia a ambas as restrições de concessão `EncryptionContextEqual` e `EncryptionContextSubset` neste exemplo.

```
$ aws kms decrypt \
    --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \
    --ciphertext-blob fileb://encrypted_msg \
    --encryption-context Department=IT
```

No entanto, uma solicitação como o seguinte da entidade principal receptora da concessão atenderia a restrição de concessão `EncryptionContextSubset`, mas falharia na restrição de concessão `EncryptionContextEquals`.

```
$ aws kms decrypt \
    --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \
    --ciphertext-blob fileb://encrypted_msg \
    --encryption-context Department=IT,Purpose=Test
```

AWS os serviços geralmente usam restrições de contexto de criptografia nas concessões que lhes dão permissão para usar chaves KMS em seu. Conta da AWS Por exemplo, o Amazon DynamoDB usa uma concessão, como a seguinte, para obter permissão de uso da [Chave gerenciada pela AWS](concepts.md#aws-managed-key) para o DynamoDB na sua conta. A restrição de concessão `EncryptionContextSubset` nessa concessão colocará em vigor as permissões na concessão somente quando o contexto de criptografia na solicitação incluir os pares `"subscriberID": "111122223333"` e `"tableName": "Services"`. Essa restrição de concessão significa que a concessão permite que o DynamoDB use a chave do KMS especificada apenas para uma tabela específica na sua Conta da AWS.

Para obter essa saída, execute a [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)operação no Chave gerenciada pela AWS for DynamoDB em sua conta.

```
$ aws kms list-grants --key-id 0987dcba-09fe-87dc-65ba-ab0987654321

{
    "Grants": [
        {
            "Operations": [
                "Decrypt",
                "Encrypt",
                "GenerateDataKey",
                "ReEncryptFrom",
                "ReEncryptTo",
                "RetireGrant",
                "DescribeKey"
            ],
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "Constraints": {
                "EncryptionContextSubset": {
                    "aws:dynamodb:tableName": "Services",
                    "aws:dynamodb:subscriberId": "111122223333"
                }
            },
            "CreationDate": 1518567315.0,
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321",
            "GranteePrincipal": "dynamodb.us-west-2.amazonaws.com",
            "RetiringPrincipal": "dynamodb.us-west-2.amazonaws.com",
            "Name": "8276b9a6-6cf0-46f1-b2f0-7993a7f8c89a",
            "GrantId": "1667b97d27cf748cf05b487217dd4179526c949d14fb3903858e25193253fe59"
        }
    ]
}
```

## Concedendo permissão CreateGrant
<a name="grant-creategrant"></a>

Uma concessão pode incluir permissão para chamar a operação `CreateGrant`. Porém, quando uma [entidade principal receptora da concessão](grants.md#terms-grantee-principal) obtém permissão para chamar `CreateGrant` de uma concessão, em vez de uma política, essa permissão é limitada. 
+ A entidade principal receptora da concessão só pode criar concessões que permitam algumas ou todas as operações na concessão pai.
+ As [restrições de concessão](#grant-constraints) nas concessões que elas criam devem ser pelo menos tão rigorosas quanto as contidos na concessão pai.

Essas limitações não se aplicam a entidades principais que obtêm a permissão `CreateGrant` de uma política, embora suas permissões possam ser limitadas por [condições de política](grant-authorization.md).

Por exemplo, considere uma concessão que permite que o principal favorecido chame as operações `GenerateDataKey`, `Decrypt` e `CreateGrant`. Chamamos uma concessão que aceita a permissão `CreateGrant` para uma *concessão pai*.

```
# The original grant in a ListGrants response.
{
    "Grants": [
        {
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "CreationDate": 1572216195.0,
            "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a",
            "Operations": [
                "GenerateDataKey",
                "Decrypt",
                "CreateGrant
            ]
            "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole",
            "Name": "",
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "GranteePrincipal": "arn:aws:iam::111122223333:role/keyUserRole",
            "Constraints": {
                "EncryptionContextSubset": {
                    "Department": "IT"
                }
            },
        }
    ]
}
```

A entidade principal receptora da concessão, exampleUser, pode usar essa permissão para criar uma concessão que inclui qualquer subconjunto das operações especificadas na concessão original, como `CreateGrant` e `Decrypt`. A *concessão filho* não pode incluir outras operações, como `ScheduleKeyDeletion` ou `ReEncrypt`.

Além disso, as [restrições de concessão](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html) nas concessões filho devem ser igualmente ou mais restritivas que as da concessão pai. Por exemplo, a concessão filho pode adicionar pares a uma restrição `EncryptionContextSubset` na concessão pai, mas não pode removê-los. A concessão filho pode alterar uma restrição `EncryptionContextSubset` para uma restrição `EncryptionContextEquals`, mas não o contrário.

As práticas recomendadas do IAM não encorajam o uso de usuários do IAM com credenciais de longo prazo. Sempre que possível, use os perfis do IAM, por fornecerem credenciais temporárias. Para obter detalhes, consulte [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) no *Guia do usuário do IAM*.

Por exemplo, a entidade principal receptora da concessão pode usar a permissão `CreateGrant` que obteve da concessão pai para criar a seguinte concessão filho. As operações na concessão filho são um subconjunto das operações na concessão pai, e as restrições de concessão são mais restritivas.

```
# The child grant in a ListGrants response.
{
    "Grants": [
        {
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "CreationDate": 1572249600.0,
            "GrantId": "fedcba9999c1e2e9876abcde6e9d6c9b6a1987650000abcee009abcdef40183f",
            "Operations": [
                "CreateGrant"
                "Decrypt"
            ]
            "RetiringPrincipal": "arn:aws:iam::111122223333:user/exampleUser",
            "Name": "",
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "GranteePrincipal": "arn:aws:iam::111122223333:user/anotherUser",
            "Constraints": {
                "EncryptionContextEquals": {
                    "Department": "IT"
                }
            },
        }
    ]
}
```

A entidade principal receptora da concessão na concessão filho, `anotherUser`, pode usar a permissão `CreateGrant` para criar concessões. No entanto, as concessões criadas por `anotherUser` devem incluir as operações em sua concessão pai ou um subconjunto, e as restrições de concessão devem ser iguais ou mais rigorosas. 

# Visualizar concessões
<a name="grant-view"></a>

Para visualizar a concessão, use a [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)operação. Você deve especificar a chave do KMS à qual as concessões se aplicam. Você também pode filtrar a lista de concessões por ID de concessão ou entidade principal receptora da concessão. Para obter mais exemplos, consulte [Use `ListGrants` com um AWS SDK ou CLI](example_kms_ListGrants_section.md).

Para ver todas as doações na Conta da AWS região com um determinado [diretor aposentado](grants.md#terms-retiring-principal), use [ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListRetirableGrants.html). As respostas incluem detalhes sobre cada concessão.

**nota**  
O campo `GranteePrincipal` na resposta `ListGrants` geralmente contém o principal favorecido da concessão. No entanto, quando o principal beneficiário da concessão é um AWS serviço, o `GranteePrincipal` campo contém o [principal do serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), que pode representar vários diretores beneficiários diferentes.

Por exemplo, o comando a seguir lista todas as concessões para uma chave do KMS.

```
$  aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
{
    "Grants": [
        {
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "CreationDate": 1572216195.0,
            "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a",
            "Constraints": {
                "EncryptionContextSubset": {
                    "Department": "IT"
                }
            },
            "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole",
            "Name": "",
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "GranteePrincipal": "arn:aws:iam::111122223333:user/exampleUser",
            "Operations": [
                "Decrypt"
            ]
        }
    ]
}
```

# Usar um token de concessão
<a name="using-grant-token"></a>

A AWS KMS API segue um modelo de [consistência eventual](grants.md#terms-eventual-consistency). Ao criar uma concessão, esta pode não entrar em vigor imediatamente. Pode haver um breve atraso antes que a alteração esteja disponível em todo o AWS KMS. Normalmente, a alteração leva menos de alguns segundos para se propagar por todo o sistema, mas, em alguns casos, pode levar vários minutos. Uma vez que a alteração tenha se propagado em todo o sistema, a entidade principal receptora da concessão poderá usar as permissões na concessão sem especificar o token de concessão ou qualquer evidência da concessão. No entanto, se uma concessão for tão nova que ainda não seja conhecida por todos AWS KMS, a solicitação poderá falhar com um `AccessDeniedException` erro.

Para usar as permissões em uma nova concessão imediatamente, use o [token de concessão](grants.md#grant_token) para a concessão. Salve o token de concessão que a [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operação retorna. Em seguida, envie o token de concessão na solicitação da AWS KMS operação. Você pode enviar um token de concessão para qualquer [operação de AWS KMS concessão](grants.md#terms-grant-operations) e pode enviar vários tokens de concessão na mesma solicitação.



O exemplo a seguir usa a `CreateGrant` operação para criar uma concessão que permite as operações [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)e [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html). Ele salva o token de concessão retornado por `CreateGrant` na variável `token`. Em seguida, em uma chamada para `GenerateDataKey`, ele usa o token de concessão na variável `token`.

```
# Create a grant; save the grant token 
$ token=$(aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:user/appUser \
    --retiring-principal arn:aws:iam::111122223333:user/acctAdmin \
    --operations GenerateDataKey Decrypt \
    --query GrantToken \
    --output text)

# Use the grant token in a request
$ aws kms generate-data-key \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    –-key-spec AES_256 \
    --grant-tokens $token
```

As entidades principais com permissão também podem usar um token de concessão para desativar uma nova concessão antes mesmo que ela fique disponível por meio do AWS KMS. (A operação `RevokeGrant` não aceita um token de concessão.) Para obter detalhes, consulte [Retirar e revogar concessões](grant-delete.md).

```
# Retire the grant
$ aws kms retire-grant --grant-token $token
```

# Retirar e revogar concessões
<a name="grant-delete"></a>

Para excluir uma concessão, retire-a ou revogue-a.

As [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)operações [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)e são muito semelhantes entre si. Ambas excluem uma concessão, o que elimina as permissões por ela permitidas. A principal diferença entre elas é como elas são autorizadas.

**RevokeGrant**  
Como a maioria das AWS KMS operações, o acesso à `RevokeGrant` operação é controlado por meio de [políticas-chave e políticas](key-policies.md) [do IAM](iam-policies.md). A [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)API pode ser chamada por qualquer diretor com `kms:RevokeGrant` permissão. Essa permissão está incluída nas permissões padrão fornecidas aos administradores de chaves. Normalmente, os administradores revogam uma concessão para negar permissões que são permitidas pela concessão.

**RetireGrant**  
A concessão determina quem pode retirá-la. Esse design permite que você controle o ciclo de vida de uma concessão sem alterar políticas de chaves ou políticas do IAM. Normalmente, você retira uma concessão ao terminar de usar suas permissões.  
Uma concessão pode ser retirada por uma [entidade principal de retirada](grants.md#terms-retiring-principal) especificada nessa concessão. A [entidade principal receptora da concessão](grants.md#terms-grantee-principal) também pode retirar a concessão, mas somente se ela também for uma entidade principal de retirada ou se a concessão incluir a operação `RetireGrant`. Como backup, aquele Conta da AWS em que o subsídio foi criado pode retirar o subsídio.  
Existe uma permissão `kms:RetireGrant` que pode ser usada em políticas do IAM, mas sua utilidade é limitada. Entidades principais especificadas na concessão podem retirar uma concessão sem a permissão `kms:RetireGrant`. A permissão `kms:RetireGrant` por si só não permite que as entidades principais retirem uma concessão. A permissão de `kms:RetireGrant` não tem efeito em uma [política de chave](key-policies.md) ou [política de controle de recurso](resource-control-policies.md).  
+ Para negar a permissão de retirar uma concessão, você pode usar uma ação `Deny` com a permissão de `kms:RetireGrant` em suas políticas do IAM.
+ O Conta da AWS proprietário da chave KMS pode delegar a `kms:RetireGrant` permissão a um diretor do IAM na conta. 
+ Se o diretor aposentado for diferente Conta da AWS, os administradores da outra conta podem usar `kms:RetireGrant` para delegar permissão para retirar a concessão a um diretor do IAM nessa conta.

A AWS KMS API segue um modelo de [consistência eventual](grants.md#terms-eventual-consistency). Quando você cria, retira ou revoga uma concessão, pode haver um breve atraso antes que a alteração esteja disponível em todo o AWS KMS. Normalmente, a alteração leva menos de alguns segundos para se propagar por todo o sistema, mas, em alguns casos, pode levar vários minutos. Se você precisar excluir uma nova concessão imediatamente, antes que ela esteja disponível por toda parte AWS KMS, [use um token de concessão](using-grant-token.md) para retirar a concessão. Não é possível usar um token de concessão para revogar uma concessão.

# Chaves de condição para AWS KMS
<a name="policy-conditions"></a>

Você pode especificar condições nas [principais políticas e políticas](key-policies.md) [do IAM](iam-policies.md) que controlam o acesso aos AWS KMS recursos. A declaração de política é efetiva apenas quando as condições forem verdadeiras. Por exemplo, talvez você deseje que uma declaração de política só entre em vigor após uma data específica. Ou, você pode querer que uma declaração de política controle o acesso apenas quando um valor específico existe em uma solicitação de API.

Para especificar condições, use *chaves de condição* no [elemento `Condition`](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) de uma instrução de política com [operadores de condição do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html). Algumas chaves de condição geralmente se aplicam a AWS; outras são específicas AWS KMS a.

Os valores da chave de condição devem seguir as regras de caracteres e codificação das AWS KMS principais políticas e políticas do IAM. Para obter detalhes sobre as regras de documento de política de chaves, consulte [Formato de política de chaves](key-policy-overview.md#key-policy-format). Para obter detalhes sobre as regras de documento de política do IAM, consulte [Requisitos de nome do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-names) no *Guia do usuário do IAM*.

**Topics**
+ [AWS chaves de condição globais](conditions-aws.md)
+ [AWS KMS chaves de condição](conditions-kms.md)
+ [AWS KMS chaves de condição para plataformas certificadas](conditions-attestation.md)

# AWS chaves de condição globais
<a name="conditions-aws"></a>

AWS define [chaves de condição globais](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#AvailableKeys), um conjunto de chaves de condições de política para todos os AWS serviços que usam o IAM para controle de acesso. AWS KMS suporta todas as chaves de condição globais. Você pode usá-las nas AWS KMS principais políticas e nas políticas do IAM.

Por exemplo, você pode usar a chave de condição [aws: PrincipalArn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalarn) global para permitir o acesso a uma AWS KMS key (chave KMS) somente quando o principal na solicitação for representado pelo Amazon Resource Name (ARN) no valor da chave de condição. Para oferecer suporte ao [controle de acesso baseado em atributos](abac.md) (ABAC) em AWS KMS, você pode usar a chave de condição global [aws:ResourceTag/*tag-key*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) em uma política do IAM para permitir o acesso às chaves do KMS com uma tag específica.

Para ajudar a evitar que um AWS serviço seja usado como substituto confuso em uma política em que o diretor é o principal do [AWS serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), você pode usar as chaves de condição [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)ou as chaves de condição [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)globais. Para obter detalhes, consulte [Uso de chaves de condição `aws:SourceArn` ou `aws:SourceAccount`](least-privilege.md#least-privilege-source-arn).

Para obter informações sobre chaves de condição AWS globais, incluindo os tipos de solicitações nas quais elas estão disponíveis, consulte [Chaves de contexto de condição AWS global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) no *Guia do usuário do IAM*. Para exemplos de como usar chaves de condição globais em políticas do IAM, consulte [Controlar o acesso a solicitações](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-requests) e [Controlar chaves de etiquetas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys), no *Manual do usuário do IAM*.

Os tópicos a seguir fornecem orientações especiais para o uso de chaves de condição com base em endereços IP e endpoint da VPCs.

**Topics**
+ [Usando a condição de endereço IP em políticas com AWS KMS permissões](#conditions-aws-ip-address)
+ [Usando condições de endpoint VPC em políticas com permissões AWS KMS](#conditions-aws-vpce)
+ [Usando IPv6 endereços no IAM e nas AWS KMS principais políticas](#KMS-IPv6-policies)

## Usando a condição de endereço IP em políticas com AWS KMS permissões
<a name="conditions-aws-ip-address"></a>

Você pode usar AWS KMS para proteger seus dados em um [AWS serviço integrado](service-integration.md). Mas tenha cuidado ao especificar os [operadores de condição de endereço IP](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_IPAddress) ou a chave de `aws:SourceIp` condição na mesma declaração de política que permite ou nega acesso a. AWS KMS Por exemplo, a política em [AWS: Nega acesso a AWS Com base no IP de origem](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-ip.html) restringe AWS as ações às solicitações do intervalo de IP especificado.

Considere este cenário:

1. Você anexa uma política como a mostrada em [AWS: Nega acesso AWS com base no IP de origem a](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-ip.html) uma identidade do IAM. Defina o valor da `aws:SourceIp` chave de condição para o intervalo de endereços IP para a empresa do usuário. Essa identidade do IAM tem outras políticas vinculadas que permitem que ela use o Amazon EBS, o Amazon EC2 e o AWS KMS.

1. A identidade tenta vincular um volume do EBS criptografado a uma instância do EC2. Esta ação falha com um erro de autorização, embora o usuário tenha permissão para usar todos os serviços relevantes.

A etapa 2 falha porque a solicitação AWS KMS para descriptografar a chave de dados criptografada do volume vem de um endereço IP associado à infraestrutura do Amazon EC2. Para que a solicitação seja bem-sucedida, ela deve ter o endereço IP do usuário de origem. Como a política na etapa 1 nega explicitamente todas as solicitações de endereços IP que não sejam aqueles especificados, o Amazon EC2 não recebe permissão para descriptografar a chave de dados criptografada do volume do EBS.

Além disso, a chave de condição `aws:SourceIP` não será efetiva se a solicitação vier de um [endpoint da Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html). Para restringir solicitações a um endpoint da VPC, incluindo um [endpoint da VPC do AWS KMS](kms-vpc-endpoint.md), use as chaves de condições `aws:SourceVpce` ou `aws:SourceVpc`. Para obter mais informações, consulte [endpoint da VPCs – controle do uso de endpoints](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html#vpc-endpoints-iam-access) no *Manual do usuário do Amazon VPC*. 

## Usando condições de endpoint VPC em políticas com permissões AWS KMS
<a name="conditions-aws-vpce"></a>

[AWS KMS suporta endpoints da Amazon Virtual Private Cloud (Amazon VPC)](kms-vpc-endpoint.md) que são alimentados por. [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Introduction.html#what-is-privatelink) Você pode usar as seguintes chaves de [condição globais nas políticas de chaves](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#AvailableKeys) e nas políticas do IAM para controlar o acesso aos AWS KMS recursos quando a solicitação vem de uma VPC ou usa um VPC endpoint. Para obter detalhes, consulte [Use VPC endpoints para controlar o acesso aos recursos AWS KMS](vpce-policy-condition.md).
+ `aws:SourceVpc` limita o acesso a solicitações da VPC especificado. 
+ `aws:SourceVpce` limita o acesso a solicitações do endpoint da VPC especificado. 

Se você usar essas chaves de condição para controlar o acesso às chaves KMS, poderá inadvertidamente negar o acesso aos AWS serviços usados AWS KMS em seu nome. 

Tome cuidado para evitar uma situação como o exemplo de [chaves de condições de endereço IP](#conditions-aws-ip-address). Se você restringir as solicitações de uma chave KMS a uma VPC ou VPC endpoint, as chamadas AWS KMS de um serviço integrado, como Amazon S3 ou Amazon EBS, podem falhar. Isso pode acontecer mesmo se a solicitação de origem for originada, em última análise, na VPC ou no endpoint da VPC. 

## Usando IPv6 endereços no IAM e nas AWS KMS principais políticas
<a name="KMS-IPv6-policies"></a>

Antes de tentar acessar IPv6, certifique-se AWS KMS de que todas as chaves e políticas do IAM que contenham restrições de endereço IP sejam atualizadas para incluir intervalos de IPv6 endereços. Políticas baseadas em IP que não são atualizadas para lidar com IPv6 endereços podem fazer com que os clientes percam ou obtenham acesso incorretamente quando começam a usar IPv6. Para obter orientação geral sobre controles de acesso do KMS, consulte [Acesso e permissões de chave do KMS](control-access.md). Para saber mais sobre o KMS e compatibilidade com pilha dupla, consulte [Suporte a endpoint de pilha dupla](ipv6-kms.md).

**Importante**  
Essas instruções não permitem nenhuma ação. Use essas instruções em combinação com outras instruções que permitem ações específicas.

A declaração a seguir nega explicitamente o acesso a todas as permissões do KMS para solicitações originadas do `192.0.2.*` intervalo de endereços. IPv4 As permissões do KMS não são explicitamente negadas aos endereços IP fora desse intervalo. Como todos os IPv6 endereços estão fora do intervalo negado, essa declaração não nega explicitamente as permissões do KMS para nenhum IPv6 endereço.

```
{
     "Sid": "DenyKMSPermissions",
     "Effect": "Deny",
    "Action": [
        "kms:*"
    ],
    "Resource": "*",
    "Condition": {
        "NotIpAddress": {
            "aws:SourceIp": [ 
                "192.0.2.0/24"
            ]
        }
    }
}
```

Você pode modificar o `Condition` elemento para negar os intervalos de endereço IPv4 IPv6 (`192.0.2.0/24``2001:db8:1234::/32`) e (), conforme mostrado no exemplo a seguir.

```
{
    "Sid": "DenyKMSPermissions",
    "Effect": "Deny",
    "Action": [
        "kms:*"
    ],
    "Resource": "*",
    "Condition": {
        "NotIpAddress": {
            "aws:SourceIp": [ 
                "192.0.2.0/24",
                "2001:db8:1234::/32"
            ]
        }
    }
}
```

# AWS KMS chaves de condição
<a name="conditions-kms"></a>

AWS KMS fornece um conjunto de chaves de condição que você pode usar em políticas de chaves e políticas do IAM. Essas chaves de condição são específicas para AWS KMS. Por exemplo, é possível usar a chave de condição `kms:EncryptionContext:context-key` para exigir um [contexto de criptografia](encrypt_context.md) específico ao controlar o acesso a uma chave do KMS de criptografia simétrica.

**Condições para uma solicitação de operação de API**

Muitas chaves de AWS KMS condição controlam o acesso a uma chave KMS com base no valor de um parâmetro na solicitação de uma AWS KMS operação. Por exemplo, você pode usar a chave de KeySpec condição [kms:](#conditions-kms-key-spec) em uma política do IAM para permitir o uso da [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operação somente quando o valor do `KeySpec` parâmetro na `CreateKey` solicitação for`RSA_4096`. 

Esse tipo de condição funciona mesmo quando o parâmetro não aparece na solicitação, como quando você usa o valor padrão do parâmetro. Por exemplo, é possível usar a chave de condição [kms:KeySpec](#conditions-kms-key-spec) para permitir que os usuários usem a operação `CreateKey` somente quando o valor do parâmetro `KeySpec` é `SYMMETRIC_DEFAULT`, que é o valor padrão. Essa condição permite solicitações que têm o parâmetro `KeySpec` com o valor `SYMMETRIC_DEFAULT` e solicitações que não têm parâmetro `KeySpec`.

**Condições para chaves do KMS usadas em operações de API**

Algumas chaves de AWS KMS condição podem controlar o acesso às operações com base em uma propriedade da chave KMS usada na operação. Por exemplo, você pode usar a KeyOrigin condição [kms:](#conditions-kms-key-origin) para permitir que os diretores [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)chamem uma chave KMS somente quando a `Origin` chave KMS for. `AWS_KMS` Para descobrir se uma chave de condição pode ser usada dessa maneira, consulte a descrição da chave de condição.

A operação deve ser uma *operação de recurso de chave do KMS*, ou seja, uma operação autorizada para uma chave do KMS específica. Para identificar as operações de recursos de chaves do KMS, na [Tabela de ações e recursos](kms-api-permissions-reference.md#kms-api-permissions-reference-table), procure um valor de `KMS key` na coluna `Resources` para a operação. Se você usar esse tipo de chave de condição com uma operação não autorizada para um determinado recurso de chave KMS, por exemplo [ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html), a permissão não será efetiva porque a condição nunca poderá ser satisfeita. Não há recursos da chave do KMS envolvidos na autorização da operação `ListKeys` e nenhuma propriedade `KeySpec`. 

Os tópicos a seguir descrevem cada chave de AWS KMS condição e incluem exemplos de declarações de política que demonstram a sintaxe da política.

**Usar operadores de conjuntos com chaves de condição**

Quando uma condição de política compara dois conjuntos de valores, como o conjunto de tags em uma solicitação e o conjunto de tags em uma política, você precisa saber AWS como comparar os conjuntos. O IAM define dois operadores de conjunto, `ForAnyValue` e `ForAllValues`, para essa finalidade. Use operadores de conjunto somente com *chaves de condição de vários valores*, que exigem esses operadores. Não use operadores de conjuntos com *chaves de condição de valor único*. Como sempre, teste suas instruções de política completamente antes de usá-las em um ambiente de produção.

Chaves de condição são de valor único ou de vários valores. Para determinar se uma chave de AWS KMS condição tem valor único ou de vários valores, consulte a coluna **Tipo de valor** na descrição da chave de condição. 
+ Chaves de condição de *valor único* têm no máximo um valor no contexto de autorização (a solicitação ou o recurso). Por exemplo, como cada chamada de API pode ser originada de apenas uma Conta da AWS, [kms: CallerAccount](#conditions-kms-caller-account) é uma chave de condição de valor único. Não use um operador de conjunto com uma chave de condição de valor único. 
+ Chaves de condição de *vários valores* têm diversos valores no contexto de autorização (a solicitação ou o recurso). Por exemplo, como cada chave KMS pode ter vários aliases, [kms: ResourceAliases](#conditions-kms-resource-aliases) pode ter vários valores. Chaves de condição de vários valores exigem um operador de conjunto. 

Observe que a diferença entre chaves de condição de valor único e de vários valores depende do número de valores no contexto de autorização, e não do número de valores na condição da política.

**Atenção**  
O uso de um operador de conjunto com uma chave de condição de valor único pode criar uma instrução de política excessivamente permissiva (ou excessivamente restritiva). Use operadores de conjunto somente com chaves de condição de vários valores.  
Se você criar ou atualizar uma política que inclua um operador de `ForAllValues` conjunto com kms:EncryptionContext: *chave de contexto* ou chaves de `aws:RequestTag/tag-key` condição, AWS KMS retornará a seguinte mensagem de erro:  
`OverlyPermissiveCondition: Using the ForAllValues set operator with a single-valued condition key matches requests without the specified [encryption context or tag] or with an unspecified [encryption context or tag]. To fix, remove ForAllValues.`

Para obter informações detalhadas sobre os operadores de conjunto `ForAnyValue` e `ForAllValues`, consulte [Usar várias chaves e valores](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions), no *Manual do usuário do IAM*. Para obter informações sobre o risco de usar o operador `ForAllValues` set com uma condição de valor único, consulte [Aviso de segurança — ForAllValues com chave de valor único](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html#access-analyzer-reference-policy-checks-security-warning-forallvalues-with-single-valued-key) no *Guia do usuário do IAM*.

**Topics**
+ [kms:BypassPolicyLockoutSafetyCheck](#conditions-kms-bypass-policy-lockout-safety-check)
+ [kms:CallerAccount](#conditions-kms-caller-account)
+ [kms: CustomerMasterKeySpec (obsoleto)](#conditions-kms-key-spec-replaced)
+ [kms: CustomerMasterKeyUsage (obsoleto)](#conditions-kms-key-usage-replaced)
+ [kms:DataKeyPairSpec](#conditions-kms-data-key-spec)
+ [kms:EncryptionAlgorithm](#conditions-kms-encryption-algorithm)
+ [*kms:EncryptionContext: chave de contexto*](#conditions-kms-encryption-context)
+ [kms:EncryptionContextKeys](#conditions-kms-encryption-context-keys)
+ [kms:ExpirationModel](#conditions-kms-expiration-model)
+ [kms:GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [kms:GrantIsForAWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [kms:GrantOperations](#conditions-kms-grant-operations)
+ [kms:GranteePrincipal](#conditions-kms-grantee-principal)
+ [kms:KeyAgreementAlgorithm](#conditions-kms-key-agreement-algorithm)
+ [kms:KeyOrigin](#conditions-kms-key-origin)
+ [kms:KeySpec](#conditions-kms-key-spec)
+ [kms:KeyUsage](#conditions-kms-key-usage)
+ [kms:MacAlgorithm](#conditions-kms-mac-algorithm)
+ [kms:MessageType](#conditions-kms-message-type)
+ [kms:MultiRegion](#conditions-kms-multiregion)
+ [kms:MultiRegionKeyType](#conditions-kms-multiregion-key-type)
+ [kms:PrimaryRegion](#conditions-kms-primary-region)
+ [kms:ReEncryptOnSameKey](#conditions-kms-reencrypt-on-same-key)
+ [kms:RequestAlias](#conditions-kms-request-alias)
+ [kms:ResourceAliases](#conditions-kms-resource-aliases)
+ [kms:ReplicaRegion](#conditions-kms-replica-region)
+ [kms:RetiringPrincipal](#conditions-kms-retiring-principal)
+ [kms:RotationPeriodInDays](#conditions-kms-rotation-period-in-days)
+ [kms:ScheduleKeyDeletionPendingWindowInDays](#conditions-kms-schedule-key-deletion-pending-window-in-days)
+ [kms:SigningAlgorithm](#conditions-kms-signing-algorithm)
+ [kms:ValidTo](#conditions-kms-valid-to)
+ [kms:ViaService](#conditions-kms-via-service)
+ [kms:WrappingAlgorithm](#conditions-kms-wrapping-algorithm)
+ [kms:WrappingKeySpec](#conditions-kms-wrapping-key-spec)

## kms:BypassPolicyLockoutSafetyCheck
<a name="conditions-kms-bypass-policy-lockout-safety-check"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:BypassPolicyLockoutSafetyCheck`  |  Booleano  | Valor único |  `CreateKey` `PutKeyPolicy`  |  Somente políticas do IAM Políticas de chaves e políticas do IAM  | 

A chave de `kms:BypassPolicyLockoutSafetyCheck` condição controla o acesso às [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)operações [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)e com base no valor do `BypassPolicyLockoutSafetyCheck` parâmetro na solicitação. 

A instrução de política do IAM de exemplo a seguir impede que os usuários ignorem a verificação de segurança de bloqueio da política ao negar a eles a permissão para criar chaves do KMS quando o valor do parâmetro `BypassPolicyLockoutSafetyCheck` na solicitação `CreateKey` é `true.` 

```
{
  "Effect": "Deny",
  "Action": [
    "kms:CreateKey",
    "kms:PutKeyPolicy"
  ],
  "Resource": "*",
  "Condition": {
    "Bool": {
      "kms:BypassPolicyLockoutSafetyCheck": true
    }
  }
}
```

Você também pode usar a chave de condição `kms:BypassPolicyLockoutSafetyCheck` em uma política do IAM ou política de chaves para controlar o acesso à operação `PutKeyPolicy`. A declaração de política de exemplo a seguir de uma política de chaves impede que os usuários ignorem a verificação de segurança de bloqueio da política ao alterar a política de uma chave do KMS. 

Em vez de usar `Deny` de forma explícita, esta declaração de política usa `Allow` com o [operador de condição nula](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) para permitir o acesso somente quando a solicitação não inclui o parâmetro `BypassPolicyLockoutSafetyCheck`. Quando o parâmetro não for usado, o valor padrão será `false`. Essa instrução de política um pouco mais fraca pode ser substituída no caso raro em que uma derivação é necessária. 

```
{
  "Effect": "Allow",
  "Action": "kms:PutKeyPolicy",
  "Resource": "*",
  "Condition": {
    "Null": {
      "kms:BypassPolicyLockoutSafetyCheck": true
    }
  }
}
```

**Consulte também**
+ [kms:KeySpec](#conditions-kms-key-spec)
+ [kms:KeyOrigin](#conditions-kms-key-origin)
+ [kms:KeyUsage](#conditions-kms-key-usage)

## kms:CallerAccount
<a name="conditions-kms-caller-account"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:CallerAccount`  |  String  | Valor único |  Operações de recursos de chaves do KMS Operações do armazenamento de chaves personalizado  |  Políticas de chaves e políticas do IAM  | 

É possível usar essa chave de condição para permitir ou negar acesso a todas as identidades (usuários e perfis) em uma Conta da AWS. Em políticas de chaves, você pode usar o elemento `Principal` para especificar as identidades às quais a declaração de política se aplica. A sintaxe do elemento `Principal` não fornece uma forma de especificar todas as identidades em uma Conta da AWS. Mas você pode obter esse efeito combinando essa chave de condição com um `Principal` elemento que especifica todas as AWS identidades.

Você pode usá-lo para controlar o acesso a qualquer *operação de recurso de chave KMS*, ou seja, qualquer AWS KMS operação que use uma chave KMS específica. Para identificar as operações de recursos de chaves do KMS, na [Tabela de ações e recursos](kms-api-permissions-reference.md#kms-api-permissions-reference-table), procure um valor de `KMS key` na coluna `Resources` para a operação. Ele também é válido para operações que gerenciam [armazenamentos de chaves personalizados](key-store-overview.md#custom-key-store-overview).

Por exemplo, a instrução de política de chaves a seguir demonstra como usar a chave de condição `kms:CallerAccount`. Esta declaração de política está na política principal do Chave gerenciada pela AWS Amazon EBS. Ele combina um `Principal` elemento que especifica todas as AWS identidades com a chave de `kms:CallerAccount` condição para permitir efetivamente o acesso a todas as identidades em 111122223333. Conta da AWS Ele contém uma chave de AWS KMS condição adicional (`kms:ViaService`) para limitar ainda mais as permissões, permitindo somente solicitações provenientes do Amazon EBS. Para obter mais informações, consulte [kms:ViaService](#conditions-kms-via-service).

```
{
  "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS",
  "Effect": "Allow",
  "Principal": {"AWS": "*"},
  "Condition": {
    "StringEquals": {
      "kms:CallerAccount": "111122223333",
      "kms:ViaService": "ec2.us-west-2.amazonaws.com"
    }
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:CreateGrant",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}
```

## kms: CustomerMasterKeySpec (obsoleto)
<a name="conditions-kms-key-spec-replaced"></a>

A chave de condição `kms:CustomerMasterKeySpec` está defasada. Em vez disso, use a chave de KeySpec condição [kms:](#conditions-kms-key-spec).

As chaves de condição `kms:CustomerMasterKeySpec` e `kms:KeySpec` funcionam da mesma forma. Apenas os nomes são diferentes. Recomendamos usar o `kms:KeySpec`. No entanto, para evitar alterações significativas, AWS KMS suporta as duas teclas de condição.

## kms: CustomerMasterKeyUsage (obsoleto)
<a name="conditions-kms-key-usage-replaced"></a>

A chave de condição `kms:CustomerMasterKeyUsage` está defasada. Em vez disso, use a chave de KeyUsage condição [kms:](#conditions-kms-key-usage).

As chaves de condição `kms:CustomerMasterKeyUsage` e `kms:KeyUsage` funcionam da mesma forma. Apenas os nomes são diferentes. Recomendamos usar o `kms:KeyUsage`. No entanto, para evitar alterações significativas, AWS KMS suporta as duas teclas de condição.

## kms:DataKeyPairSpec
<a name="conditions-kms-data-key-spec"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:DataKeyPairSpec`  |  String  | Valor único |  `GenerateDataKeyPair` `GenerateDataKeyPairWithoutPlaintext`  |  Políticas de chaves e políticas do IAM  | 

Você pode usar essa chave de condição para controlar o acesso às [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html)operações [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)e com base no valor do `KeyPairSpec` parâmetro na solicitação. Por exemplo, é possível permitir que os usuários gerem somente tipos de pares de chaves de dados específicos.

O exemplo de instrução de política de chaves a seguir usa a chave de condição `kms:DataKeyPairSpec` para permitir que os usuários usem a chave do KMS para gerar somente pares de chaves de dados RSA.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": [
    "kms:GenerateDataKeyPair",
    "kms:GenerateDataKeyPairWithoutPlaintext"
  ],
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:DataKeyPairSpec": "RSA*"
    }
  }
}
```

**Consulte também**
+ [kms:KeySpec](#conditions-kms-key-spec)
+ [kms:EncryptionAlgorithm](#conditions-kms-encryption-algorithm)
+ [*kms:EncryptionContext: chave de contexto*](#conditions-kms-encryption-context)
+ [kms:EncryptionContextKeys](#conditions-kms-encryption-context-keys)

## kms:EncryptionAlgorithm
<a name="conditions-kms-encryption-algorithm"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:EncryptionAlgorithm`  |  String  | Valor único |  `Decrypt` `Encrypt` `GenerateDataKey` `GenerateDataKeyPair` `GenerateDataKeyPairWithoutPlaintext` `GenerateDataKeyWithoutPlaintext` `ReEncrypt`  |  Políticas de chaves e políticas do IAM  | 

É possível usar a chave de condição `kms:EncryptionAlgorithm` para controlar o acesso às operações de criptografia com base no algoritmo de criptografia usado na operação. Para as [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)operações [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html), [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) e, ele controla o acesso com base no valor do [EncryptionAlgorithm](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html#KMS-Decrypt-request-EncryptionAlgorithm)parâmetro na solicitação. Para operações que geram chaves de dados e pares de chaves de dados, ela controla o acesso com base no algoritmo de criptografia que é usado para criptografar a chave de dados.

Essa chave de condição não tem efeito nas operações realizadas fora da AWS KMS, como a criptografia com a chave pública em um par de chaves KMS assimétrico fora da. AWS KMS

**EncryptionAlgorithm parâmetro em uma solicitação**

Para permitir que os usuários usem apenas um algoritmo de criptografia específico com uma chave do KMS, use uma instrução de política com um efeito `Deny` e um operador de condição `StringNotEquals`. Por exemplo, o seguinte exemplo de instrução de política de chaves proíbe que as entidades principais capazes de assumir a função `ExampleRole` usem essa chave do KMS nas operações de criptografia especificadas, a menos que o algoritmo de criptografia na solicitação seja `RSAES_OAEP_SHA_256`, um algoritmo criptográfico assimétrico usado em chaves RSA do KMS.

Diferente de uma instrução de política que permite que um usuário utilize um algoritmo de criptografia específico, uma instrução de política com um duplo negativo como essa evita que outras políticas e concessões da chave do KMS permitam que essa função use outros algoritmos de criptografia. O `Deny` nessa instrução de política de chaves tem precedência sobre qualquer política de chaves ou política do IAM com um efeito `Allow` e tem precedência sobre todas as concessões dessa chave do KMS e suas entidades principais.

```
{
  "Sid": "Allow only one encryption algorithm with this asymmetric KMS key",
  "Effect": "Deny",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*"
  ],
  "Resource": "*",
  "Condition": {
    "StringNotEquals": {
      "kms:EncryptionAlgorithm": "RSAES_OAEP_SHA_256"
    }
  }
}
```

**Algoritmo de criptografia usado para a operação**

Você também pode usar a chave de condição `kms:EncryptionAlgorithm` para controlar o acesso às operações com base no algoritmo de criptografia utilizado na operação, mesmo quando esse algoritmo não está especificado na solicitação. Isso permite exigir ou proibir o algoritmo `SYMMETRIC_DEFAULT`, que pode não ser especificado em uma solicitação por ser o valor padrão.

Também é possível usar a chave de condição `kms:EncryptionAlgorithm` para controlar o acesso às operações que geram chaves de dados e pares de chaves de dados. Essas operações só usam chaves do KMS de criptografia simétrica e o algoritmo `SYMMETRIC_DEFAULT`.

Por exemplo, essa política do IAM limita seus principais à criptografia simétrica. Ela nega o acesso a qualquer chave do KMS na conta de exemplo para operações de criptografia, a menos que o algoritmo de criptografia especificado na solicitação ou usado na operação seja SYMMETRIC\$1DEFAULT. Incluindo `GenerateDataKey*` [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)acréscimos [GenerateDataKey[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html),, e [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html)às permissões. A condição não tem efeito nessas operações porque elas sempre utilizam um algoritmo de criptografia simétrica.

```
{
  "Sid": "AllowOnlySymmetricAlgorithm",
  "Effect": "Deny",
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*"
  ],
  "Resource": "arn:aws:kms:us-west-2:111122223333:key/*",
  "Condition": {
    "StringNotEquals": {
      "kms:EncryptionAlgorithm": "SYMMETRIC_DEFAULT"
    }
  }
}
```

**Consulte também**
+ [kms:MacAlgorithm](#conditions-kms-mac-algorithm)
+ [kms:SigningAlgorithm](#conditions-kms-signing-algorithm)

## *kms:EncryptionContext: chave de contexto*
<a name="conditions-kms-encryption-context"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:EncryptionContext:context-key`  |  String  | Valor único |  `CreateGrant` `Encrypt` `Decrypt` `GenerateDataKey` `GenerateDataKeyPair` `GenerateDataKeyPairWithoutPlaintext` `GenerateDataKeyWithoutPlaintext` `ReEncrypt` `RetireGrant`  |  Políticas de chaves e políticas do IAM  | 

É possível usar a chave de condição `kms:EncryptionContext:context-key` para controlar o acesso a uma [chave do KMS de criptografia simétrica](symm-asymm-choose-key-spec.md#symmetric-cmks) com base no [contexto de criptografia](encrypt_context.md) em uma solicitação de uma [operação criptográfica](kms-cryptography.md#cryptographic-operations). Use essa chave de condição para avaliar a chave e o valor no par de contexto de criptografia. Para avaliar somente as chaves do contexto de criptografia ou exigir um contexto de criptografia, independentemente das chaves ou dos valores, use a chave de EncryptionContextKeys condição [kms:](#conditions-kms-encryption-context-keys).

**nota**  
Os valores das chaves de condição devem estar em conformidade com as regras de caracteres para políticas de chaves e políticas do IAM. Alguns caracteres que são válidos em um contexto de criptografia não são válidos em políticas. Talvez você não consiga usar essa chave de condição para expressar todos os valores válidos de contexto de criptografia. Para obter detalhes sobre as regras de documento de política de chaves, consulte [Formato de política de chaves](key-policy-overview.md#key-policy-format). Para obter detalhes sobre as regras de documento de política do IAM, consulte [Requisitos de nome do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-names) no *Guia do usuário do IAM*.

Não é possível especificar um contexto de criptografia em uma operação criptográfica com uma [chave do KMS assimétrica](symmetric-asymmetric.md) ou uma [chave do KMS de Hash-based message authentication code (HMAC – Código de autenticação de mensagem por hash)](hmac.md). Algoritmos assimétricos e algoritmos de Message authentication code (MAC – Código de autenticação de mensagem) não são compatíveis com um contexto de criptografia.

Para usar a chave de condição kms:EncryptionContext: *chave de contexto*, substitua o *context-key* espaço reservado pela chave de contexto de criptografia. Substitua o espaço reservado *context-value* pelo valor de contexto de criptografia.

```
"kms:EncryptionContext:context-key": "context-value"
```

Por exemplo, a seguinte chave de condição especifica um contexto de criptografia no qual a chave é `AppName` e o valor é `ExampleApp` (`AppName = ExampleApp`).

```
"kms:EncryptionContext:AppName": "ExampleApp"
```

Esta é uma [chave de condição de valor único](#set-operators). A chave na chave de condição especifica uma chave de contexto de criptografia específica (*context-key*). Embora seja possível incluir vários pares de contexto de criptografia em cada solicitação de API, o par de contexto de criptografia com a *context-key* especificada pode ter somente um valor. Por exemplo, a chave de condição `kms:EncryptionContext:Department` aplica-se somente a pares de contexto de criptografia com uma chave `Department`, e qualquer par de contexto de criptografia com a chave `Department` pode ter somente um valor.

Não use um operador de conjunto com a chave de condição `kms:EncryptionContext:context-key`. Se você criar uma instrução de política com uma ação `Allow`, a chave de condição `kms:EncryptionContext:context-key` e o operador de conjunto `ForAllValues`, a condição permitirá solicitações sem contexto de criptografia e solicitações com pares de contexto de criptografia que não estão especificados na condição de política.

**Atenção**  
Não use um operador de conjunto `ForAnyValue` ou `ForAllValues` com essa chave de condição de valor único. Esses operadores de conjunto podem criar uma condição de política que não requer valores que você pretende exigir e permite valores que você pretende proibir.  
Se você criar ou atualizar uma política que inclua um operador de `ForAllValues` conjunto com a *chave de contexto kms: EncryptionContext*:, AWS KMS retornará a seguinte mensagem de erro:  
`OverlyPermissiveCondition:EncryptionContext: Using the ForAllValues set operator with a single-valued condition key matches requests without the specified encryption context or with an unspecified encryption context. To fix, remove ForAllValues.`

Para exigir um par de contexto de criptografia específico, use a chave de condição `kms:EncryptionContext:context-key` com o operador `StringEquals`.

A seguinte instrução de política de chaves de exemplo permite que as entidades principais que podem assumir a função usem a chave do KMS em uma solicitação `GenerateDataKey` apenas quando o contexto de criptografia nessa solicitação inclui o par `AppName:ExampleApp`. Outros pares de contexto de criptografia são permitidos.

O nome da chave não é sensível a maiúsculas e minúsculas. A diferenciação de maiúsculas e minúsculas do valor é determinada pelo operador de condição, como `StringEquals`. Para obter detalhes, consulte [Diferenciação de letras maiúsculas e minúsculas da condição de contexto de criptografia](#conditions-kms-encryption-context-case).

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:AppName": "ExampleApp"
    }
  }
}
```

Para exigir um par de contexto de criptografia e proibir todos os outros pares de contexto de criptografia, use ambos kms:EncryptionContext: *chave de contexto* e [`kms:EncryptionContextKeys`](#conditions-kms-encryption-context-keys)na declaração de política. A instrução de política de exemplo a seguir usa a condição `kms:EncryptionContext:AppName` para exigir o par de contextos de criptografia `AppName=ExampleApp` na solicitação. Ela também usa uma chave de condição `kms:EncryptionContextKeys` com o operador de conjunto `ForAllValues` para permitir apenas a chave de contexto de criptografia `AppName`. 

O operador de conjunto `ForAllValues` limita as chaves de contexto de criptografia na solicitação para `AppName`. Se a condição `kms:EncryptionContextKeys` com o operador de conjunto `ForAllValues` tivesse sido usada sozinha em uma instrução de política, esse operador de conjunto permitiria solicitações sem contexto de criptografia. No entanto, se a solicitação não tivesse um contexto de criptografia, a condição `kms:EncryptionContext:AppName` falharia. Para detalhes sobre o operador de conjunto `ForAllValues`, consulte[Usar várias chaves e valores](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions), no *Manual do usuário do IAM*.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/KeyUsers"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:AppName": "ExampleApp"
    },
    "ForAllValues:StringEquals": {
      "kms:EncryptionContextKeys": [
        "AppName"
      ]
    }
  }
}
```

Também é possível usar essa chave de condição para negar acesso a uma chave do KMS para uma operação específica. O exemplo a seguir de instrução de política de chaves usa um efeito `Deny` para proibir a entidade principal de usar a chave do KMS quando o contexto de criptografia na solicitação inclui um par de contextos de criptografia `Stage=Restricted`. Essa condição permite uma solicitação com outros pares de contextos de criptografia, incluindo pares de contextos de criptografia com a chave `Stage` e outros valores, como `Stage=Test`.

```
{
  "Effect": "Deny",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:Stage": "Restricted"
    }
  }
}
```

### Usar vários pares de contextos de criptografia
<a name="conditions-kms-encryption-context-many"></a>

Você pode exigir ou proibir vários pares de contextos de criptografia. Também pode exigir um dos vários pares de contextos de criptografia. Para obter detalhes sobre a lógica usada para interpretar essas condições, consulte [Criar uma condição com várias chaves ou valores](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html), no Manual do usuário do IAM. 

**nota**  
As versões anteriores deste tópico exibiam declarações de política que usavam os operadores `ForAnyValue` e `ForAllValues` definiam com a chave de condição kms:EncryptionContext: *chave de contexto*. Usar um operador de conjunto com uma [chave de condição de valor único](#set-operators) pode resultar em políticas que permitem solicitações sem contexto de criptografia e pares de contextos de criptografia não especificados.   
Por exemplo, uma condição de política com o efeito `Allow`, o operador de conjunto `ForAllValues` e a chave de condição `"kms:EncryptionContext:Department": "IT"` não limita o contexto de criptografia ao par "Department=IT". Ele permite solicitações sem contexto de criptografia e solicitações com pares de contextos de criptografia não especificados, como `Stage=Restricted`.  
Revise suas políticas e elimine o operador definido de qualquer condição com kms:EncryptionContext: *context-key*. Tentativas de criar ou atualizar uma política com esse formato falham com uma exceção `OverlyPermissiveCondition`. Para resolver o erro, exclua o operador de conjunto.

Para exigir vários pares de contextos de criptografia, liste esses pares na mesma condição. A seguinte instrução de política de chaves de exemplo requer dois pares de contextos de criptografia: `Department=IT` e `Project=Alpha`. Como as condições têm chaves diferentes (`kms:EncryptionContext:Department` e `kms:EncryptionContext:Project`), elas são implicitamente conectadas por um operador AND. Outros pares de contextos de criptografia são permitidos, mas não são necessários.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:Decrypt",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:Department": "IT",
      "kms:EncryptionContext:Project": "Alpha"
    }
  }
}
```

Para exigir um par de contextos de criptografia OU outro par, coloque cada chave de condição em uma instrução de política separada. O exemplo a seguir de política de chaves requer pares `Department=IT` *ou* `Project=Alpha`, ou ambos. Outros pares de contextos de criptografia são permitidos, mas não são necessários.

```
{
 "Effect": "Allow",
 "Principal": {
  "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
 },
 "Action": "kms:GenerateDataKey",
 "Resource": "*",
 "Condition": {
  "StringEquals": {
   "kms:EncryptionContext:Department": "IT"
  }
 }
},
{
 "Effect": "Allow",
 "Principal": {
  "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
 },
 "Action": "kms:GenerateDataKey",
 "Resource": "*",
 "Condition": {
  "StringEquals": {
   "kms:EncryptionContext:Project": "Alpha"
  }
 }
}
```

Para exigir pares de criptografia específicos e excluir todos os outros pares de contexto de criptografia, use kms:EncryptionContext: *chave de contexto* e [`kms:EncryptionContextKeys`](#conditions-kms-encryption-context-keys)na declaração de política. A seguinte declaração de política de chaves usa a condição kms:EncryptionContext: *context-key* para exigir um contexto de criptografia com pares `Department=IT` *e*`Project=Alpha`. Ela usa uma chave de condição `kms:EncryptionContextKeys` com o operador de conjunto `ForAllValues` para permitir apenas as chaves de contexto de criptografia `Department` e `Project`. 

O operador de conjunto `ForAllValues` limita as chaves de contexto de criptografia na solicitação para `Department` e `Project`. Se fosse usado sozinho em uma condição, esse operador de conjunto permitiria solicitações sem contexto de criptografia, mas nessa configuração, a *chave de contexto kms: EncryptionContext*: nessa condição falharia.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:Department": "IT",
      "kms:EncryptionContext:Project": "Alpha"
    },
    "ForAllValues:StringEquals": {
      "kms:EncryptionContextKeys": [
        "Department",
        "Project"
      ]
    }
  }
}
```

Você também pode proibir vários pares de contexto de criptografia. O seguinte exemplo de instrução de política de chaves usa um efeito `Deny` para proibir a entidade principal de usar as chaves do KMS se o contexto de criptografia na solicitação incluir um par `Stage=Restricted` ou `Stage=Production`. 

Vários valores (`Restricted` e `Production`) para a mesma chave (`kms:EncryptionContext:Stage`) são implicitamente conectados por OR. Para obter mais detalhes, consulte [Lógica de avaliação para condições com várias chaves ou valores](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multiple-conditions-eval), no *Manual do usuário do IAM*.

```
{
  "Effect": "Deny",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:Stage": [
         "Restricted",
         "Production"
      ] 
    }
  }
}
```

### Diferenciação de letras maiúsculas e minúsculas da condição de contexto de criptografia
<a name="conditions-kms-encryption-context-case"></a>

O contexto de criptografia especificado em uma operação de criptografia deve ser uma correspondência exata, que diferencia maiúsculas de minúsculas para o contexto de criptografia especificado na operação de criptografia. Somente a ordem dos pares em um contexto de criptografia com vários pares pode variar.

No entanto, em condições de política, a chave de condição não diferencia maiúsculas de minúsculas. A diferenciação de maiúsculas e minúsculas do valor da condição é determinada pelo [operador de condição de política](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) que você usa, como `StringEquals` ou `StringEqualsIgnoreCase`.

Dessa forma, a chave de condição, que consiste do prefixo `kms:EncryptionContext:` e da substituição *`context-key`*, não diferencia maiúsculas de minúsculas. Uma política que usa essa condição não verifica a capitalização dos elementos da chave de condição. A diferenciação de maiúsculas e minúsculas do valor, ou seja, a substituição *`context-value`*, é determinada pelo operador de condição de política.

Por exemplo, a declaração de política a seguir permite a operação quando o contexto de criptografia inclui uma chave `Appname`, independentemente da sua capitalização. A condição `StringEquals` exige que `ExampleApp` seja capitalizado da maneira como foi especificado. 

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:Decrypt",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:Appname": "ExampleApp"
    }
  }
}
```

Para exigir uma chave de contexto de criptografia com distinção entre maiúsculas e minúsculas, use a condição [kms: EncryptionContextKeys policy com um operador](#conditions-kms-encryption-context-keys) de condição que diferencia maiúsculas de minúsculas, como. `StringEquals` Nesta condição de política, como a chave de contexto de criptografia é o valor da condição de política, o recurso é determinado pelo operador da condição. 

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "ForAnyValue:StringEquals": {
      "kms:EncryptionContextKeys": "AppName"
    }
  }
}
```

Para exigir uma avaliação com distinção entre maiúsculas e minúsculas da chave de contexto e do valor da criptografia, use as condições de política de *chave de contexto `kms:EncryptionContextKeys`* e kms:EncryptionContext: juntas na mesma declaração de política. O operador de condição sensível a maiúsculas e minúsculas (como`StringEquals`) sempre aplica-se ao valor da condição. A chave de contexto de criptografia (como `AppName`) é o valor da condição `kms:EncryptionContextKeys`. O valor do contexto de criptografia (como`ExampleApp`) é o valor da condição kms:EncryptionContext: *context-key*.

Por exemplo, na instrução de política de chaves a seguir, como o operador `StringEquals` diferencia maiúsculas de minúsculas, a chave de contexto de criptografia e o valor de contexto de criptografia diferenciam maiúsculas de minúsculas.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "ForAnyValue:StringEquals": {
      "kms:EncryptionContextKeys": "AppName"
    },
    "StringEquals": {
      "kms:EncryptionContext:AppName": "ExampleApp"
    }
  }
}
```

### Usar variáveis em uma condição de contexto de criptografia
<a name="conditions-kms-encryption-context-variables"></a>

A chave e o valor em um par de contexto de criptografia devem ser strings literais simples. Não podem ser números inteiros, objetos, ou qualquer tipo que não esteja totalmente resolvido. Se você usar um tipo diferente, como um número inteiro ou flutuante, AWS KMS interprete-o como uma string literal.

```
"encryptionContext": {
    "department": "10103.0"
}
```

No entanto, o valor da chave de condição `kms:EncryptionContext:context-key` pode ser uma [variável de política do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html). Essas variáveis de política são resolvidas em runtime com base nos valores da solicitação. Por exemplo, o `aws:CurrentTime ` é resolvido como a hora da solicitação e `aws:username` é resolvido como o nome amigável do chamador.

É possível usar essas variáveis de política para criar uma declaração de política com uma condição que requer informações muito específicas em um contexto de criptografia, como o nome de usuário do chamador. Como contém uma variável, é possível usar a mesma declaração de política para todos os usuários que podem assumir a função. Não é necessário escrever uma declaração de política diferente para cada usuário.

Considere uma situação em que você deseja que todos os usuários que podem assumir uma função usem a mesma chave do KMS para criptografar e descriptografar seus dados. No entanto, você deseja permitir que eles descriptografem somente os dados que criptografaram. Comece exigindo que cada solicitação AWS KMS inclua um contexto de criptografia em que a chave esteja `user` e o valor seja o nome de AWS usuário do chamador, como o seguinte.

```
"encryptionContext": {
    "user": "bob"
}
```

Para impor esse requisito, é possível usar uma declaração de política como a do exemplo a seguir. Essa instrução de política concede à função `TestTeam` permissão para criptografar e descriptografar dados com a chave do KMS. No entanto, a permissão será válida somente quando o contexto de criptografia na solicitação incluir um par `"user": "<username>"`. Para representar o nome do usuário, a condição usa a variável de política [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-infotouse](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-infotouse).

Quando a solicitação for avaliada, o nome de usuário do chamador substituirá a variável na condição. Dessa forma, a condição requer um contexto de criptografia de `"user": "bob"` para "bob" e `"user": "alice"` para "alice".

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/TestTeam"
  },
  "Action": [
    "kms:Decrypt",
    "kms:Encrypt"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:user": "${aws:username}"
    }
  }
}
```

É possível usar uma variável de política do IAM somente no valor do par de chaves da condição `kms:EncryptionContext:context-key`. Não é possível usar uma variável na chave.

Também não é possível usar [chaves de contexto específicas do provedor](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_user-id.html) em variáveis. Essas chaves de contexto identificam de forma exclusiva os usuários que se conectaram AWS usando a federação de identidade da web. 

Como todas as variáveis, essas variáveis podem ser usadas apenas na condição de política `kms:EncryptionContext:context-key`, não no contexto de criptografia real. E elas podem ser usadas apenas no valor da condição, não na chave.

Por exemplo, a declaração de política de chaves a seguir é semelhante à anterior. No entanto, a condição requer um contexto de criptografia em que a chave é `sub` e o valor identifica exclusivamente um usuário conectado a um grupo de usuários do Amazon Cognito. Para obter detalhes sobre como identificar usuários e funções no Amazon Cognito, consulte [Funções do IAM](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html), no [Guia do desenvolvedor do Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/).

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/TestTeam"
  },
  "Action": [
    "kms:Decrypt",
    "kms:Encrypt"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
       "kms:EncryptionContext:sub": "${cognito-identity.amazonaws.com:sub}"
    }
  }
}
```

**Consulte também**
+ [kms:EncryptionContextKeys](#conditions-kms-encryption-context-keys)
+ [kms:GrantConstraintType](#conditions-kms-grant-constraint-type)

## kms:EncryptionContextKeys
<a name="conditions-kms-encryption-context-keys"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:EncryptionContextKeys`  |  String (lista)  | Vários valores |  `CreateGrant` `Decrypt` `Encrypt` `GenerateDataKey` `GenerateDataKeyPair` `GenerateDataKeyPairWithoutPlaintext` `GenerateDataKeyWithoutPlaintext` `ReEncrypt` `RetireGrant`  |  Políticas de chaves e políticas do IAM  | 

É possível usar a chave de condição `kms:EncryptionContextKeys` para controlar o acesso a uma [chave do KMS de criptografia simétrica](symm-asymm-choose-key-spec.md#symmetric-cmks) com base no [contexto de criptografia](encrypt_context.md) em uma solicitação de uma operação criptográfica. Use essa chave de condição para avaliar apenas a chave em cada par de contexto de criptografia. Para avaliar tanto a chave quanto o valor no contexto de criptografia, use a chave de condição `kms:EncryptionContext:context-key`.

Não é possível especificar um contexto de criptografia em uma operação criptográfica com uma [chave do KMS assimétrica](symmetric-asymmetric.md) ou uma [chave do KMS de Hash-based message authentication code (HMAC – Código de autenticação de mensagem por hash)](hmac.md). Algoritmos assimétricos e algoritmos de Message authentication code (MAC – Código de autenticação de mensagem) não são compatíveis com um contexto de criptografia.

**nota**  
Os valores da chave de condição, incluindo uma chave de contexto de criptografia, devem estar em conformidade com as regras de caracteres e codificação das políticas de AWS KMS chaves. Talvez você não consiga usar essa chave de condição para expressar todas as chaves válidas de contexto de criptografia. Para obter detalhes sobre as regras de documento de política de chaves, consulte [Formato de política de chaves](key-policy-overview.md#key-policy-format). Para obter detalhes sobre as regras de documento de política do IAM, consulte [Requisitos de nome do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-names) no *Guia do usuário do IAM*.

Esta é uma [chave de condição de vários valores](#set-operators). Você pode especificar vários pares de contexto de criptografia em cada solicitação de API. `kms:EncryptionContextKeys` compara as chaves de contexto de criptografia na solicitação com o conjunto de chaves de contexto de criptografia na política. Para determinar como esses conjuntos são comparados, você deve fornecer um operador de conjunto `ForAnyValue` ou `ForAllValues` na condição de política. Para detalhes sobre os operadores de conjunto, consulte[Usar várias chaves e valores](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions), no Manual do usuário do IAM.
+ `ForAnyValue`: pelo menos uma chave de contexto de criptografia na solicitação deve corresponder a uma chave de contexto de criptografia na condição da política. Outras chaves de contexto de criptografia são permitidas. Se a solicitação não tiver um contexto de criptografia, a condição não será atendida.
+ `ForAllValues`: cada chave de contexto de criptografia na solicitação deve corresponder a uma chave de contexto de criptografia na condição da política. Esse operador de conjunto limita as chaves de contexto de criptografia àquelas na condição de política. Ele não requer uma chave de contexto de criptografia, mas proíbe chaves de contexto de criptografia não especificadas.

O exemplo a seguir de instrução de política de chaves usa a chave de condição `kms:EncryptionContextKeys` com o operador de conjunto `ForAnyValue`. Essa instrução de política permite o uso de uma chave do KMS para as operações especificadas, mas somente quando pelo menos um dos pares de contextos de criptografia na solicitação inclui a chave `AppName`, independentemente do seu valor. 

Por exemplo, essa instrução de política de chaves permite uma solicitação `GenerateDataKey` com dois pares de contextos de criptografia, `AppName=Helper` e `Project=Alpha`, pois o primeiro par de contextos de criptografia atende à condição. Uma solicitação com apenas `Project=Alpha` ou sem um contexto de criptografia falharia.

Como a operação de [StringEquals](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)condição diferencia maiúsculas de minúsculas, essa declaração de política exige a ortografia e as maiúsculas e minúsculas da chave de contexto de criptografia. No entanto, você pode usar um operador de condição que ignora a capitalização da chave, como `StringEqualsIgnoreCase`.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": [
    "kms:Encrypt",
    "kms:GenerateDataKey*"
  ],
  "Resource": "*",
  "Condition": {
    "ForAnyValue:StringEquals": {
      "kms:EncryptionContextKeys": "AppName"
    }
  }
}
```

Você também pode usar a chave de condição `kms:EncryptionContextKeys` para exigir um contexto de criptografia (qualquer um) em operações de criptografia que usam a chave do KMS. 

A instrução de política de exemplo a seguir usa a chave de condição `kms:EncryptionContextKeys` com o [Operador de condição nula](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) para permitir o acesso a uma chave do KMS apenas quando o contexto de criptografia na solicitação da API não é nulo. Essa condição não confere as chaves ou os valores do contexto de criptografia. Ela só verifica se o contexto de criptografia existe. 

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": [
    "kms:Encrypt",
    "kms:GenerateDataKey*"
  ],
  "Resource": "*",
  "Condition": {
    "Null": {
      "kms:EncryptionContextKeys": false
    }
  }
}
```

**Consulte também**
+ [*kms:EncryptionContext: chave de contexto*](#conditions-kms-encryption-context)
+ [kms:GrantConstraintType](#conditions-kms-grant-constraint-type)

## kms:ExpirationModel
<a name="conditions-kms-expiration-model"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:ExpirationModel`  |  String  | Valor único |  `ImportKeyMaterial`  |  Políticas de chaves e políticas do IAM  | 

A chave de `kms:ExpirationModel` condição controla o acesso à [ImportKeyMaterial](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html)operação com base no valor do [ExpirationModel](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ExpirationModel)parâmetro na solicitação. 

`ExpirationModel` é um parâmetro opcional que determina se o material de chave importada expira. Os valores válidos são `KEY_MATERIAL_EXPIRES` e `KEY_MATERIAL_DOES_NOT_EXPIRE`. `KEY_MATERIAL_EXPIRES` é o valor padrão. 

A data e a hora de expiração são determinadas pelo valor do [ValidTo](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ValidTo)parâmetro. O parâmetro `ValidTo` só não será necessário se o valor do parâmetro `ExpirationModel` for `KEY_MATERIAL_DOES_NOT_EXPIRE`. Você também pode usar a chave de ValidTo condição [kms:](#conditions-kms-valid-to) para exigir uma data de expiração específica como condição de acesso.

A instrução de política exemplificada a seguir usa a chave de condição `kms:ExpirationModel` para permitir que os usuários importem o material de chave para uma chave do KMS somente quando a solicitação incluir o parâmetro `ExpirationModel` e seu valor for `KEY_MATERIAL_DOES_NOT_EXPIRE`. 

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:ImportKeyMaterial",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ExpirationModel": "KEY_MATERIAL_DOES_NOT_EXPIRE"
    }
  }
}
```

Também é possível usar a chave de condição `kms:ExpirationModel` para permitir que os usuários importem o material de chave somente quando este expirar. A instrução de política de chave exemplificada a seguir usa a chave de condição `kms:ExpirationModel` com o [operador de condição Null](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) para permitir que os usuários importem o material de chave somente quando a solicitação não tiver um parâmetro `ExpirationModel`. O valor padrão para ExpirationModel é`KEY_MATERIAL_EXPIRES`.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:ImportKeyMaterial",
  "Resource": "*",
  "Condition": {
    "Null": {
      "kms:ExpirationModel": true
    }
  }
}
```

**Consulte também**
+ [kms:ValidTo](#conditions-kms-valid-to)
+ [kms:WrappingAlgorithm](#conditions-kms-wrapping-algorithm)
+ [kms:WrappingKeySpec](#conditions-kms-wrapping-key-spec)

## kms:GrantConstraintType
<a name="conditions-kms-grant-constraint-type"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:GrantConstraintType`  |  String  | Valor único |  `CreateGrant` `RetireGrant`  |  Políticas de chaves e políticas do IAM  | 

Você pode usar essa chave de condição para controlar o acesso à [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operação com base no tipo de [restrição de concessão](create-grant-overview.md#grant-constraints) na solicitação. 

Ao criar uma concessão, você pode especificar uma restrição de concessão para permitir as operações permitidas pela concessão apenas quando um [contexto de criptografia](encrypt_context.md) específico existir. A restrição de concessão pode ser de dois tipos: `EncryptionContextEquals` ou `EncryptionContextSubset`. Você pode usar esta chave de condição para verificar se a solicitação contém um tipo ou outro.

**Importante**  
Não inclua informações confidenciais ou sigilosas nesse campo. Esse campo pode ser exibido em texto simples em CloudTrail registros e outras saídas.

A instrução de política de chaves exemplificada a seguir usa a chave de condição `kms:GrantConstraintType` para permitir que os usuários criem concessões somente quando a solicitação incluir uma restrição de concessão `EncryptionContextEquals`. O exemplo mostra uma declaração de política em uma política de chaves.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:CreateGrant",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:GrantConstraintType": "EncryptionContextEquals"
    }
  }
}
```

**Consulte também**
+ [*kms:EncryptionContext: chave de contexto*](#conditions-kms-encryption-context)
+ [kms:EncryptionContextKeys](#conditions-kms-encryption-context-keys)
+ [kms:GrantIsForAWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [kms:GrantOperations](#conditions-kms-grant-operations)
+ [kms:GranteePrincipal](#conditions-kms-grantee-principal)
+ [kms:RetiringPrincipal](#conditions-kms-retiring-principal)

## kms:GrantIsForAWSResource
<a name="conditions-kms-grant-is-for-aws-resource"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:GrantIsForAWSResource`  |  Booleano  | Valor único |  `CreateGrant` `ListGrants` `RevokeGrant`  |  Políticas de chaves e políticas do IAM  | 

Permite ou nega permissão para as [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)operações [CreateGrant[ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html),, ou somente quando um [AWS serviço integrado AWS KMS](https://aws.amazon.com/kms/features/#AWS_Service_Integration) chama a operação em nome do usuário. Essa condição de política não permite que o usuário chame essas operações de concessão diretamente.

A declaração de política de chaves demonstrativa a seguir usa a chave de condição `kms:GrantIsForAWSResource`. Ele permite que AWS serviços integrados AWS KMS, como o Amazon EBS, criem concessões nessa chave KMS em nome do principal especificado. 

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:CreateGrant",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "kms:GrantIsForAWSResource": true
    }
  }
}
```

**Consulte também**
+ [kms:GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [kms:GrantOperations](#conditions-kms-grant-operations)
+ [kms:GranteePrincipal](#conditions-kms-grantee-principal)
+ [kms:RetiringPrincipal](#conditions-kms-retiring-principal)

## kms:GrantOperations
<a name="conditions-kms-grant-operations"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:GrantOperations`  |  String  | Vários valores |  `CreateGrant`  |  Políticas de chaves e políticas do IAM  | 

Você pode usar essa chave de condição para controlar o acesso à [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operação com base nas [operações de concessão](grants.md#terms-grant-operations) na solicitação. Por exemplo, é possível permitir que os usuários criem concessões que delegam permissão para criptografar, mas não para descriptografar. Para obter mais informações sobre concessões, consulte [Usar concessões](grants.md).

Esta é uma [chave de condição de vários valores](#set-operators). O `kms:GrantOperations` compara o conjunto de operações de concessão na solicitação `CreateGrant` para o conjunto de operações de concessão na política. Para determinar como esses conjuntos são comparados, você deve fornecer um operador de conjunto `ForAnyValue` ou `ForAllValues` na condição de política. Para detalhes sobre os operadores de conjunto, consulte[Usar várias chaves e valores](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions), no Manual do usuário do IAM.
+ `ForAnyValue`: pelo menos uma operação de concessão na solicitação deve corresponder a uma das operações de concessão na condição da política. Outras operações de concessão são permitidas.
+ ForAllValues: cada operação de concessão na solicitação deve corresponder a uma operação de concessão na condição da política. Este operador de conjunto limita as operações de concessão àquelas especificadas na condição da política. Ele não requer uma operação de concessão, mas proíbe operações de concessão não especificadas.

  ForAllValues também retorna verdadeiro quando não há operações de concessão na solicitação, mas `CreateGrant` não permite isso. Se o parâmetro `Operations` ausente ou tiver um valor nulo, o parâmetro `CreateGrant` falhará na solicitação.

A instrução de política de chaves exemplificada a seguir usa a chave de condição `kms:GrantOperations` para criar concessões somente quando as operações de concessões são `Encrypt` e/ou `ReEncryptTo`. Se a concessão incluir quaisquer outras operações, a solicitação `CreateGrant` falhará.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:CreateGrant",
  "Resource": "*",
  "Condition": {
    "ForAllValues:StringEquals": {
      "kms:GrantOperations": [
        "Encrypt",
        "ReEncryptTo"
      ]
    }
  }
}
```

Se você alterar o operador de conjunto na condição de política para `ForAnyValue`, a instrução de política exigirá que pelo menos uma das operações de concessão na concessão seja `Encrypt` ou `ReEncryptTo`, mas permitirá outras operações de concessão, como `Decrypt` ou `ReEncryptFrom`.

**Consulte também**
+ [kms:GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [kms:GrantIsForAWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [kms:GranteePrincipal](#conditions-kms-grantee-principal)
+ [kms:RetiringPrincipal](#conditions-kms-retiring-principal)

## kms:GranteePrincipal
<a name="conditions-kms-grantee-principal"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:GranteePrincipal`  |  String  | Valor único |  `CreateGrant`  |  Políticas do IAM e de chaves  | 

Você pode usar essa chave de condição para controlar o acesso à [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operação com base no valor do [GranteePrincipal](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-GranteePrincipal)parâmetro na solicitação. Por exemplo, é possível criar concessões para usar uma chave do KMS somente quando a entidade principal favorecida na solicitação `CreateGrant` corresponder à entidade principal especificada na instrução de condição.

Para especificar a entidade principal beneficiada, use o nome do recurso da Amazon (ARN) de uma entidade principal da AWS . Os principais válidos incluem usuários do IAM Contas da AWS, funções do IAM, usuários federados e usuários com funções assumidas. Para obter ajuda com a sintaxe do ARN para um diretor, consulte [IAM ARNs no Guia do](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns) usuário do *IAM*.

A instrução de política de chaves exemplificada a seguir usa a chave de condição `kms:GranteePrincipal` para criar concessões para uma chave do KMS somente quando a entidade principal favorecida na concessão for `LimitedAdminRole`.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:CreateGrant",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:GranteePrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole"
    }
  }
}
```

**Consulte também**
+ [kms:GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [kms:GrantIsForAWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [kms:GrantOperations](#conditions-kms-grant-operations)
+ [kms:RetiringPrincipal](#conditions-kms-retiring-principal)

## kms:KeyAgreementAlgorithm
<a name="conditions-kms-key-agreement-algorithm"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:KeyAgreementAlgorithm`  |  String  | Valor único | `DeriveSharedSecret` |  Políticas de chaves e políticas do IAM  | 

Você pode usar a chave de `kms:KeyAgreementAlgorithm` condição para controlar o acesso à [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html)operação com base no valor do `KeyAgreementAlgorithm` parâmetro na solicitação. O único valor válido para `KeyAgreementAlgorithm` é `ECDH`.

Por exemplo, a declaração de política chave a seguir usa a chave de `kms:KeyAgreementAlgorithm` condição para negar todo o acesso, a DeriveSharedSecret menos que `KeyAgreementAlgorithm` seja`ECDH`.

```
{
       "Effect": "Deny",
       "Principal": {
         "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
       },
       "Action": "kms:DeriveSharedSecret",
       "Resource": "*",
       "Condition": {
            "StringNotEquals": {
               "kms:KeyAgreementAlgorithm": "ECDH"
         }
       }
}
```

**Consulte também**
+ [kms:KeyUsage](#conditions-kms-key-usage)

## kms:KeyOrigin
<a name="conditions-kms-key-origin"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:KeyOrigin`  |  String  | Valor único |  `CreateKey` Operações de recursos de chaves do KMS  |  Políticas do IAM Políticas de chaves e políticas do IAM  | 

A chave de condição `kms:KeyOrigin` controla o acesso às operações com base no valor da propriedade `Origin` da chave do KMS que é criada pela operação ou usada nela. Ela funciona como uma condição de recurso ou de solicitação.

Você pode usar essa chave de condição para controlar o acesso à [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operação com base no valor do parâmetro [Origin](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-Origin) na solicitação. Os valores válidos para `Origin` são `AWS_KMS`, `AWS_CLOUDHSM`, `EXTERNAL_KEY_STORE` e `EXTERNAL`. 

Por exemplo, você pode criar uma chave KMS somente quando o material da chave é gerado em AWS KMS (`AWS_KMS`), somente quando o material da chave é gerado em um AWS CloudHSM cluster associado a um armazenamento de [chaves personalizado do CloudHSM](key-store-overview.md#custom-key-store-overview) `AWS_CLOUDHSM` (), somente quando o material da chave é gerado em [um armazenamento de chaves externo](key-store-overview.md#custom-key-store-overview) `EXTERNAL_KEY_STORE` () ou somente quando [o material da chave é](importing-keys.md) importado de uma fonte externa (). `EXTERNAL` 

O exemplo de declaração de política de chaves a seguir usa a chave de `kms:KeyOrigin` condição para criar uma chave KMS somente quando AWS KMS cria o material da chave.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
      },
      "Action": "kms:CreateKey",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:KeyOrigin": "AWS_KMS"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
      },
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:GenerateDataKeyPair",
        "kms:GenerateDataKeyPairWithoutPlaintext",
        "kms:ReEncrypt*"
      ],
      "Resource": "arn:aws:kms:us-west-2:111122223333:key/*",
      "Condition": {
        "StringEquals": {
          "kms:KeyOrigin": "AWS_CLOUDHSM"
        }
      }
    }
  ]
}
```

------

Também é possível usar a chave de condição `kms:KeyOrigin` para controlar o acesso a operações que usam ou gerenciam uma chave do KMS com base na propriedade `Origin` da chave do KMS usada para a operação. A operação deve ser uma *operação de recurso de chave do KMS*, ou seja, uma operação autorizada para uma chave do KMS específica. Para identificar as operações de recursos de chaves do KMS, na [Tabela de ações e recursos](kms-api-permissions-reference.md#kms-api-permissions-reference-table), procure um valor de `KMS key` na coluna `Resources` para a operação.

Por exemplo, a política do IAM a seguir permite que as entidades principais realizem as operações de recursos de chave do KMS especificadas, mas somente com as chaves do KMS na conta que foram criadas em um armazenamento de chaves personalizado.

```
{
  "Effect": "Allow",  
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:GenerateDataKey",
    "kms:GenerateDataKeyWithoutPlaintext",
    "kms:GenerateDataKeyPair",
    "kms:GenerateDataKeyPairWithoutPlaintext",
    "kms:ReEncrypt*"
  ],
  "Resource": "arn:aws:kms:us-west-2:111122223333:key/*",
  "Condition": {
    "StringEquals": {
      "kms:KeyOrigin": "AWS_CLOUDHSM"
    }
  }
}
```

**Consulte também**
+ [kms:BypassPolicyLockoutSafetyCheck](#conditions-kms-bypass-policy-lockout-safety-check)
+ [kms:KeySpec](#conditions-kms-key-spec)
+ [kms:KeyUsage](#conditions-kms-key-usage)

## kms:KeySpec
<a name="conditions-kms-key-spec"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:KeySpec`  |  String  | Valor único |  `CreateKey` Operações de recursos de chaves do KMS |  Políticas do IAM Políticas de chaves e políticas do IAM  | 

A chave de condição `kms:KeySpec` controla o acesso às operações com base no valor da propriedade `KeySpec` da chave do KMS que é criada pela operação ou usada nela. 

Você pode usar essa chave de condição em uma política do IAM para controlar o acesso à [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operação com base no valor do [KeySpec](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-KeySpec)parâmetro em uma `CreateKey` solicitação. Por exemplo, é possível usar essa condição para permitir que os usuários criem somente chaves do KMS de criptografia simétrica ou somente chaves do KMS de HMAC.

O seguinte exemplo de instrução de política do IAM usa a chave de condição `kms:KeySpec` para permitir que as entidades principais criem apenas chaves do KMS assimétricas RSA. A permissão só é válida quando o `KeySpec` na solicitação começa com `RSA_`.

```
{
  "Effect": "Allow",
  "Action": "kms:CreateKey",
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:KeySpec": "RSA_*"
    }
  }
}
```

Também é possível usar a chave de condição `kms:KeySpec` para controlar o acesso a operações que usam ou gerenciam uma chave do KMS com base na propriedade `KeySpec` da chave do KMS usada para a operação. A operação deve ser uma *operação de recurso de chave do KMS*, ou seja, uma operação autorizada para uma chave do KMS específica. Para identificar as operações de recursos de chaves do KMS, na [Tabela de ações e recursos](kms-api-permissions-reference.md#kms-api-permissions-reference-table), procure um valor de `KMS key` na coluna `Resources` para a operação. 

Por exemplo, a seguinte política do IAM permite que as entidades principais executem as operações especificadas de recursos de chave do KMS, mas somente com chaves do KMS de criptografia simétrica na conta. 

```
{
  "Effect": "Allow",
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:DescribeKey"
  ],
  "Resource": "arn:aws:kms:us-west-2:111122223333:key/*",
  "Condition": {
    "StringEquals": {
      "kms:KeySpec": "SYMMETRIC_DEFAULT"
    }
  }
}
```

**Consulte também**
+ [kms:BypassPolicyLockoutSafetyCheck](#conditions-kms-bypass-policy-lockout-safety-check)
+ [kms: CustomerMasterKeySpec (obsoleto)](#conditions-kms-key-spec-replaced)
+ [kms:DataKeyPairSpec](#conditions-kms-data-key-spec)
+ [kms:KeyOrigin](#conditions-kms-key-origin)
+ [kms:KeyUsage](#conditions-kms-key-usage)

## kms:KeyUsage
<a name="conditions-kms-key-usage"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:KeyUsage`  |  String  | Valor único |  `CreateKey` Operações de recursos de chaves do KMS  |  Políticas do IAM Políticas de chaves e políticas do IAM  | 

A chave de condição `kms:KeyUsage` controla o acesso às operações com base no valor da propriedade `KeyUsage` da chave do KMS que é criada pela operação ou usada nela. 

Você pode usar essa chave de condição para controlar o acesso à [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operação com base no valor do [KeyUsage](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-KeyUsage)parâmetro na solicitação. Os valores válidos para `KeyUsage` são `ENCRYPT_DECRYPT`, `SIGN_VERIFY`, `GENERATE_VERIFY_MAC` e `KEY_AGREEMENT`.

Por exemplo, será possível criar uma chave do KMS somente quando `KeyUsage` for `ENCRYPT_DECRYPT` ou negar a permissão de um usuário quando `KeyUsage` for `SIGN_VERIFY`. 

A instrução de política do IAM exemplificada a seguir usa a chave de condição `kms:KeyUsage` para criar uma chave do KMS somente quando `KeyUsage` for `ENCRYPT_DECRYPT`.

```
{
  "Effect": "Allow",  
  "Action": "kms:CreateKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:KeyUsage": "ENCRYPT_DECRYPT"
    }
  }
}
```

Também é possível usar a chave de condição `kms:KeyUsage` para controlar o acesso a operações que usam ou gerenciam uma chave do KMS com base na propriedade `KeyUsage` da chave do KMS na operação. A operação deve ser uma *operação de recurso de chave do KMS*, ou seja, uma operação autorizada para uma chave do KMS específica. Para identificar as operações de recursos de chaves do KMS, na [Tabela de ações e recursos](kms-api-permissions-reference.md#kms-api-permissions-reference-table), procure um valor de `KMS key` na coluna `Resources` para a operação.

Por exemplo, a política do IAM a seguir permite que as entidades principais realizem as operações de recursos de chaves do KMS especificadas, mas somente com as chaves do KMS na conta que são usadas para assinatura e verificação.

```
{
  "Effect": "Allow",
  "Action": [
    "kms:CreateGrant",
    "kms:DescribeKey",
    "kms:GetPublicKey",
    "kms:ScheduleKeyDeletion"
  ],
  "Resource": "arn:aws:kms:us-west-2:111122223333:key/*",
  "Condition": {
    "StringEquals": {
      "kms:KeyUsage": "SIGN_VERIFY"
    }
  }
}
```

**Consulte também**
+ [kms:BypassPolicyLockoutSafetyCheck](#conditions-kms-bypass-policy-lockout-safety-check)
+ [kms: CustomerMasterKeyUsage (obsoleto)](#conditions-kms-key-usage-replaced)
+ [kms:KeyOrigin](#conditions-kms-key-origin)
+ [kms:KeySpec](#conditions-kms-key-spec)

## kms:MacAlgorithm
<a name="conditions-kms-mac-algorithm"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:MacAlgorithm`  |  String  | Valor único | `GenerateMac``VerifyMac` |  Políticas de chaves e políticas do IAM  | 

Você pode usar a chave de `kms:MacAlgorithm` condição para controlar o acesso às [VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html)operações [GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html)e com base no valor do `MacAlgorithm` parâmetro na solicitação. 

O seguinte exemplo de política de chaves permite que usuários capazes de assumir a função `testers` só usem a chave do KMS de HMAC para gerar e verificar etiquetas HMAC quando o algoritmo de MAC na solicitação for `HMAC_SHA_384` ou `HMAC_SHA_512`. Essa política usa duas instruções distintas de política, cada uma com sua própria condição. Se você especificar mais de um algoritmo de MAC em uma única instrução de condição, a condição exigirá ambos os algoritmos em vez de um ou outro.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/testers"
      },
      "Action": [
        "kms:GenerateMac",
        "kms:VerifyMac"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:MacAlgorithm": "HMAC_SHA_384"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/testers"
      },
      "Action": [
        "kms:GenerateMac",
        "kms:VerifyMac"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:MacAlgorithm": "HMAC_SHA_512"
        }
      }
    }
  ]
}
```

------

**Consulte também**
+ [kms:EncryptionAlgorithm](#conditions-kms-encryption-algorithm)
+ [kms:SigningAlgorithm](#conditions-kms-signing-algorithm)

## kms:MessageType
<a name="conditions-kms-message-type"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:MessageType`  |  String  | Valor único |  `Sign` `Verify`  | Políticas de chaves e políticas do IAM | 

A chave de condição `kms:MessageType` controla o acesso às operações [Sign](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html) e [Verify](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html) com base no valor do parâmetro `MessageType` na solicitação. Os valores válidos para `MessageType` são `RAW` e `DIGEST`. 

Por exemplo, a instrução de política de chaves a seguir usa a chave de condição `kms:MessageType` para usar uma chave do KMS assimétrica para assinar uma mensagem, mas não um resumo da mensagem.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:Sign",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:MessageType": "RAW"
    }
  }
}
```

**Consulte também**
+ [kms:SigningAlgorithm](#conditions-kms-signing-algorithm)

## kms:MultiRegion
<a name="conditions-kms-multiregion"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:MultiRegion`  |  Booleano  | Valor único |  `CreateKey` Operações de recursos de chaves do KMS  |  Políticas de chaves e políticas do IAM  | 

Você pode usar essa chave de condição para permitir operações somente em chaves de região única ou somente em [chaves de várias regiões](multi-region-keys-overview.md). A chave de `kms:MultiRegion` condição controla o acesso às AWS KMS operações nas chaves KMS e à [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operação com base no valor da `MultiRegion` propriedade da chave KMS. Os valores válidos são `true` (várias regiões) e `false` (região única). Todas as chaves do KMS têm uma propriedade `MultiRegion`.

Por exemplo, a seguinte instrução de política do IAM usa a chave de condição `kms:MultiRegion` para permitir que as entidades principais criem apenas chaves de região única. 

```
{
  "Effect": "Allow",
  "Action": "kms:CreateKey",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "kms:MultiRegion": false
    }
  }
}
```

## kms:MultiRegionKeyType
<a name="conditions-kms-multiregion-key-type"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:MultiRegionKeyType`  |  String  | Valor único |  `CreateKey` Operações de recursos de chaves do KMS  |  Políticas de chaves e políticas do IAM  | 

Você pode usar essa chave de condição para permitir operações somente em [chaves primárias de várias regiões](multi-region-keys-overview.md#mrk-primary-key) ou somente em [chaves de réplica de várias regiões](multi-region-keys-overview.md#mrk-replica-key). A chave de `kms:MultiRegionKeyType` condição controla o acesso às AWS KMS operações nas chaves KMS e a [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operação com base na `MultiRegionKeyType` propriedade da chave KMS. Os valores válidos são `PRIMARY` e `REPLICA`. Somente chaves de várias regiões têm uma propriedade `MultiRegionKeyType`.

Normalmente, você pode usar a chave de condição `kms:MultiRegionKeyType` em uma política do IAM para controlar o acesso a várias chaves do KMS. No entanto, como uma determinada chave de várias regiões pode mudar para primária ou réplica, convém usar essa condição em uma política de chaves para permitir uma operação somente quando a chave de várias regiões específica for uma chave primária ou de réplica.

Por exemplo, a instrução de política do IAM a seguir usa a chave de condição `kms:MultiRegionKeyType` para permitir que as entidades principais programem e cancelem a exclusão de chaves somente em chaves de réplica de várias regiões na Conta da AWS especificada. 

```
{
  "Effect": "Allow",
  "Action": [
    "kms:ScheduleKeyDeletion",
    "kms:CancelKeyDeletion"
  ],
  "Resource": "arn:aws:kms:*:111122223333:key/*",
  "Condition": {
    "StringEquals": {
      "kms:MultiRegionKeyType": "REPLICA"
    }
  }
}
```

Para permitir ou negar acesso a todas as chaves de várias regiões, você pode usar ambos os valores ou um valor nulo com `kms:MultiRegionKeyType`. No entanto, a chave de MultiRegion condição [kms:](#conditions-kms-multiregion) é recomendada para essa finalidade.

## kms:PrimaryRegion
<a name="conditions-kms-primary-region"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:PrimaryRegion`  |  String (lista)  | Valor único |  `UpdatePrimaryRegion`  |  Políticas de chaves e políticas do IAM  | 

Você pode usar essa chave de condição para limitar as regiões de destino em uma [UpdatePrimaryRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html)operação. São elas Regiões da AWS que podem hospedar suas chaves primárias multirregionais. 

A chave de `kms:PrimaryRegion` condição controla o acesso à [UpdatePrimaryRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html)operação com base no valor do `PrimaryRegion` parâmetro. O `PrimaryRegion` parâmetro especifica a [chave Região da AWS de réplica multirregional](multi-region-keys-overview.md#mrk-replica-key) que está sendo promovida para primária. O valor da condição é um ou mais Região da AWS nomes, como `us-east-1` ou`ap-southeast-2`, ou padrões de nome de região, como `eu-*`

Por exemplo, a instrução de política de chaves a seguir usa a chave de condição `kms:PrimaryRegion` para permitir que as entidades principais atualizem a região primária de uma chave de várias regiões para uma das quatro regiões especificadas.

```
{
  "Effect": "Allow",
  "Action": "kms:UpdatePrimaryRegion",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/Developer"
  },
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:PrimaryRegion": [ 
         "us-east-1",
         "us-west-2",
         "eu-west-3",
         "ap-southeast-2"
      ]
    }
  }
}
```

## kms:ReEncryptOnSameKey
<a name="conditions-kms-reencrypt-on-same-key"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:ReEncryptOnSameKey`  |  Booleano  | Valor único |  `ReEncrypt`  |  Políticas de chaves e políticas do IAM  | 

Você pode usar essa chave de condição para controlar o acesso à [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)operação com base no fato de a solicitação especificar uma chave KMS de destino que seja a mesma usada para a criptografia original. 

Por exemplo, a instrução de política de chaves a seguir usa a chave de condição `kms:ReEncryptOnSameKey` para criptografar novamente somente quando a chave do KMS de destino é semelhante à usada para a criptografia original.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:ReEncrypt*",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "kms:ReEncryptOnSameKey": true
    }
  }
}
```

## kms:RequestAlias
<a name="conditions-kms-request-alias"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:RequestAlias`  |  String (lista)  | Valor único |  [Operações criptográficas](kms-cryptography.md#cryptographic-operations) [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)  |  Políticas de chaves e políticas do IAM  | 

É possível usar essa chave de condição para permitir uma operação somente quando a solicitação usa um alias específico para identificar a chave do KMS. A chave de condição `kms:RequestAlias` controla o acesso a uma chave do KMS usada em uma operação criptográfica, `GetPublicKey` ou `DescribeKey` com base no [alias](kms-alias.md) que identifica essa chave do KMS na solicitação. (Essa condição de política não tem efeito na [GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html)operação porque a operação não usa uma chave ou alias KMS.) 

Essa condição oferece suporte [ao controle de acesso baseado em atributos](abac.md) (ABAC) em AWS KMS, que permite controlar o acesso às chaves KMS com base nas tags e aliases de uma chave KMS. Você pode usar tags e aliases para conceder ou negar acesso a uma chave do KMS sem alterar políticas ou permissões. Para obter detalhes, consulte [ABAC para AWS KMS](abac.md).

Para especificar o alias nessa condição de política, use um [nome de alias](concepts.md#key-id-alias-name), como `alias/project-alpha`, ou um padrão de nome de alias, como `alias/*test*`. Não é possível especificar um [ARN de alias](concepts.md#key-id-alias-ARN) no valor dessa chave de condição.

Para satisfazer essa condição, o valor do parâmetro`KeyId` na solicitação deve ser um nome de alias correspondente ou um ARN de alias. Se a solicitação usar um[identificador de chave](concepts.md#key-id) diferente, ela não atenderá à condição, mesmo que identifique a mesma chave do KMS.

Por exemplo, a declaração de política chave a seguir permite que o diretor chame a [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)operação na chave KMS. No entanto, isso é permitido somente quando o valor do parâmetro `KeyId` na solicitação é `alias/finance-key` ou um ARN de alias com esse nome de alias, como `arn:aws:kms:us-west-2:111122223333:alias/finance-key`.

```
{
  "Sid": "Key policy using a request alias condition",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/developer"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:RequestAlias": "alias/finance-key"
    }
  }
}
```

Você não pode usar essa chave de condição para controlar o acesso às operações de alias, como [CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html)ou [DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html). Para obter informações sobre como controlar o acesso a todas as operações de alias, consulte [Controlar o acesso a aliases](alias-access.md).

## kms:ResourceAliases
<a name="conditions-kms-resource-aliases"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:ResourceAliases`  |  String (lista)  | Vários valores | Operações de recursos de chaves do KMS |  Somente políticas do IAM  | 

Use essa chave de condição para controlar o acesso a uma chave do KMS com base nos [aliases](kms-alias.md) que estão associados à chave do KMS. A operação deve ser uma *operação de recurso de chave do KMS*, ou seja, uma operação autorizada para uma chave do KMS específica. Para identificar as operações de recursos de chaves do KMS, na [Tabela de ações e recursos](kms-api-permissions-reference.md#kms-api-permissions-reference-table), procure um valor de `KMS key` na coluna `Resources` para a operação.

Essa condição oferece suporte ao controle de acesso baseado em atributos (ABAC) no AWS KMS. Com o ABAC, você pode controlar o acesso a chaves do KMS com base nas etiquetas atribuídas a uma chave do KMS e nos aliases associados a uma chave do KMS. Você pode usar tags e aliases para conceder ou negar acesso a uma chave do KMS sem alterar políticas ou permissões. Para obter detalhes, consulte [ABAC para AWS KMS](abac.md).

Um alias deve ser exclusivo em uma região Conta da AWS e, mas essa condição permite controlar o acesso a várias chaves KMS na mesma região (usando o operador de `StringLike` comparação) ou a várias chaves KMS em diferentes contas Regiões da AWS .

**nota**  
A ResourceAliases condição [kms:](#conditions-kms-resource-aliases) é efetiva somente quando a chave KMS está em conformidade com os [aliases por](resource-limits.md#aliases-per-key) cota de chave KMS. Se uma chave do KMS exceder essa cota, as entidades principais autorizadas a usar essa chave pela condição `kms:ResourceAliases` terão acesso negado a ela.

Para especificar o alias nessa condição de política, use um [nome de alias](concepts.md#key-id-alias-name), como `alias/project-alpha`, ou um padrão de nome de alias, como `alias/*test*`. Não é possível especificar um [ARN de alias](concepts.md#key-id-alias-ARN) no valor dessa chave de condição. Para atender à condição, a chave do KMS usada na operação deve ter o alias especificado. Não importa se ou como a chave do KMS é identificada na solicitação para a operação.

Esta é uma chave de condição de vários valores que compara o conjunto de aliases associados a uma chave do KMS com o conjunto de aliases na política. Para determinar como esses conjuntos são comparados, você deve fornecer um operador de conjunto `ForAnyValue` ou `ForAllValues` na condição de política. Para detalhes sobre os operadores de conjunto, consulte[Usar várias chaves e valores](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions), no Manual do usuário do IAM.
+ ForAnyValue: pelo menos um alias associado à chave KMS deve corresponder a um alias na condição da política. Outros aliases são permitidos. Se a chave do KMS não tiver alias, a condição não será atendida.
+ ForAllValues: cada alias associado à chave KMS deve corresponder a um alias na política. Esse operador de conjunto limita os aliases associados à chave do KMS àqueles na condição da política. Ele não requer aliases, mas proíbe aliases não especificados.

Por exemplo, a declaração de política do IAM a seguir permite que o diretor chame a [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)operação em qualquer chave KMS especificada Conta da AWS associada ao `finance-key` alias. (As políticas de chaves das chaves do KMS afetadas também devem permitir que a conta da entidade principal as use para essa operação.) Para indicar que a condição é atendida quando um dos muitos aliases que podem estar associados à chave do KMS é `alias/finance-key`, a condição usa o operador de conjunto `ForAnyValue`. 

Como a condição `kms:ResourceAliases` é baseada no recurso, não na solicitação, uma chamada para `GenerateDataKey` é bem-sucedida para qualquer chave do KMS associada ao alias `finance-key`, mesmo que a solicitação use um [ID de chave](concepts.md#key-id-key-id) ou um [ ARN de chave](concepts.md#key-id-key-ARN) para identificar a chave do KMS. 

```
{
  "Sid": "AliasBasedIAMPolicy",
  "Effect": "Allow",
  "Action": "kms:GenerateDataKey",
  "Resource": [
    "arn:aws:kms:*:111122223333:key/*",
    "arn:aws:kms:*:444455556666:key/*"
  ],
  "Condition": {
    "ForAnyValue:StringEquals": {
      "kms:ResourceAliases": "alias/finance-key"
    }
  }
}
```

O seguinte exemplo de instrução de política do IAM permite que a entidade principal habilite e desabilite chaves do KMS, mas somente quando todos os aliases das chaves do KMS incluem “`Test`”. Essa instrução de política usa duas condições. A condição com o operador de conjunto `ForAllValues` requer que todos os aliases associados à chave do KMS incluam “Test”. A condição com o operador de conjunto `ForAnyValue` requer que a chave do KMS tenha pelo menos um alias com “Test”. Sem a condição `ForAnyValue`, essa instrução de política teria permitido que a entidade principal usasse chaves do KMS sem aliases.

```
{
  "Sid": "AliasBasedIAMPolicy",
  "Effect": "Allow",
  "Action": [
    "kms:EnableKey",
    "kms:DisableKey"
  ],
  "Resource": "arn:aws:kms:*:111122223333:key/*",
  "Condition": {
    "ForAllValues:StringLike": {
      "kms:ResourceAliases": [
        "alias/*Test*"
      ]
    },
    "ForAnyValue:StringLike": {
      "kms:ResourceAliases": [
        "alias/*Test*"
      ]
    }
  }
}
```

## kms:ReplicaRegion
<a name="conditions-kms-replica-region"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:ReplicaRegion`  |  String (lista)  | Valor único |  `ReplicateKey`  |  Políticas de chaves e políticas do IAM  | 

Você pode usar essa chave de condição para limitar a Regiões da AWS possibilidade de um principal replicar uma chave [multirregional](multi-region-keys-overview.md). A chave de `kms:ReplicaRegion` condição controla o acesso à [ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operação com base no valor do [ReplicaRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-RetiringPrincipal)parâmetro na solicitação. Esse parâmetro especifica a propriedade Região da AWS da nova [chave de réplica](multi-region-keys-overview.md#mrk-replica-key). 

O valor da condição é um ou mais Região da AWS nomes, como `us-east-1` ou`ap-southeast-2`, ou padrões de nomes, como`eu-*`. Para obter uma lista dos nomes desses Regiões da AWS AWS KMS suportes, consulte [AWS Key Management Service endpoints e cotas](https://docs.aws.amazon.com/general/latest/gr/kms.html) no. Referência geral da AWS

Por exemplo, a declaração de política de chaves a seguir usa a chave de `kms:ReplicaRegion` condição para permitir que os diretores chamem a [ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html)operação somente quando o valor do `ReplicaRegion` parâmetro for uma das regiões especificadas.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/Administrator"
  },
  "Action": "kms:ReplicateKey"
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ReplicaRegion": [ 
         "us-east-1",
         "eu-west-3",
         "ap-southeast-2"
      ]
    }
  }
}
```

Essa chave de condição controla o acesso somente à [ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html)operação. Para controlar o acesso à [UpdatePrimaryRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html)operação, use a chave de PrimaryRegion condição [kms:](#conditions-kms-primary-region).

## kms:RetiringPrincipal
<a name="conditions-kms-retiring-principal"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:RetiringPrincipal`  |  String (lista)  | Valor único |  `CreateGrant`  |  Políticas de chaves e políticas do IAM  | 

Você pode usar essa chave de condição para controlar o acesso à [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operação com base no valor do [RetiringPrincipal](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-RetiringPrincipal)parâmetro na solicitação. Por exemplo, é possível criar concessões para usar uma chave do KMS somente quando `RetiringPrincipal` na solicitação `CreateGrant` corresponder a `RetiringPrincipal` na instrução da condição.

Para especificar a entidade principal em processo de desativação, use o ARN de uma entidade principal da AWS . Os principais válidos incluem usuários do IAM Contas da AWS, funções do IAM, usuários federados e usuários com funções assumidas. Para obter ajuda com a sintaxe do ARN para um diretor, consulte [IAM ARNs no Guia do](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns) usuário do *IAM*.

O exemplo de declaração de política de chave a seguir permite que um usuário crie concessões para a chave do KMS. A chave de condição `kms:RetiringPrincipal` restringe a permissão a solicitações `CreateGrant` nas quais a entidade principal em processo de desativação na concessão é `LimitedAdminRole`.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:CreateGrant",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:RetiringPrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole"
    }
  }
}
```

**Consulte também**
+ [kms:GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [kms:GrantIsForAWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [kms:GrantOperations](#conditions-kms-grant-operations)
+ [kms:GranteePrincipal](#conditions-kms-grantee-principal)

## kms:RotationPeriodInDays
<a name="conditions-kms-rotation-period-in-days"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:RotationPeriodInDays`  |  Numérico  | Valor único |  `EnableKeyRotation`  |  Políticas de chaves e políticas do IAM  | 

Você pode usar essa chave de condição para limitar os valores que os diretores podem especificar no `RotationPeriodInDays` parâmetro de uma [EnableKeyRotation](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKeyRotation.html)solicitação.

`RotationPeriodInDays`Especifica o número de dias entre cada data de rotação automática da chave. AWS KMS permite especificar um período de rotação entre 90 e 2560 dias, mas você pode usar a chave de `kms:RotationPeriodInDays` condição para restringir ainda mais o período de rotação, como impor um período mínimo de rotação dentro do intervalo válido.

Por exemplo, a declaração de política de chave a seguir usa a chave de condição `kms:RotationPeriodInDays` para impedir que entidades principais habilitem a alternância de chave se o período de alternância for menor ou igual a 180 dias.

```
{
  "Effect": "Deny",
  "Action": "kms:EnableKeyRotation",
  "Principal": "*",
  "Resource": "*",
  "Condition" : {
      "NumericLessThanEquals" : {
        "kms:RotationPeriodInDays" : "180"
      }
  }
}
```

## kms:ScheduleKeyDeletionPendingWindowInDays
<a name="conditions-kms-schedule-key-deletion-pending-window-in-days"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:ScheduleKeyDeletionPendingWindowInDays`  |  Numérico  | Valor único |  `ScheduleKeyDeletion`  |  Políticas de chaves e políticas do IAM  | 

Você pode usar essa chave de condição para limitar os valores que os diretores podem especificar no `PendingWindowInDays` parâmetro de uma [ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html)solicitação.

`PendingWindowInDays`Especifica o número de dias que AWS KMS serão esperados antes de excluir uma chave. AWS KMS permite especificar um período de espera entre 7 e 30 dias, mas você pode usar a chave de `kms:ScheduleKeyDeletionPendingWindowInDays` condição para restringir ainda mais o período de espera, como impor um período mínimo de espera dentro do intervalo válido.

Por exemplo, a declaração de política de chave a seguir usa a chave de condição `kms:ScheduleKeyDeletionPendingWindowInDays` para impedir que a entidade principal programe a exclusão da chave se o período de espera for menor ou igual a 21 dias.

```
{
  "Effect": "Deny",
  "Action": "kms:ScheduleKeyDeletion",
  "Principal": "*",
  "Resource": "*",
  "Condition" : {
      "NumericLessThanEquals" : {
        "kms:ScheduleKeyDeletionPendingWindowInDays" : "21"
      }
  }
}
```

## kms:SigningAlgorithm
<a name="conditions-kms-signing-algorithm"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:SigningAlgorithm`  |  String  | Valor único |  `Sign`  `Verify`  |  Políticas de chaves e políticas do IAM  | 

Você pode usar a chave de `kms:SigningAlgorithm` condição para controlar o acesso às operações de [Assinar](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html) e [Verificar](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html) com base no valor do [SigningAlgorithm](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-SigningAlgorithm)parâmetro na solicitação. Essa chave de condição não tem efeito nas operações realizadas fora da AWS KMS, como a verificação de assinaturas com a chave pública em um par de chaves KMS assimétrico fora da. AWS KMS

O exemplo de política de chaves a seguir permite que os usuários que podem assumir a função `testers` usem a chave do KMS para assinar mensagens somente quando o algoritmo de assinatura usado para a solicitação é um algoritmo RSASSA\$1PSS, como `RSASSA_PSS_SHA512`.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/testers"
  },
  "Action": "kms:Sign",
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:SigningAlgorithm": "RSASSA_PSS*"
    }
  }
}
```

**Consulte também**
+ [kms:EncryptionAlgorithm](#conditions-kms-encryption-algorithm)
+ [kms:MacAlgorithm](#conditions-kms-mac-algorithm)
+ [kms:MessageType](#conditions-kms-message-type)

## kms:ValidTo
<a name="conditions-kms-valid-to"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:ValidTo`  |  Timestamp  | Valor único |  `ImportKeyMaterial`  |  Políticas de chaves e políticas do IAM  | 

A chave de `kms:ValidTo` condição controla o acesso à [ImportKeyMaterial](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html)operação com base no valor do [ValidTo](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ValidTo)parâmetro na solicitação, que determina quando o material da chave importada expira. O valor é expresso no [horário do Unix](https://en.wikipedia.org/wiki/Unix_time).

Por padrão, o parâmetro `ValidTo` é obrigatório em uma solicitação `ImportKeyMaterial`. No entanto, se o valor do [ExpirationModel](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ExpirationModel)parâmetro for`KEY_MATERIAL_DOES_NOT_EXPIRE`, o `ValidTo` parâmetro é inválido. Você também pode usar a chave de ExpirationModel condição [kms:](#conditions-kms-expiration-model) para exigir o `ExpirationModel` parâmetro ou um valor de parâmetro específico.

A seguinte instrução de política de exemplo permite a um usuário importar material-chave em uma chave do KMS. A chave de condição `kms:ValidTo` limita a permissão para solicitações `ImportKeyMaterial` em que o valor `ValidTo` é menor que ou igual a `1546257599.0` (31 de dezembro de 2018 23:59:59). 

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:ImportKeyMaterial",
  "Resource": "*",
  "Condition": {
    "NumericLessThanEquals": {
      "kms:ValidTo": "1546257599.0"
    }
  }
}
```

**Consulte também**
+ [kms:ExpirationModel](#conditions-kms-expiration-model) 
+ [kms:WrappingAlgorithm](#conditions-kms-wrapping-algorithm)
+ [kms:WrappingKeySpec](#conditions-kms-wrapping-key-spec)

## kms:ViaService
<a name="conditions-kms-via-service"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:ViaService`  |  String  | Valor único |  Operações de recursos de chaves do KMS  |  Políticas de chaves e políticas do IAM  | 

A chave de `kms:ViaService` condição limita o uso de uma chave KMS às solicitações Serviços da AWS especificadas. Essa chave de condição se aplica somente às [sessões de acesso direto](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html). Você pode especificar um ou mais serviços em cada chave de condição `kms:ViaService`. A operação deve ser uma *operação de recurso de chave do KMS*, ou seja, uma operação autorizada para uma chave do KMS específica. Para identificar as operações de recursos de chaves do KMS, na [Tabela de ações e recursos](kms-api-permissions-reference.md#kms-api-permissions-reference-table), procure um valor de `KMS key` na coluna `Resources` para a operação.

Por exemplo, a seguinte instrução de política de chaves usa a chave de condição `kms:ViaService` para permitir que uma [chave gerenciada pelo cliente](concepts.md#customer-mgn-key) seja usada para as ações especificadas somente quando a solicitação vem do Amazon EC2 ou do Amazon RDS na região Oeste dos EUA (Oregon) em nome de `ExampleRole`.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:CreateGrant",
    "kms:ListGrants",
    "kms:DescribeKey"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ViaService": [
        "ec2.us-west-2.amazonaws.com",
        "rds.us-west-2.amazonaws.com"
      ]
    }
  }
}
```

Também é possível usar uma chave de condição `kms:ViaService` para negar permissão para usar uma chave do KMS quando a solicitação é proveniente de serviços específicos. Por exemplo, a instrução de política a seguir usa uma chave de condição `kms:ViaService` para impedir que uma chave gerenciada pelo cliente seja usada para operações `Encrypt` quando a solicitação é proveniente do AWS Lambda em nome de `ExampleRole`.

```
{
  "Effect": "Deny",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": [
    "kms:Encrypt"    
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ViaService": [
          "lambda.us-west-2.amazonaws.com"
      ]
    }
  }
}
```

**Importante**  
Quando você usa a chave de condição `kms:ViaService`, o serviço faz a solicitação em nome de uma entidade principal na conta da Conta da AWS. Essas entidades principais deve ter as seguintes permissões:  
Permissão para usar a chave do KMS. A entidade principal precisa conceder essas permissões ao serviço integrado, de forma que o serviço possa usar a chave gerenciada pelo cliente em nome da entidade principal. Para obter mais informações, consulte [Usando AWS KMS criptografia com AWS serviços](service-integration.md).
Permissão para usar o serviço integrado. Para obter detalhes sobre como dar aos usuários acesso a um AWS serviço que se integra ao AWS KMS, consulte a documentação do serviço integrado.

Todas as [Chaves gerenciadas pela AWS](concepts.md#aws-managed-key) usam uma chave de condição `kms:ViaService` no seu documento de política de chaves. Essa condição permite que a chave do KMS seja usada apenas para solicitações provenientes do serviço que criou a chave do KMS. Para ver a política principal de um Chave gerenciada pela AWS, use a [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html)operação. 

A chave de condição `kms:ViaService` é válida no IAM e em declarações de políticas de chaves. Os serviços que você especificar devem ser [integrados ao AWS KMS](https://aws.amazon.com/kms/features/#AWS_Service_Integration) e compatíveis com a chave de condição `kms:ViaService`.

### Serviços que oferecem suporte à chave de condição `kms:ViaService`
<a name="viaService_table"></a>

A tabela a seguir lista AWS os serviços que estão integrados AWS KMS e oferecem suporte ao uso da chave de `kms:ViaService` condição nas chaves gerenciadas pelo cliente. Os serviços desta tabela podem não estar disponíveis em todas as regiões. Use o `.amazonaws.com` sufixo do AWS KMS ViaService nome em todas as AWS partições.

**nota**  
Talvez seja necessário rolar horizontalmente ou verticalmente para ver todos os dados nessa tabela.


| Nome do serviço | AWS KMS ViaService nome | 
| --- | --- | 
| Operações de IA da Amazon | aiops.AWS\$1region.amazonaws.com | 
| AWS App Runner | apprunner.AWS\$1region.amazonaws.com | 
| AWS AppFabric | appfabric.AWS\$1region.amazonaws.com | 
| Amazon AppFlow | appflow.AWS\$1region.amazonaws.com | 
| AWS Application Migration Service | mgn.AWS\$1region.amazonaws.com | 
| Amazon Athena | athena.AWS\$1region.amazonaws.com | 
| AWS Audit Manager | auditmanager.AWS\$1region.amazonaws.com | 
| Amazon Aurora | rds.AWS\$1region.amazonaws.com | 
| AWS Backup | backup.AWS\$1region.amazonaws.com | 
| AWS Backup Gateway | backup-gateway.AWS\$1region.amazonaws.com | 
| Cópia de modelo do Amazon Bedrock | bedrock.AWS\$1region.amazonaws.com | 
| SDK do Amazon Chime | chimevoiceconnector.AWS\$1region.amazonaws.com | 
| AWS Clean Rooms ML | cleanrooms-ml.AWS\$1region.amazonaws.com | 
| AWS CodeArtifact | codeartifact.AWS\$1region.amazonaws.com | 
|  CodeGuru Revisor da Amazon | codeguru-reviewer.AWS\$1region.amazonaws.com | 
| Amazon Comprehend | comprehend.AWS\$1region.amazonaws.com | 
| Amazon Connect | connect.AWS\$1region.amazonaws.com | 
| Amazon Connect Customer Profiles | profile.AWS\$1region.amazonaws.com | 
| Amazon Q no Connect | wisdom.AWS\$1region.amazonaws.com | 
| AWS Database Migration Service (AWS DMS) | dms.AWS\$1region.amazonaws.com | 
| AWS DeepRacer | deepracer.AWS\$1region.amazonaws.com | 
| AWS Directory Service | directoryservice.AWS\$1region.amazonaws.com | 
| Amazon DocumentDB | docdb-elastic.AWS\$1region.amazonaws.com | 
| Amazon DynamoDB | dynamodb.AWS\$1region.amazonaws.com | 
| Amazon EC2 Systems Manager (SSM) | ssm.AWS\$1region.amazonaws.com | 
| Amazon Elastic Block Store (Amazon EBS) | ec2.AWS\$1region.amazonaws.com (somente EBS) | 
| Amazon Elastic Container Registry (Amazon ECR) | ecr.AWS\$1region.amazonaws.com | 
| Amazon Elastic File System (Amazon EFS) | elasticfilesystem.AWS\$1region.amazonaws.com | 
| Amazon ElastiCache |  Inclua os dois ViaService nomes no valor da chave de condição: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/kms/latest/developerguide/conditions-kms.html)  | 
| AWS Elemental MediaTailor | mediatailor.AWS\$1region.amazonaws.com | 
| AWS Resolução de entidades | entityresolution.AWS\$1region.amazonaws.com | 
| Amazon EventBridge | events.AWS\$1region.amazonaws.com | 
| Amazon FinSpace | finspace.AWS\$1region.amazonaws.com | 
| Amazon Forecast | forecast.AWS\$1region.amazonaws.com | 
| Amazon FSx | fsx.AWS\$1region.amazonaws.com | 
| AWS Glue | glue.AWS\$1region.amazonaws.com | 
| AWS Ground Station | groundstation.AWS\$1region.amazonaws.com | 
| Amazon GuardDuty | malware-protection.AWS\$1region.amazonaws.com | 
| AWS HealthLake | healthlake.AWS\$1region.amazonaws.com | 
| AWS IoT SiteWise | iotsitewise.AWS\$1region.amazonaws.com | 
| Amazon Kendra | kendra.AWS\$1region.amazonaws.com | 
| Amazon Keyspaces (para Apache Cassandra) | cassandra.AWS\$1region.amazonaws.com | 
| Amazon Kinesis | kinesis.AWS\$1region.amazonaws.com | 
| Amazon Data Firehose | firehose.AWS\$1region.amazonaws.com | 
| Amazon Kinesis Video Streams | kinesisvideo.AWS\$1region.amazonaws.com | 
| AWS Lambda | lambda.AWS\$1region.amazonaws.com | 
| Amazon Lex | lex.AWS\$1region.amazonaws.com | 
| AWS License Manager | license-manager.AWS\$1region.amazonaws.com | 
| Amazon Location Service | geo.AWS\$1region.amazonaws.com | 
| Amazon Lookout for Equipment | lookoutequipment.AWS\$1region.amazonaws.com | 
| Amazon Lookout for Metrics | lookoutmetrics.AWS\$1region.amazonaws.com | 
| Amazon Lookout for Vision | lookoutvision.AWS\$1region.amazonaws.com | 
| Amazon Macie | macie.AWS\$1region.amazonaws.com | 
| AWS Mainframe Modernization | m2.AWS\$1region.amazonaws.com | 
| AWS Mainframe Modernization Teste de aplicativos | apptest.AWS\$1region.amazonaws.com | 
| Amazon Managed Blockchain | managedblockchain.AWS\$1region.amazonaws.com | 
| Amazon Managed Streaming for Apache Kafka (Amazon MSK) | kafka.AWS\$1region.amazonaws.com | 
| Amazon Managed Workflows for Apache Airflow (MWAA) | airflow.AWS\$1region.amazonaws.com | 
| Amazon MemoryDB | memorydb.AWS\$1region.amazonaws.com | 
| Amazon Monitron | monitron.AWS\$1region.amazonaws.com | 
| Amazon MQ | mq.AWS\$1region.amazonaws.com | 
| Amazon Neptune | rds.AWS\$1region.amazonaws.com | 
| Amazon Nimble Studio | nimble.AWS\$1region.amazonaws.com | 
| AWS HealthOmics | omics.AWS\$1region.amazonaws.com | 
|  OpenSearch Serviço Amazon | es.AWS\$1region.amazonaws.com, aoss.AWS\$1region.amazonaws.com | 
| Pacotes OpenSearch personalizados da Amazon | custom-packages.AWS\$1region.amazonaws.com | 
| AWS Proton | proton.AWS\$1region.amazonaws.com | 
| Amazon Quantum Ledger Database (Amazon QLDB) | qldb.AWS\$1region.amazonaws.com | 
| Insights de Performance do Amazon RDS | rds.AWS\$1region.amazonaws.com | 
| banco de dados de origem | redshift.AWS\$1region.amazonaws.com | 
| Editor de consultas do Amazon Redshift V2 | sqlworkbench.AWS\$1region.amazonaws.com | 
| Amazon Redshift Serverless | redshift-serverless.AWS\$1region.amazonaws.com | 
| Amazon Rekognition | rekognition.AWS\$1region.amazonaws.com | 
| Amazon Relational Database Service (Amazon RDS) | rds.AWS\$1region.amazonaws.com | 
| Armazenamento de dados replicado da Amazon | ards.AWS\$1region.amazonaws.com | 
|  SageMaker IA da Amazon | sagemaker.AWS\$1region.amazonaws.com | 
| AWS Secrets Manager | secretsmanager.AWS\$1region.amazonaws.com | 
| Amazon Security Lake | securitylake.AWS\$1region.amazonaws.com | 
| Amazon Simple Email Service (Amazon SES) | ses.AWS\$1region.amazonaws.com | 
| Amazon Simple Notiﬁcation Service (Amazon SNS) | sns.AWS\$1region.amazonaws.com | 
| Amazon Simple Queue Service (Amazon SQS) | sqs.AWS\$1region.amazonaws.com | 
| Amazon Simple Storage Service (Amazon S3) | s3.AWS\$1region.amazonaws.com | 
| Tabelas do Amazon S3 | s3tables.AWS\$1region.amazonaws.com | 
| AWS Snowball Edge | importexport.AWS\$1region.amazonaws.com | 
| AWS Step Functions | states.AWS\$1region.amazonaws.com | 
| AWS Storage Gateway | storagegateway.AWS\$1region.amazonaws.com | 
| AWS Systems Manager Incident Manager | ssm-incidents.AWS\$1region.amazonaws.com | 
| AWS Systems Manager Incident Manager Contatos | ssm-contacts.AWS\$1region.amazonaws.com | 
| Amazon Timestream | timestream.AWS\$1region.amazonaws.com | 
| Amazon Translate | translate.AWS\$1region.amazonaws.com | 
| Acesso Verificado pela AWS | verified-access.AWS\$1region.amazonaws.com | 
| Amazon WorkMail | workmail.AWS\$1region.amazonaws.com | 
| Amazon WorkSpaces | workspaces.AWS\$1region.amazonaws.com | 
| Amazon WorkSpaces Thin Client | thinclient.AWS\$1region.amazonaws.com | 
| Amazon WorkSpaces Web | workspaces-web.AWS\$1region.amazonaws.com | 
| AWS X-Ray | xray.AWS\$1region.amazonaws.com | 

## kms:WrappingAlgorithm
<a name="conditions-kms-wrapping-algorithm"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:WrappingAlgorithm`  |  String  | Valor único |  `GetParametersForImport`  |  Políticas de chaves e políticas do IAM  | 

Essa chave de condição controla o acesso à [GetParametersForImport](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html)operação com base no valor do [WrappingAlgorithm](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html#KMS-GetParametersForImport-request-WrappingAlgorithm)parâmetro na solicitação. Você pode usar essa condição para exigir que os principais usem determinado algoritmo para criptografar material de chaves durante o processo de importação. As solicitações para a chave pública e o token de importação exigidos falham quando especificam um algoritmo de empacotamento diferente.

A instrução de política de exemplo a seguir usa a chave de condição `kms:WrappingAlgorithm` para dar ao usuário de exemplo permissão para chamar a operação `GetParametersForImport`, mas o impede de usar o algoritmo de empacotamento `RSAES_OAEP_SHA_1`. Quando o `WrappingAlgorithm` na solicitação `GetParametersForImport` é `RSAES_OAEP_SHA_1`, a operação falha.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:GetParametersForImport",
  "Resource": "*",
  "Condition": {
    "StringNotEquals": {
      "kms:WrappingAlgorithm": "RSAES_OAEP_SHA_1"
    }
  }
}
```

**Consulte também**
+ [kms:ExpirationModel](#conditions-kms-expiration-model)
+ [kms:ValidTo](#conditions-kms-valid-to)
+ [kms:WrappingKeySpec](#conditions-kms-wrapping-key-spec)

## kms:WrappingKeySpec
<a name="conditions-kms-wrapping-key-spec"></a>


| AWS KMS chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:WrappingKeySpec`  |  String  | Valor único |  `GetParametersForImport`  |  Políticas de chaves e políticas do IAM  | 

Essa chave de condição controla o acesso à [GetParametersForImport](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html)operação com base no valor do [WrappingKeySpec](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html#KMS-GetParametersForImport-request-WrappingKeySpec)parâmetro na solicitação. Você pode usar essa condição para exigir que as entidades principais usem determinado tipo de chave pública durante o processo de importação. Se a solicitação especifica um tipo de chave diferente, ela falha.

Como o único valor válido para o valor do parâmetro `WrappingKeySpec` é `RSA_2048`, impedir que os usuários usem esse valor efetivamente os impede de usar a operação `GetParametersForImport`. 

A declaração de política de exemplo a seguir usa a chave de condição `kms:WrappingAlgorithm` para exigir que `WrappingKeySpec` na solicitação seja `RSA_4096`.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:GetParametersForImport",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:WrappingKeySpec": "RSA_4096"
    }
  }
}
```

**Consulte também**
+ [kms:ExpirationModel](#conditions-kms-expiration-model)
+ [kms:ValidTo](#conditions-kms-valid-to)
+ [kms:WrappingAlgorithm](#conditions-kms-wrapping-algorithm)

# AWS KMS chaves de condição para plataformas certificadas
<a name="conditions-attestation"></a>

AWS KMS fornece chaves de condição para apoiar o atestado criptográfico para [AWS Nitro Enclaves e NitroTPM](https://docs.aws.amazon.com/enclaves/latest/user/). AWS O Nitro Enclaves é um recurso do Amazon EC2 que permite criar ambientes computacionais isolados chamados [enclaves](https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave-concepts.html#term-enclave) para proteger e processar dados altamente confidenciais. O NitroTPM estende uma funcionalidade de atestação semelhante às instâncias do EC2.

Quando você chama as operações [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html),, [DeriveSharedSecret[GenerateDataKey[GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret), ou [GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html)API com um documento de atestado assinado, elas APIs criptografam o texto sem formatação na resposta sob a chave pública do documento de atestado e retornam texto cifrado em vez de texto sem formatação. Esse texto cifrado pode ser descriptografado apenas usando a chave privada no enclave. Para obter mais informações, consulte [Suporte de atestado criptográfico em AWS KMS](cryptographic-attestation.md).

**nota**  
Se você não fornecer uma política de chaves ao criar uma AWS KMS chave, AWS crie uma para você. Essa [política de chaves padrão](key-policy-default.md) concede às Contas da AWS proprietárias da chave do KMS acesso total à chave e permite que a conta use políticas do IAM para permitir acesso à chave. Essa política permite todas as ações, como [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html). A AWS recomenda aplicar a entidade principal do [Permissões de privilégio mínimo](least-privilege.md) às suas políticas de chave do KMS. Você também pode restringir o acesso [modificando a ação da política de chave do KMS](key-policy-modifying.md) de `kms:*` para `[NotAction:](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_notaction.html)kms:Decrypt`.

As seguintes chaves de condição permitem limitar as permissões para essas operações com base no conteúdo do documento de atestado assinado. Antes de permitir uma operação, AWS KMS compara o documento de atestado com os valores nessas AWS KMS chaves de condição.

# Chaves de condição para o Nitro Enclaves
<a name="conditions-nitro-enclave"></a>

As seguintes chaves de condição são específicas da atestação do Nitro Enclaves:

## kmRecipientAttestation: 384 ImageSha
<a name="conditions-kms-recipient-image-sha"></a>


| AWS KMS Chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:RecipientAttestation:ImageSha384`  |  String  | Valor único |  `Decrypt` `DeriveSharedSecret` `GenerateDataKey` `GenerateDataKeyPair` `GenerateRandom`  |  Políticas de chaves e políticas do IAM  | 

A chave de condição `kms:RecipientAttestation:ImageSha384` controla o acesso a `Decrypt`, `DeriveSharedSecret`, `GenerateDataKey`, `GenerateDataKeyPair` e `GenerateRandom` com uma chave do KMS quando o resumo da imagem do documento de atestado assinado na solicitação corresponde ao valor na chave de condição. O `ImageSha384` valor corresponde ao PCR0 do documento de certificação. Essa chave de condição só é efetiva quando o `Recipient` parâmetro na solicitação especifica um documento de atestação assinado para um AWS enclave Nitro.

Esse valor também está incluído em [CloudTraileventos](ct-nitro-enclave.md) AWS KMS para solicitações de enclaves Nitro.

Por exemplo, a declaração de política chave a seguir permite que a `data-processing` função use a chave KMS para [descriptografar](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html),, [DeriveSharedSecret[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret), [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)e operações. [GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html) A chave de `kms:RecipientAttestation:ImageSha384` condição permite as operações somente quando o valor do resumo da imagem (PCR0) do documento de atestado na solicitação corresponde ao valor do resumo da imagem na condição. Essa chave de condição só é efetiva quando o `Recipient` parâmetro na solicitação especifica um documento de atestação assinado para um AWS enclave Nitro.

Se a solicitação não incluir um documento de atestação válido de um enclave AWS Nitro, a permissão será negada porque essa condição não foi satisfeita.

```
{
  "Sid" : "Enable enclave data processing",
  "Effect" : "Allow",
  "Principal" : {
    "AWS" : "arn:aws:iam::111122223333:role/data-processing"
  },
  "Action": [
    "kms:Decrypt",
    "kms:DeriveSharedSecret",
    "kms:GenerateDataKey",
    "kms:GenerateDataKeyPair",
    "kms:GenerateRandom"
  ],
  "Resource" : "*",
  "Condition": {
    "StringEqualsIgnoreCase": {
      "kms:RecipientAttestation:ImageSha384": "9fedcba8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef1abcdef0abcdef1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef99"
    }
  }
}
```

## km:: PCR RecipientAttestation <PCR\$1ID>
<a name="conditions-kms-recipient-pcrs"></a>


| AWS KMS Chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:RecipientAttestation:PCR<PCR_ID>`  |  String  | Valor único |  `Decrypt` `DeriveSharedSecret` `GenerateDataKey` `GenerateDataKeyPair` `GenerateRandom`  |  Políticas de chaves e políticas do IAM  | 

A chave de `kms:RecipientAttestation:PCR<PCR_ID>` condição controla o acesso a `Decrypt``DeriveSharedSecret`,`GenerateDataKey`,`GenerateDataKeyPair`, e `GenerateRandom` com uma chave KMS somente quando a configuração da plataforma registra (PCRs) do documento de atestação assinado na solicitação coincidir com a PCRs chave de condição. Essa chave de condição só é efetiva quando o `Recipient` parâmetro na solicitação especifica um documento de atestação assinado de um enclave Nitro. AWS 

Esse valor também está incluído em [CloudTraileventos](ct-nitro-enclave.md) que representam solicitações AWS KMS para enclaves Nitro.

Para especificar um valor de PCR, use o seguinte formato. Concatene o ID do PCR com o nome da chave da condição. Você pode especificar um ID de PCR que identifique uma das [seis medidas de enclave](https://docs.aws.amazon.com/enclaves/latest/user/set-up-attestation.html#where) ou um ID de PCR personalizado definido para um caso de uso específico. O valor so PCR deve ser uma string hexadecimal minúscula de até 96 bytes.

```
"kms:RecipientAttestation:PCRPCR_ID": "PCR_value"
```

Por exemplo, a chave de condição a seguir especifica um valor específico para PCR1, que corresponde ao hash do kernel usado para o enclave e o processo de bootstrap.

```
kms:RecipientAttestation:PCR1: "abc1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef8abcdef9abcdef8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef0abcde"
```

Por exemplo, a instrução de política de chave a seguir permite que a função `data-processing` use a chave do KMS para a operação [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html).

A chave de `kms:RecipientAttestation:PCR` condição nessa declaração permite a operação somente quando o PCR1 valor no documento de atestado assinado na solicitação corresponde ao `kms:RecipientAttestation:PCR1` valor na condição. Use a política a`StringEqualsIgnoreCase` para exigir uma comparação sem distinção entre maiúsculas e minúsculas dos valores de PCR.

Se a solicitação não incluir um documento de atestado, a permissão será negada porque essa condição não foi atendida.

```
{
  "Sid" : "Enable enclave data processing",
  "Effect" : "Allow",
  "Principal" : {
    "AWS" : "arn:aws:iam::111122223333:role/data-processing"
  },
  "Action": "kms:Decrypt",
  "Resource" : "*",
  "Condition": {
    "StringEqualsIgnoreCase": {
      "kms:RecipientAttestation:PCR1": "abc1de4f2dcf774f6e3b679f62e5f120065b2e408dcea327bd1c9dddaea6664e7af7935581474844767453082c6f1586116376cede396a30a39a611b9aad7966c87"
    }
  }
}
```

# Chaves de condição para o NitroTPM
<a name="conditions-nitro-tpm"></a>

As seguintes chaves de condição são específicas da atestação do NitroTPM:

## kms:: NitroTPMPCR RecipientAttestation <PCR\$1ID>
<a name="conditions-kms-recipient-nitro-tpm-pcrs"></a>


| AWS KMS Chaves de condição | Tipo de condição | Tipo de valor | Operações de API | Tipo de política | 
| --- | --- | --- | --- | --- | 
|  `kms:RecipientAttestation:NitroTPMPCR<PCR_ID>`  |  String  | Valor único |  `Decrypt` `DeriveSharedSecret` `GenerateDataKey` `GenerateDataKeyPair` `GenerateRandom`  |  Políticas de chaves e políticas do IAM  | 

A chave de `kms:RecipientAttestation:NitroTPMPCR<PCR_ID>` condição controla o acesso a `Decrypt``DeriveSharedSecret`,`GenerateDataKey`,`GenerateDataKeyPair`, e `GenerateRandom` com uma chave KMS somente quando a configuração da plataforma registra (PCRs) do documento de atestação assinado na solicitação coincidir com a PCRs chave de condição. Essa chave de condição tem efeito somente quando o parâmetro `Recipient` da solicitação especifica um atestado assinado do NitroTPM.

Esse valor também está incluído em [CloudTraileventos](ct-nitro-tpm.md) que representam solicitações de NitroTPM. AWS KMS 

Para especificar um valor de PCR, use o seguinte formato. Concatene o ID do PCR com o nome da chave da condição. O valor so PCR deve ser uma string hexadecimal minúscula de até 96 bytes.

```
"kms:RecipientAttestation:NitroTPMPCRPCR_ID": "PCR_value"
```

Por exemplo, a chave de condição a seguir especifica um valor específico para PCR4:

```
kms:RecipientAttestation:NitroTPMPCR4: "abc1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef8abcdef9abcdef8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef0abcde"
```

Por exemplo, a instrução de política de chave a seguir permite que a função `data-processing` use a chave do KMS para a operação [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html).

A chave de `kms:RecipientAttestation:NitroTPMPCR` condição nessa declaração permite a operação somente quando o PCR4 valor no documento de atestado assinado na solicitação corresponde ao `kms:RecipientAttestation:NitroTPMPCR4` valor na condição. Use a política a`StringEqualsIgnoreCase` para exigir uma comparação sem distinção entre maiúsculas e minúsculas dos valores de PCR.

Se a solicitação não incluir um documento de atestado, a permissão será negada porque essa condição não foi atendida.

```
{
  "Sid" : "Enable NitroTPM data processing",
  "Effect" : "Allow",
  "Principal" : {
    "AWS" : "arn:aws:iam::111122223333:role/data-processing"
  },
  "Action": "kms:Decrypt",
  "Resource" : "*",
  "Condition": {
    "StringEqualsIgnoreCase": {
      "kms:RecipientAttestation:NitroTPMPCR4": "abc1de4f2dcf774f6e3b679f62e5f120065b2e408dcea327bd1c9dddaea6664e7af7935581474844767453082c6f1586116376cede396a30a39a611b9aad7966c87"
    }
  }
}
```

# Permissões de privilégio mínimo
<a name="least-privilege"></a>

Como suas chaves do KMS protegem informações confidenciais, recomendamos seguir o princípio do acesso com privilégio mínimo. Delegue as permissões mínimas necessárias para executar uma tarefa ao definir as políticas de chave. Só permita todas as ações (`kms:*`) em uma política de chave do KMS se planejar restringir ainda mais as permissões com políticas adicionais do IAM. Se planejar gerenciar permissões com políticas do IAM, limite quem tem a capacidade de criar e anexar políticas do IAM a entidades principais do IAM e [monitore as mudanças nas políticas](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html#cloudwatch-alarms-for-cloudtrail-iam-policy-changes).

Se você permitir todas as ações (`kms:*`) na política de chaves e na política do IAM, a entidade principal terá permissões administrativas e de uso para a chave do KMS. Como prática recomendada de segurança, recomendamos delegar essas permissões somente a entidades principais específicas. Você pode fazer isso nomeando explicitamente a entidade principal na política de chave ou limitando as entidades principais às quais a política do IAM está anexada. Você também pode usar [chaves de condição](policy-conditions.md) para restringir as permissões. Por exemplo, você pode usar [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag) para permitir todas as ações se a entidade principal que está fazendo a chamada de API tiver a tag especificada na regra de condição.

Para ajudar a entender como as declarações de política são avaliadas em AWS, consulte [Lógica de avaliação de políticas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) no *Guia do usuário do IAM*. Antes de criar políticas, recomendamos revisar esse tópico para reduzir a chance de sua política ter efeitos indesejados, como fornecer acesso a entidades principais que não deveriam ter acesso.

**dica**  
Ao testar uma aplicação em um ambiente que não seja de produção, use o [IAM Access Analyzer](https://aws.amazon.com/iam/features/analyze-access/) para ajudar você a aplicar privilégios mínimos às suas políticas do IAM.

Se você usa usuários do IAM em vez de funções do IAM, é altamente recomendável ativar a [autenticação AWS multifator](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html) (MFA) para mitigar a vulnerabilidade das credenciais de longo prazo. Você pode usar o MFA para: 
+ Exija que os usuários validem suas credenciais com a MFA antes de realizar ações privilegiadas, como agendar a exclusão da chave.
+ Divida a propriedade de uma conta de administrador, senha e dispositivo de MFA entre indivíduos para implementar a autorização dividida.

**Saiba mais**
+ [AWS políticas gerenciadas para funções de trabalho](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)
+ [Técnicas para criar políticas do IAM de privilégio mínimo](https://aws.amazon.com//blogs/security/techniques-for-writing-least-privilege-iam-policies/)

## Implementação de permissões de privilégio mínimo
<a name="key-policy-least-privilege"></a>

Ao conceder permissão a um AWS serviço para usar uma chave KMS, certifique-se de que a permissão seja válida somente para os recursos que o serviço deve acessar em seu nome. Essa estratégia de privilégios mínimos ajuda a evitar o uso não autorizado de uma chave KMS quando as solicitações são passadas entre serviços. AWS 

Para implementar uma estratégia de privilégios mínimos, recomendamos o uso de chaves de condição de contexto de AWS KMS criptografia e do ARN de origem global ou das chaves de condição da conta de origem.

### Uso de chaves de condição de contexto de criptografia
<a name="least-privilege-encryption-context"></a>

A maneira mais eficaz de implementar permissões com menos privilégios ao usar AWS KMS recursos é incluir as chaves de [kms:EncryptionContextKeys](conditions-kms.md#conditions-kms-encryption-context-keys)condição [kms:EncryptionContext:*context-key*](conditions-kms.md#conditions-kms-encryption-context)ou na política que permite que os diretores chamem operações AWS KMS criptográficas. Essas chaves de condição são particularmente eficazes porque associam a permissão ao [contexto de criptografia](encrypt_context.md) que está vinculado ao texto cifrado quando o recurso é criptografado. 

[Use chaves de condições de contexto de criptografia somente quando a ação na declaração de política for [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)uma operação criptográfica AWS KMS simétrica que usa um `EncryptionContext` parâmetro, como as operações como [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)ou Decrypt.](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) (Para ver uma lista das operações válidas, consulte [kms:EncryptionContext:*context-key*](conditions-kms.md#conditions-kms-encryption-context) ou [kms:EncryptionContextKeys](conditions-kms.md#conditions-kms-encryption-context-keys). Se você usar essas chaves de condição para permitir outras operações, como, por exemplo [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html), a permissão será negada.

Defina o valor para o contexto de criptografia usado pelo serviço ao criptografar o recurso. Essas informações geralmente estão disponíveis no capítulo Segurança da documentação do serviço. Por exemplo, o [contexto de criptografia do AWS Proton](https://docs.aws.amazon.com/proton/latest/adminguide/data-protection.html#encryption-context) identifica o recurso AWS Proton e seu modelo associado. O [contexto de criptografia do AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html#security-encryption-encryption-context) identifica o segredo e sua versão. O [contexto de criptografia para Amazon Location](https://docs.aws.amazon.com/location/latest/developerguide/encryption-at-rest.html#location-encryption-context) identifica o rastreador ou a coleção. 

O exemplo de declaração de política de chave a seguir permite que o Amazon Location Service crie concessões em nome de usuários autorizados. Essa declaração de política limita a permissão usando as chaves [kms: ViaService](conditions-kms.md#conditions-kms-via-service), [kms: CallerAccount](conditions-kms.md#conditions-kms-caller-account) e de `kms:EncryptionContext:context-key` condição para vincular a permissão a um recurso específico do rastreador.

```
{
  "Sid": "Allow Amazon Location to create grants on behalf of authorized users",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/LocationTeam"
  },
  "Action": "kms:CreateGrant",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ViaService": "geo.us-west-2.amazonaws.com",
      "kms:CallerAccount": "111122223333",
      "kms:EncryptionContext:aws:geo:arn": "arn:aws:geo:us-west-2:111122223333:tracker/SAMPLE-Tracker"
    }
  }
}
```

### Uso de chaves de condição `aws:SourceArn` ou `aws:SourceAccount`
<a name="least-privilege-source-arn"></a>

Quando a entidade principal de uma instrução de política de chave é uma [entidade principal de serviço da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), recomendamos usar as chaves de condição globais [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) ou [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount), além da chave de condição `kms:EncryptionContext:context-key`. O ARN e os valores da conta são incluídos no contexto de autorização somente quando uma solicitação AWS KMS vem de outro AWS serviço. Essa combinação de condições implementa permissões de privilégio mínimo e evita um possível [cenário de auxiliar confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Os diretores de serviços normalmente não são usados como diretores em uma política chave, mas alguns AWS serviços, como o AWS CloudTrail, exigem isso. 

Para usar as chaves de condição globais `aws:SourceArn` ou `aws:SourceAccount`, defina o valor como o nome do recurso da Amazon (ARN) ou a conta do recurso que está sendo criptografado. Por exemplo, em uma declaração de política de chave que concede ao AWS CloudTrail permissão para criptografar uma trilha, defina o valor de `aws:SourceArn` como o ARN da trilha. Sempre que possível, use `aws:SourceArn`, que é mais específico. Defina o valor como o ARN ou um padrão de ARN com caracteres curinga. Se você não conhece o ARN do recurso, use `aws:SourceAccount` em vez disso.

**nota**  
Se um ARN de recurso incluir caracteres que não são permitidos em uma política de AWS KMS chave, você não pode usar esse ARN de recurso no valor da chave de condição. `aws:SourceArn` Em vez disso, use a chave de condição `aws:SourceAccount`. Para obter detalhes sobre as regras de documento de política de chaves, consulte [Formato de política de chaves](key-policy-overview.md#key-policy-format).

No exemplo de política de chaves a seguir, a entidade principal que obtém as permissões é a entidade principal do serviço AWS CloudTrail , `cloudtrail.amazonaws.com`. Para implementar o privilégio mínimo, essa política usa as chaves de condição `aws:SourceArn` e `kms:EncryptionContext:context-key`. A declaração de política permite CloudTrail usar a chave KMS para [gerar a chave de dados](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) que ela usa para criptografar uma trilha. As condições `aws:SourceArn` e `kms:EncryptionContext:context-key` são avaliadas de forma independente. Qualquer solicitação para usar a chave do KMS para a operação especificada deve atender às duas condições.

Para restringir a permissão do serviço à trilha `finance` na conta de exemplo (111122223333) e na região `us-west-2`, esta declaração de política define a chave de condição `aws:SourceArn` como o ARN de uma trilha específica. A declaração de condição usa o [ArnEquals](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_ARN)operador para garantir que cada elemento no ARN seja avaliado de forma independente durante a correspondência. O exemplo também usa a chave de condição `kms:EncryptionContext:context-key` para limitar a permissão a trilhas em uma determinada conta e região. 

Antes de usar essa política de chaves, substitua os valores de ID da conta, região e nome da trilha de exemplo por valores válidos da sua conta.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCloudTrailToEncryptLogs",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudtrail.amazonaws.com"
      },
      "Action": "kms:GenerateDataKey",
      "Resource": "*",
      "Condition": {
        "ArnEquals": {
          "aws:SourceArn": [
            "arn:aws:cloudtrail:us-west-2:111122223333:trail/finance"
          ]
        },
        "StringLike": {
          "kms:EncryptionContext:aws:cloudtrail:arn": [
            "arn:aws:cloudtrail:*:111122223333:trail/*"
          ]
        }
      }
    }
  ]
}
```

------

# ABAC para AWS KMS
<a name="abac"></a>

O controle de acesso baseado em atributos (ABAC) é uma estratégia de autorização que define permissões com base em atributos. AWS KMS oferece suporte ao ABAC, permitindo que você controle o acesso às chaves gerenciadas pelo cliente com base nas tags e aliases associados às chaves KMS. As chaves de condição de tag e alias que permitem a entrada do ABAC AWS KMS fornecem uma maneira poderosa e flexível de autorizar os diretores a usar as chaves do KMS sem editar políticas ou gerenciar concessões. Porém, você deve usar esse recurso com cuidado, para que as entidades principais não sejam tenham o acesso inadvertidamente permitido ou negado. 

Se você usar ABAC, esteja ciente de que a permissão para gerenciar etiquetas e aliases agora é uma permissão de controle de acesso. Certifique-se de conhecer as etiquetas e os aliases existentes em todas as chaves do KMS antes de implantar uma política que depende de etiquetas ou aliases. Tome precauções razoáveis ao adicionar, excluir e atualizar aliases e ao marcar e desmarcar chaves. Conceda permissões para gerenciar etiquetas e aliases apenas às entidades principais que precisam deles e limite as etiquetas e os aliases que eles podem gerenciar. 

**Observações**  
Ao usar o ABAC para AWS KMS, tenha cuidado ao dar permissão aos diretores para gerenciar tags e aliases. A alteração de uma etiqueta ou de um alias pode permitir ou negar permissão para uma chave do KMS. Os administradores de chaves que não tiverem permissão para alterar políticas de chaves ou criar concessões poderão controlar o acesso às chaves do KMS se tiverem permissão para gerenciar etiquetas ou aliases.   
Pode levar até cinco minutos para que alterações de etiqueta e alias afetem a autorização de chaves do KMS. Alterações recentes podem estar visíveis em operações de API antes de afetarem a autorização.  
Para controlar o acesso a uma chave do KMS com base em seu alias, você deve usar uma chave de condição. Você não pode usar um alias para representar uma chave do KMS no elemento `Resource`de uma instrução de política. Quando um alias é exibido no elemento `Resource`, a instrução de política aplica-se a esse alias, e não à chave do KMS associada.

**Saiba mais**
+ Para obter detalhes sobre o AWS KMS suporte ao ABAC, incluindo exemplos, consulte [Usar aliases para controlar o acesso a chaves do KMS](alias-authorization.md) e. [Usar tags para controlar o acesso a chaves do KMS](tag-authorization.md)
+ Para obter mais informações gerais sobre o uso de tags para controlar o acesso aos AWS recursos, consulte [Para AWS que serve o ABAC](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)? e [controlar o acesso aos AWS recursos usando tags de recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) no *Guia do usuário do IAM*.

## Chaves de condição ABAC para AWS KMS
<a name="about-abac-kms"></a>

Para autorizar o acesso a chaves do KMS com base em suas etiquetas e aliases, use as seguintes chaves de condição em uma política de chaves ou política do IAM.


| Chave de condição para ABAC | Description | Tipo de política | AWS KMS operações | 
| --- | --- | --- | --- | 
| [leis: ResourceTag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) | A etiqueta (chave e valor) na chave do KMS corresponde à etiqueta (chave e valor) ou ao padrão de etiqueta na política | Somente política do IAM | Operações de recursos de chaves do KMS 2 | 
| [aws:RequestTag//tecla de *tag*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag) | A etiqueta (chave e valor) na solicitação corresponde à etiqueta (chave e valor) ou ao padrão de etiqueta na política | Políticas de chaves e políticas do IAM1 | [TagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html), [UntagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_UntagResource.html) | 
| [leis: TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys) | Chaves de etiqueta na solicitação correspondem a chaves de etiqueta na política | Políticas de chaves e políticas do IAM1 | [TagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html), [UntagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_UntagResource.html) | 
| [kms: ResourceAliases](conditions-kms.md#conditions-kms-resource-aliases) | Aliases associados à chave do KMS correspondem a aliases ou padrões de alias na política | Somente política do IAM | Operações de recursos de chaves do KMS 2 | 
| [kms: RequestAlias](conditions-kms.md#conditions-kms-request-alias) | O alias que representa a chave do KMS na solicitação corresponde ao alias ou aos padrões de alias na política. | Políticas de chaves e políticas do IAM1 | [Operações criptográficas](kms-cryptography.md#cryptographic-operations), [DescribeKey[GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) | 

1Qualquer chave de condição que possa ser usada em uma política de chaves também pode ser usada em uma política do IAM, mas somente se[a política de chaves a permitir](key-policy-default.md#key-policy-default-allow-root-enable-iam).

2A *operação de recurso de chave do KMS* é uma operação autorizada para uma chave do KMS específica. Para identificar as operações de recursos de chaves do KMS, no [tabela de permissões do AWS KMS](kms-api-permissions-reference.md#kms-api-permissions-reference-table), procure um valor de chave do KMS na coluna `Resources`para a operação. 

Por exemplo, é possível usar essas chaves de condição para criar as seguintes políticas.
+ Uma política do IAM com `kms:ResourceAliases` que concede permissão para usar chaves do KMS com um alias específico ou um padrão de alias. Isso é um pouco diferente das políticas que dependem de tags: embora você possa usar padrões de aliases em uma política, cada alias deve ser exclusivo em uma região Conta da AWS e. Isso permite que você aplique uma política a um conjunto selecionado de chaves KMS sem listar a chave ARNs das chaves KMS na declaração de política. Para adicionar ou remover chaves do KMS do conjunto, altere o alias da chave do KMS.
+ Uma política de chaves com `kms:RequestAlias` que permite que as entidades principais usem uma chave do KMS em uma operação `Encrypt`, mas somente quando a solicitação `Encrypt` usa esse alias para identificar a chave do KMS.
+ Uma política do IAM com `aws:ResourceTag/tag-key` que nega permissão para usar chaves do KMS com uma determinada chave de etiqueta e um valor de etiqueta. Isso permite aplicar uma política a um conjunto selecionado de chaves KMS sem listar a chave ARNs das chaves KMS na declaração de política. Para adicionar ou remover chaves do KMS do conjunto, marque ou desmarque a chave do KMS.
+ Uma política do IAM com `aws:RequestTag/tag-key` que permite que as entidades principais excluam somente etiquetas `"Purpose"="Test"` de chaves do KMS. 
+ Uma política do IAM com `aws:TagKeys` que nega permissão para marcar ou desmarcar uma chave do KMS com uma chave de etiqueta `Restricted`.

O ABAC torna o gerenciamento de acesso flexível e escalável. Por exemplo, você pode usar a chave de condição `aws:ResourceTag/tag-key` para criar uma política do IAM que permite que as entidades principais usem uma chave do KMS para operações especificadas somente quando essa chave tem uma etiqueta `Purpose=Test`. A política aplica-se a todas as chaves do KMS em todas as regiões da Conta da AWS.

Quando anexada a um usuário ou função, a seguinte política do IAM permite que as entidades principais usem todas as chaves do KMS existentes com uma etiqueta `Purpose=Test` para as operações especificadas. Para fornecer esse acesso a chaves do KMS novas ou existentes, não é necessário alterar a política. Basta anexar a etiqueta `Purpose=Test`às chaves do KMS. Da mesma forma, para remover esse acesso das chaves do KMS com uma etiqueta `Purpose=Test`, edite ou exclua essa etiqueta. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AliasBasedIAMPolicy",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
      ],
      "Resource": "arn:aws:kms:*:111122223333:key/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Purpose": "Test"
        }
      }
    }
  ]
}
```

------

No entanto, se você usar esse recurso, tenha cautela ao gerenciar etiquetas e aliases. Operações de adicionar, alterar ou excluir uma marca ou alias podem inadvertidamente permitir ou negar acesso a uma chave do KMS. Os administradores de chaves que não tiverem permissão para alterar políticas de chaves ou criar concessões poderão controlar o acesso às chaves do KMS se tiverem permissão para gerenciar etiquetas e aliases. Para atenuar esse risco, considere[limitar permissões para gerenciar etiquetas](tag-permissions.md#tag-permissions-conditions) e[aliases](alias-access.md#alias-access-limiting). Por exemplo, é possível permitir que apenas as entidades principais selecionadas gerenciem etiquetas do `Purpose=Test`. Para obter mais detalhes, consulte [Usar aliases para controlar o acesso a chaves do KMS](alias-authorization.md) e [Usar tags para controlar o acesso a chaves do KMS](tag-authorization.md).

## Etiquetas ou aliases?
<a name="abac-tag-or-alias"></a>

AWS KMS suporta ABAC com tags e aliases. Ambas as opções proporcionam uma estratégia de controle de acesso flexível e escalável, mas são ligeiramente diferentes uma da outra. 

Você pode decidir usar tags ou usar aliases com base em seus padrões de AWS uso específicos. Por exemplo, se você já concedeu permissões de marcação para a maioria dos administradores, talvez seja mais fácil controlar uma estratégia de autorização baseada em aliases. Ou, se você estiver se aproximando da cota de [aliases por chave do KMS](resource-limits.md#aliases-per-key), talvez prefira uma estratégia de autorização baseada em etiquetas. 

Os benefícios a seguir são de interesse geral.

**Benefícios do controle de acesso baseado em tags**
+ O mesmo mecanismo de autorização para diferentes tipos de AWS recursos. 

  É possível usar a mesma etiqueta ou chave de etiqueta para controlar o acesso a vários tipos de recursos, como cluster do Amazon Relational Database Service (Amazon RDS), volume do Amazon Elastic Block Store (Amazon EBS) e chave do KMS. Esse recurso permite diversos modelos de autorização diferentes que são mais flexíveis que o controle de acesso baseado em função tradicional.
+ Autorize o acesso a um grupo de chaves do KMS.

  É possível usar etiquetas para gerenciar o acesso a um grupo de chaves do KMS na mesma região e Conta da AWS . Atribua a mesma etiqueta ou chave de etiqueta às chaves do KMS qye você escolher. Em seguida, crie uma declaração easy-to-maintain de política simples baseada na tag ou na chave da tag. Para adicionar ou remover uma chave do KMS do seu grupo de autorização, adicione ou remova a etiqueta: não é necessário editar a política.

**Benefícios do controle de acesso baseado em alias**
+ Autorize o acesso a operações de criptografia com base em aliases.

  A maioria das condições de política baseadas em solicitações para atributos, incluindo [aws:RequestTag/*tag-key*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag), afetam somente as operações que adicionam, editam ou excluem o atributo. Mas a chave [kms: RequestAlias](conditions-kms.md#conditions-kms-request-alias) condition controla o acesso às operações criptográficas com base no alias usado para identificar a chave KMS na solicitação. Por exemplo, você pode conceder uma permissão à entidade principal para usar uma chave do KMS em uma operação `Encrypt`, mas somente quando o valor do parâmetro `KeyId`é`alias/restricted-key-1`. Para atender a essa condição, é necessário o seguinte:
  + A chave do KMS deve estar associada a esse alias.
  + A solicitação deve usar o alias para identificar a chave do KMS.
  + A entidade principal deve ter permissão para usar a chave do KMS sujeita à condição `kms:RequestAlias`. 

  Isso é particularmente útil se seus aplicativos geralmente usam nomes de alias ou alias ARNs para se referir às chaves KMS.
+ Forneça permissões muito limitadas.

  Um alias deve ser exclusivo em uma região Conta da AWS e. Como resultado, o ato de conceder acesso para as entidades principais a uma chave do KMS baseada em um alias pode ser muito mais restritivo do que o conceder acesso para eles com base em uma etiqueta. Diferentemente de aliases, etiquetas podem ser atribuídas a várias chaves do KMS na mesma conta e região. Se você escolher, é possível usar um padrão de alias, como`alias/test*`, a fim de conceder acesso para as entidades principais a um grupo de chaves do KMS na mesma conta e região. Porém, permitir ou negar o acesso a um alias específico possibilita um controle muito rigoroso sobre as chaves do KMS.

# Solução de problemas do ABAC para AWS KMS
<a name="troubleshooting-tags-aliases"></a>

Controlar o acesso a chaves do KMS com base em etiquetas e aliases é uma estratégia conveniente e poderosa. No entanto, ela está propensa a alguns erros previsíveis que convém evitar.

## Acesso alterado devido a mudanças de etiqueta
<a name="access-denied-tag"></a>

Se uma etiqueta for excluída ou seu valor for alterado, as entidades principais que tiverem acesso a uma chave do KMS com base apenas nessa etiqueta terão acesso negado à chave do KMS. Isso também pode acontecer quando uma etiqueta incluída em uma instrução de política de negação é adicionada a uma chave do KMS. Adicionar uma etiqueta relacionada a uma política a uma chave do KMS pode permitir acesso a entidades principais que não devem ter esse acesso a uma chave do KMS.

Por exemplo, suponha que uma entidade principal tenha acesso a uma chave do KMS com base na etiqueta `Project=Alpha`, como a permissão fornecida pelo seguinte exemplo de instrução de política do IAM. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IAMPolicyWithResourceTag",
      "Effect": "Allow",
      "Action": [
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:ap-southeast-1:111122223333:key/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Project": "Alpha"
        }
      }
    }
  ]
}
```

------

Se a etiqueta for excluída dessa chave do KMS ou se o valor da etiqueta for alterado, a entidade principal não terá mais permissão para usar a chave do KMS nas operações especificadas. Isso pode ficar evidente quando o diretor tenta ler ou gravar dados em um AWS serviço que usa uma chave gerenciada pelo cliente. Para rastrear a alteração da tag, revise seus CloudTrail registros [TagResource](ct-tagresource.md)ou [UntagResource entradas](ct-untagresource.md).

Para restaurar o acesso sem atualizar a política, altere as etiquetas na chave do KMS. Essa ação tem impacto mínimo diferente de um breve período em que está entrando em vigor no AWS KMS. Para evitar um erro como esse, conceda permissões de marcação e desmarcação apenas a entidades principais que precisem delas e[limite as permissões de marcação](tag-permissions.md#tag-permissions-conditions) a etiquetas que eles precisam gerenciar. Antes de alterar uma etiqueta, pesquise políticas para detectar o acesso que depende dessa etiqueta e obtenha chaves do KMS em todas as regiões que tenham a etiqueta. Você pode considerar criar um CloudWatch alarme da Amazon quando determinadas tags forem alteradas.

## Alteração do acesso devido a mudanças de alias
<a name="access-denied-alias"></a>

Se um alias for excluído ou associado a uma chave do KMS diferente, as entidades principais que tiverem acesso a essa chave do KMS com base apenas nesse alias terão acesso negado a ela. Isso também pode acontecer quando um alias associado a uma chave do KMS é incluído em uma instrução de política de negação. Adicionar um alias relacionado a uma política a uma chave do KMS também pode permitir acesso a entidades principais que não devem ter esse acesso a uma chave do KMS.

Por exemplo, a seguinte declaração de política do IAM usa a chave de ResourceAliases condição [kms:](conditions-kms.md#conditions-kms-resource-aliases) para permitir o acesso às chaves KMS em diferentes regiões da conta com qualquer um dos aliases especificados.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AliasBasedIAMPolicy",
      "Effect": "Allow",
      "Action": [
        "kms:List*",
        "kms:Describe*",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:*:111122223333:key/*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "kms:ResourceAliases": [
            "alias/ProjectAlpha",
            "alias/ProjectAlpha_Test",
            "alias/ProjectAlpha_Dev"
          ]
        }
      }
    }
  ]
}
```

------

Para rastrear a alteração do alias, revise seus CloudTrail registros de [CreateAlias[UpdateAlias](ct-updatealias.md)](ct-createalias.md), e [DeleteAlias](ct-deletealias.md)entradas.

Para restaurar o acesso sem atualizar a política, modifique o alias associado à chave do KMS. Como cada alias pode ser associado a apenas uma chave do KMS em uma conta e região, o gerenciamento de aliases é um pouco mais difícil que o de etiquetas. Restaurar o acesso a algumas das entidades principais em uma chave do KMS pode negar acesso para as mesmas ou outras entidades principais a uma chave do KMS diferente. 

Para evitar esse erro, conceda permissões de gerenciamento de alias somente às entidades principais que precisam dele e [limite suas permissões de gerenciamento de alias](alias-access.md#alias-access-limiting) para aliases que elas precisam gerenciar. Antes de atualizar ou excluir um alias, pesquise políticas para detectar o acesso que depende do alias e localize chaves do KMS em todas as regiões associadas a ele.

## Acesso negado devido à cota de aliases
<a name="access-denied-alias-quota"></a>

Os usuários autorizados a usar uma chave KMS por meio de uma ResourceAliases condição [kms:](conditions-kms.md#conditions-kms-resource-aliases) receberão uma `AccessDenied` exceção se a chave KMS exceder os [aliases padrão por cota de chave KMS](resource-limits.md#aliases-per-key) para essa conta e região. 

Para restaurar o acesso, exclua aliases associados à chave do KMS, para que esta esteja em conformidade com a cota. Outra opção é usar um mecanismo alternativo para conceder aos usuários acesso à chave do KMS. 

## Alteração de autorização atrasadas
<a name="tag-alias-auth-delay"></a>

Alterações feitas em etiquetas e aliases podem levar até cinco minutos para afetar a autorização de chaves do KMS. Como resultado, uma alteração de etiqueta ou alias pode ser refletida nas respostas das operações da API antes que estas afetem a autorização. É provável que esse atraso seja maior do que o breve atraso eventual de consistência que afeta a maioria das AWS KMS operações. 

Por exemplo, você pode ter uma política do IAM que permita que certas entidades principais utilizem qualquer chave do KMS com uma etiqueta `"Purpose"="Test"`. Em seguida, você adiciona a etiqueta `"Purpose"="Test"` a uma chave do KMS. Embora a [TagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html)operação seja concluída e a [ListResourceTags](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListResourceTags.html)resposta confirme que a tag está atribuída à chave KMS, os diretores podem não ter acesso à chave KMS por até cinco minutos.

Para evitar erros, crie esse atraso esperado no seu código. 

## Solicitações com falha devido a atualizações de alias
<a name="failed-requests"></a>

Quando você atualiza um alias, associa um alias existente a uma chave do KMS diferente. 

A [descriptografia](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) e as [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)solicitações que especificam o [nome do alias ou](concepts.md#key-id-alias-name) o [ARN](concepts.md#key-id-alias-ARN) do alias podem falhar porque o alias agora está associado a uma chave KMS que não criptografou o texto cifrado. Essa situação geralmente retorna uma `IncorrectKeyException` ou `NotFoundException`. Ou, se a solicitação não tiver o parâmetro `KeyId` ou `DestinationKeyId`, a operação pode falhar com uma exceção `AccessDenied` porque o autor da chamada não tem mais acesso à chave do KMS que criptografou o texto cifrado. 

Você pode rastrear a alteração examinando CloudTrail os registros de [CreateAlias[UpdateAlias](ct-updatealias.md)](ct-createalias.md), e as entradas de [DeleteAlias](ct-deletealias.md)registro. Você também pode usar o valor do `LastUpdatedDate` campo na [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)resposta para detectar uma alteração. 

Por exemplo, o [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)exemplo de resposta a seguir mostra que o `ProjectAlpha_Test` alias na `kms:ResourceAliases` condição foi atualizado. Como resultado, as entidades principais que têm acesso com base nesse alias perdem acesso à chave do KMS anteriormente associada. Em vez disso, elas têm acesso à chave do KMS recém-associada. 

```
$ aws kms list-aliases --query 'Aliases[?starts_with(AliasName, `alias/ProjectAlpha`)]'

{
    "Aliases": [
        {
            "AliasName": "alias/ProjectAlpha_Test",
            "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/ProjectAlpha_Test",
            "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321",
            "CreationDate": 1566518783.394,
            "LastUpdatedDate": 1605308931.903
        },
        {
            "AliasName": "alias/ProjectAlpha_Restricted",
            "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/ProjectAlpha_Restricted",
            "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
            "CreationDate": 1553410800.010,
            "LastUpdatedDate": 1553410800.010
        }
    ]
}
```

A solução para essa alteração não é simples. É possível atualizar o alias novamente para associá-lo à chave do KMS original. No entanto, antes de fazer isso, você precisa considerar o efeito dessa alteração na chave do KMS atualmente associada. Se as entidades principais usaram a última chave do KMS em operações de criptografia, talvez elas precisem de acesso contínuo a ela. Nesse caso, convém atualizar a política para garantir que as entidades principais tenham permissão para usar as duas chaves do KMS. 

Para evitar um erro como esse, antes de atualizar um alias, pesquise políticas para detectar o acesso que depende do alias. Em seguida, obtenha chaves do KMS em todas as regiões associadas a esse alias. Conceda permissões de gerenciamento de alias somente às entidades principais que precisam dele e [limite suas permissões de gerenciamento de alias](alias-access.md#alias-access-limiting) para aliases que elas precisam gerenciar.

# RBAC para AWS KMS
<a name="rbac"></a>

O controle de acesso baseado em funções (RBAC) é uma estratégia de autorização que fornece aos usuários somente as permissões necessárias para realizar suas tarefas e nada mais. O AWS KMS é viabiliza o RBAC permitindo que você controle o acesso às suas chaves especificando permissões granulares sobre o uso da chave nas [políticas de chave](key-policies.md). As políticas de chave especificam um recurso, ação, efeito, entidade principal e condições opcionais para conceder acesso às chaves.

Para implementar o RBAC em AWS KMS, recomendamos separar as permissões dos principais usuários e administradores de chaves.

------
#### [ Key users ]

O exemplo de política de chave a seguir permite que o perfil do IAM `ExampleUserRole` use a chave do KMS.

```
{
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws: iam::111122223333:role/ExampleUserRole"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
  }
```

 Seus usuários de chave podem precisar de menos permissões do que o usuário neste exemplo. Atribua apenas as permissões necessárias para o usuário. Use as seguintes perguntas para ajudar a refinar ainda mais as permissões.
+ Quais entidades principais do IAM (perfis ou usuários) precisam acessar a chave?
+ Quais ações cada entidade principal precisa realizar com a chave? Por exemplo, a entidade principal precisa somente das permissões de Criptografar e Assinar?
+ O usuário é humano ou um AWS serviço? Se for um AWS serviço, você pode usar a [chave de condição](conditions-kms.md#conditions-kms-via-service) para restringir o uso da chave a um AWS serviço específico.

------
#### [ Key administrators ]



O exemplo de política de chave a seguir permite que o perfil do IAM `ExampleAdminRole` administre a chave do KMS. 

```
{
            "Sid": "Allow access for Key Administrators",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws: iam::111122223333:role/ExampleAdminRole"
            },
            "Action": [
                "kms:Create*",
                "kms:Describe*",
                "kms:Enable*",
                "kms:List*",
                "kms:Put*",
                "kms:Update*",
                "kms:Revoke*",
                "kms:Disable*",
                "kms:Get*",
                "kms:Delete*",
                "kms:TagResource",
                "kms:UntagResource",
                "kms:ScheduleKeyDeletion",
                "kms:CancelKeyDeletion"
            ],
            "Resource": "*"
    }
```

 Seus administradores de chave podem precisar de menos permissões do que o administrador neste exemplo. Atribua somente as permissões de que seus administradores de chave precisam.

------

Dê aos usuários somente as permissões necessárias para cumprir suas funções. As permissões de um usuário podem variar dependendo se a chave é usada em ambientes de teste ou de produção. Se você usar permissões menos restritivas em determinados ambientes que não sejam de produção, implemente um processo para testar as políticas antes que elas sejam liberadas para produção.

**Saiba mais**
+ [Identidades do IAM (usuários, grupos de usuários e perfis)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)
+ [Tipos de controle de acesso](https://docs.aws.amazon.com/prescriptive-guidance/latest/saas-multitenant-api-access-authorization/access-control-types.html)

# Permitir que usuários de outras contas usem uma chave do KMS
<a name="key-policy-modifying-external-accounts"></a>

Você pode permitir que usuários ou funções em outras Conta da AWS usem uma chave KMS em sua conta. O acesso entre contas requer permissão na política de chaves da chave do KMS e em uma política do IAM na conta do usuário externo.

A permissão entre contas é efetiva apenas nas seguintes operações:
+ [Operações criptográficas](kms-cryptography.md#cryptographic-operations)
+ [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)
+ [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [GetKeyRotationStatus](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyRotationStatus.html)
+ [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)
+ [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)
+ [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)
+ [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)

Se você conceder a um usuário em outra conta permissão para outras operações, essas permissões não terão efeito. Por exemplo, se você der a um principal em uma conta diferente [kms: ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html) permissão em uma política do IAM ou [kms: ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html) permissão em uma chave KMS em uma política de chaves, as tentativas do usuário de chamar essas operações em seus recursos ainda falharão. 

Para obter detalhes sobre o uso de chaves KMS em diferentes contas para AWS KMS operações, consulte a coluna **Uso entre contas** no e. [AWS KMS permissões](kms-api-permissions-reference.md) [Usar chaves do KMS em outras contas](#cross-account-use) Existe também uma seção **Uso entre contas** em cada descrição da API na [Referência de APIs do AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/APIReference/).

**Atenção**  
Tenha cautela ao conceder permissões para as entidades principais usarem suas chaves do KMS. Sempre que possível, siga o princípio de *menor privilégio*. Conceda aos usuários acesso apenas às chaves do KMS necessárias para a conclusão de suas operações.  
Além disso, tenha cautela ao usar qualquer chave do KMS desconhecida, especialmente uma chave do KMS em outra conta. Usuários mal-intencionados podem conceder a você permissões para usar a chave do KMS deles para obter informações sobre você ou sua conta.   
Para obter informações sobre como usar políticas para proteger os recursos em sua conta, consulte [Práticas recomendadas para políticas do IAM](iam-policies-best-practices.md).

Para conceder permissão para usuários e funções usarem uma chave do KMS em outra conta, você deve usar dois tipos diferentes de políticas:
+ A **política de chaves** da chave do KMS deve conceder à conta externa (ou aos usuários e às funções na conta externa) permissão para usar a chave do KMS. A política de chaves está na conta proprietária da chave do KMS.
+ **Políticas do IAM** na conta externa devem delegar as permissões de políticas de chaves para seus usuários e funções. Essas políticas são definidas na conta externa e concedem permissões a usuários e funções nessa conta.

A política de chaves determina quem *pode* ter acesso à chave do KMS. A política do IAM determina quem *tem* acesso à chave do KMS. Sozinhas, nem a política de chaves, nem a política do IAM são suficientes: você deve alterar as duas. 

Para editar a política de chaves, você pode usar a [Exibição de Política](key-policy-modifying.md#key-policy-modifying-how-to-console-policy-view) nas [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)operações Console de gerenciamento da AWS [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)ou usar as.

Para obter ajuda sobre como editar políticas do IAM, consulte [Usando políticas do IAM com AWS KMS](iam-policies.md). 

Para obter um exemplo que mostra como a política de chaves e as políticas do IAM funcionam em conjunto para permitir o uso de uma chave do KMS em uma conta diferente, consulte [Exemplo 2: O usuário assume a função com permissão para usar uma chave KMS em uma outra Conta da AWS](policy-evaluation.md#example-cross-acct).

[Você pode ver as AWS KMS operações resultantes entre contas na chave KMS em seus AWS CloudTrail registros.](logging-using-cloudtrail.md) Operações que usam chaves do KMS em outras contas são registradas na conta do autor da chamada e na conta do proprietário da chave do KMS.

**Topics**
+ [Etapa 1: Incluir uma declaração de política de chaves na conta local](#cross-account-key-policy)
+ [Etapa 2: Adicionar políticas do IAM à conta externa](#cross-account-iam-policy)
+ [Permitindo o uso de chaves KMS externas com Serviços da AWS](#cross-account-service)
+ [Usar chaves do KMS em outras contas](#cross-account-use)

**nota**  
Os exemplos neste tópico mostram como usar uma política de chaves e uma política do IAM juntas para fornecer e limitar o acesso a uma chave do KMS. Esses exemplos genéricos não se destinam a representar as permissões que qualquer um em particular AWS service (Serviço da AWS) exige em uma chave KMS. Para obter informações sobre as permissões que um AWS service (Serviço da AWS) homem exige, consulte o tópico de criptografia na documentação do serviço.

## Etapa 1: Incluir uma declaração de política de chaves na conta local
<a name="cross-account-key-policy"></a>

A política de chaves de uma chave do KMS é o determinante principal de quem pode acessar a chave do KMS e quais operações podem ser realizadas. A política de chaves está sempre na conta proprietária da chave do KMS. Ao contrário de políticas do IAM, políticas de chaves não especificam um recurso. O recurso é a chave do KMS associada à política de chaves. Ao fornecer permissões entre contas, a política de chaves para a chave do KMS deve conceder à conta externa (ou aos usuários e perfis na conta externa) permissão para usar a chave do KMS.

Para conceder permissão a uma conta externa para usar a chave do KMS, adicione uma instrução à política de chaves que especifique a conta externa. No elemento `Principal` da política de chaves, insira o Amazon Resource Name (ARN) da conta externa. 

Quando você especifica uma conta externa em uma política de chaves, os administradores do IAM na conta externa podem usar políticas do IAM para delegar essas permissões a todos os usuários e funções na conta externa. Eles também podem decidir quais ações especificadas na política de chaves os usuários e as funções podem executar. 

As permissões concedidas à conta externa e suas entidades principais serão efetivas somente se a conta externa estiver habilitada na região que hospeda a chave do KMS e sua política de chaves. Para obter informações sobre regiões não habilitadas por padrão (“regiões de adesão”), consulte [Gerenciar Regiões da AWS](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html) em *Referência geral da AWS*.

Por exemplo, suponha que você queira permitir que a conta `444455556666` use uma chave do KMS de criptografia simétrica na conta `111122223333`. Para isso, adicione uma instrução de política, como a instrução no exemplo a seguir, à política de chaves na conta `111122223333`. Essa instrução de política permite que a conta externa (`444455556666`) use a chave do KMS em operações criptográficas para chaves do KMS de criptografia simétrica. 

**nota**  
O exemplo a seguir representa uma amostra de política de chaves para o compartilhamento de uma chave do KMS com outra conta. Substitua os valores de exemplo `Sid`, `Principal` e `Action` por valores válidos para o uso pretendido de sua chave do KMS. 

```
{
    "Sid": "Allow an external account to use this KMS key",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::444455556666:root"
        ]
    },
    "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
    ],
    "Resource": "*"
}
```

Em vez de conceder permissão à conta externa, você pode especificar usuários e funções externos específicos na política de chaves. No entanto, esses usuários e funções não poderão usar a chave do KMS até que os administradores do IAM na conta externa associem as políticas do IAM adequadas às suas identidades. As políticas do IAM podem conceder permissão a todos ou a um subconjunto de usuários e funções externos especificados na política de chaves. E podem permitir todas ou um subconjunto das ações especificadas na política de chaves. 

Especificar identidades em uma política de chaves restringe as permissões que os administradores do IAM na conta externa podem fornecer. No entanto, isso torna o gerenciamento de políticas com duas contas mais complexo. Por exemplo, suponha que você precise adicionar um usuário ou uma função. É necessário adicionar essa identidade à política de chaves na conta que possui a chave do KMS e criar políticas do IAM na conta da identidade.

Para especificar determinados usuários ou funções externos em uma política de chaves, no elemento `Principal`, insira o Amazon Resource Name (ARN) de um usuário ou função na conta externa.

Por exemplo, a instrução de política de chaves exemplificada a seguir permite que `ExampleRole` na conta `444455556666` use uma chave do KMS na conta `111122223333`. Essa instrução de política de chaves permite que a conta externa (`444455556666`) use a chave do KMS em operações criptográficas para chaves do KMS de criptografia simétrica. 

**nota**  
O exemplo a seguir representa uma amostra de política de chaves para o compartilhamento de uma chave do KMS com outra conta. Substitua os valores de exemplo `Sid`, `Principal` e `Action` por valores válidos para o uso pretendido de sua chave do KMS. 

```
{
    "Sid": "Allow an external account to use this KMS key",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::444455556666:role/ExampleRole"
    },
    "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
    ],
    "Resource": "*"
}
```

**nota**  
Não defina a entidade principal como um asterisco (\$1) em qualquer instrução de política de chave que permita permissões, a menos que você utilize [condições](policy-conditions.md) para limitar a política de chave. Um asterisco dá a cada identidade em cada Conta da AWS permissão para usar a chave KMS, a menos que outra declaração de política a negue explicitamente. Usuários de outros usuários Contas da AWS podem usar sua chave KMS sempre que tiverem permissões correspondentes em suas próprias contas.

Você também precisa decidir quais permissões deseja conceder à conta externa. Por exemplo, você pode conceder aos usuários permissão para descriptografar, mas não para criptografar, ou permissão para visualizar a chave do KMS, mas não para usá-la. Para obter uma lista de permissões em chaves do KMS, consulte [AWS KMS permissões](kms-api-permissions-reference.md).

**Definir a política de chave ao criar uma chave do KMS**  
Ao usar a [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operação para criar uma chave KMS, você pode usar seu `Policy` parâmetro para especificar uma política de chaves que conceda a uma conta externa, ou usuários e funções externos, permissão para usar a chave KMS.  
Ao criar uma chave KMS no Console de gerenciamento da AWS, você também cria sua política de chaves. Ao selecionar identidades nas seções **Key Administrators** (Administradores de chaves) e **Key Users** (Usuários de chaves), o AWS KMS adiciona instruções de política para essas identidades à política de chaves da chave do KMS. A seção **Key Users (Usuários de chaves)** também permite adicionar contas externas como usuários de chaves.  
Quando você insere o ID da conta de uma conta externa, AWS KMS adiciona duas declarações à política principal. Essa ação afeta somente a política de chaves. Os usuários e funções na conta externa não poderão usar a chave do KMS até que você anexe as políticas do IAM para conceder a eles algumas dessas permissões ou todas elas.  
A primeira instrução de política concede à conta externa permissão para usar a chave do KMS em operações de criptografia. A segunda declaração de política fundamental permite que a conta externa crie, visualize e revogue concessões na chave KMS, mas somente quando a solicitação vem de um [AWS serviço integrado](https://aws.amazon.com/kms/features/#AWS_Service_Integration) ao. AWS KMS Essas permissões permitem que outros AWS serviços que criptografam dados do usuário usem a chave KMS. Essas permissões são desenvolvidas para chaves do KMS que criptografam dados do usuário em serviços da AWS .

## Etapa 2: Adicionar políticas do IAM à conta externa
<a name="cross-account-iam-policy"></a>

A política de chaves na conta proprietária da chave do KMS define o intervalo válido de permissões. No entanto, os usuários e as funções na conta externa não poderão usar a chave do KMS até que você anexe as políticas do IAM que deleguem essas permissões ou use concessões para gerenciar o acesso à chave do KMS. As políticas do IAM são definidas na conta externa. 

Se a política de chaves conceder permissão à conta externa, você poderá anexar as políticas do IAM a qualquer usuário ou função na conta. No entanto, se a política de chaves conceder permissão a usuários ou funções especificados, a política do IAM só poderá conceder essas permissões a todos ou a um subconjunto de usuários e funções especificados. Se uma política do IAM conceder acesso à chave do KMS para outros usuários ou funções externos, este não terá efeito.

A política de chaves também limita as ações na política do IAM. A política do IAM pode delegar todas as ações ou um subconjunto das ações especificadas na política de chaves. Se a política do IAM listar ações que não estão especificadas na política de chaves, essas permissões não terão efeito.

O seguinte exemplo de política do IAM permite que a entidade principal use a chave do KMS na conta `111122223333` para operações de criptografia. Para conceder essa permissão a usuários e funções na conta `444455556666`, [associe a política](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console) aos usuários ou às funções na conta `444455556666`.

**nota**  
O exemplo a seguir representa uma amostra de política do IAM para o compartilhamento de uma chave do KMS com outra conta. Substitua os valores de exemplo `Sid`, `Resource` e `Action` por valores válidos para o uso pretendido de sua chave do KMS.

```
{
    "Sid": "AllowUseOfKeyInAccount111122223333",
    "Effect": "Allow",
    "Action": [
      "kms:Encrypt",
      "kms:Decrypt",
      "kms:ReEncrypt*",
      "kms:GenerateDataKey*",
      "kms:DescribeKey"
    ],
    "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}
```

Observe os seguintes detalhes sobre essa política:
+ Ao contrário de políticas de chaves, as instruções de políticas do IAM não contêm o elemento `Principal`. Nas políticas do IAM, a identidade principal é aquela à qual a política está anexada. 
+ O elemento `Resource`na política do IAM identifica a chave do KMS que a entidade principal pode usar. Para especificar uma chave do KMS, adicione seu [ARN de chave](concepts.md#key-id-alias-ARN) ao elemento `Resource`.
+ É possível especificar mais de uma chave do KMS no elemento `Resource`. No entanto, se você não especificar chaves do KMS específicas no elemento `Resource`, poderá conceder acesso acidentalmente a mais chaves do KMS do que o desejado.
+ Para permitir que o usuário externo use a chave do KMS com serviços da [AWS que se integram ao AWS KMS](https://aws.amazon.com/kms/features/#AWS_Service_Integration), pode ser necessário adicionar permissões à política de chaves ou à política do IAM. Para obter detalhes, consulte [Permitindo o uso de chaves KMS externas com Serviços da AWS](#cross-account-service).

Para mais informações sobre como trabalhar com políticas do IAM, consulte [Políticas do IAM](iam-policies.md).

## Permitindo o uso de chaves KMS externas com Serviços da AWS
<a name="cross-account-service"></a>

Você pode conceder a um usuário em outra conta permissão para usar sua chave do KMS com um serviço integrado ao AWS KMS. Por exemplo, um usuário em uma conta externa pode usar sua chave do KMS para criptografar os objetos em um bucket do Amazon S3 ou para criptografar os segredos que armazena no AWS Secrets Manager.

A política de chaves deve conceder ao usuário externo ou à conta do usuário externo a devida permissão para usar a chave do KMS. Além disso, você precisa vincular políticas do IAM à identidade que concede permissões ao usuário para usar o AWS service (Serviço da AWS). O serviço também pode exigir que os usuários tenham permissões adicionais na política de chaves ou na política do IAM. Para obter uma lista das permissões AWS service (Serviço da AWS) exigidas em uma chave gerenciada pelo cliente, consulte o tópico Proteção de dados no capítulo Segurança do guia do usuário ou do guia do desenvolvedor do serviço. 

## Usar chaves do KMS em outras contas
<a name="cross-account-use"></a>

Se você tiver permissão para usar uma chave KMS em outra Conta da AWS, poderá usar a chave KMS em Console de gerenciamento da AWS, AWS SDKs AWS CLI, e. Ferramentas da AWS para PowerShell

Para identificar uma chave do KMS em uma conta diferente em um comando shell ou solicitação de API, use os seguintes [identificadores de chave](concepts.md#key-id).
+ Para [operações criptográficas](kms-cryptography.md#cryptographic-operations), e [DescribeKey[GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html), use o ARN da [chave ou o [alias ARN](concepts.md#key-id-alias-ARN)](concepts.md#key-id-key-ARN) da chave KMS.
+ Para [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html), [GetKeyRotationStatus](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyRotationStatus.html), [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/ListGrants.html), e [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/RevokeGrant.html), use a chave ARN da chave KMS.

Se você inserir somente um ID de chave ou nome de alias, AWS presume que a chave KMS esteja na sua conta.

O AWS KMS console não exibe chaves KMS em outras contas, mesmo que você tenha permissão para usá-las. Além disso, as listas de chaves do KMS exibidas nos consoles de outros serviços da AWS não incluem chaves do KMS em outras contas. 

Para especificar uma chave KMS em uma conta diferente no console de um AWS serviço, você deve inserir o ARN da chave ou o alias ARN da chave KMS. O identificador de chave necessário varia de acordo com o serviço e pode diferir entre o console de serviço e suas operações de API. Para obter detalhes, consulte a documentação do serviço.

# Controlar o acesso a chaves de várias regiões
<a name="multi-region-keys-auth"></a>

Você pode usar chaves de várias regiões em cenários de conformidade, recuperação de desastres e backup que seriam mais complexos com chaves de uma única região. No entanto, como as propriedades de segurança das chaves de várias regiões são significativamente diferentes das de chaves de uma única região, convém ter cuidado ao autorizar a criação, o gerenciamento e o uso de chaves de várias regiões.

**nota**  
Instruções de políticas do IAM existentes com caracteres curinga no campo `Resource` agora aplicam-se a chaves de região única e de várias regiões. Para restringi-las a chaves KMS de região única ou chaves de várias regiões, use a chave de condição [kms:](conditions-kms.md#conditions-kms-multiregion). MultiRegion

Use suas ferramentas de autorização para impedir a criação e o uso de chaves de várias regiões em qualquer cenário em que uma única região seja suficiente. Permita que os diretores repliquem uma chave multirregional somente no Regiões da AWS que for necessário. Dê permissão para chaves de várias regiões apenas às entidades principais que precisam delas e apenas para tarefas necessárias.

Você pode usar políticas de chaves, políticas de IAM e concessões para permitir que os diretores do IAM gerenciem e usem chaves multirregionais em seu. Conta da AWS Cada chave de várias regiões é um recurso independente com um ARN de chave exclusivo e uma política de chaves. Você precisa estabelecer e manter uma política de chaves para cada chave e certificar-se de que as políticas do IAM novas e existentes implementem sua estratégia de autorização. 

Para oferecer suporte a chaves multirregionais, AWS KMS usa uma função vinculada ao serviço IAM. Essa função dá ao AWS KMS as permissões necessárias para sincronizar [propriedades compartilhadas](multi-region-keys-overview.md#mrk-sync-properties). Para obter mais informações, consulte [Autorizando a sincronização AWS KMS de chaves multirregionais](multi-region-auth-slr.md).

**Topics**
+ [Noções básicas de autorização para chaves de várias regiões](#multi-region-auth-about)
+ [Autorizar administradores e usuários de chave de várias regiões](#multi-region-auth-users)

## Noções básicas de autorização para chaves de várias regiões
<a name="multi-region-auth-about"></a>

Ao projetar políticas de chaves e políticas do IAM para chaves de várias regiões, considere os seguintes princípios.
+ **Política de chaves** — Cada chave de várias regiões é um recurso de chave do KMS independente com sua própria [política de chaves](key-policies.md). Você pode aplicar a mesma política de chaves ou uma política de chaves diferente a cada chave no conjunto de chaves de várias regiões relacionadas. As políticas de chaves *não* são [propriedades compartilhadas](multi-region-keys-overview.md#mrk-sync-properties) de chaves multirregionais. AWS KMS não copia nem sincroniza políticas de chaves entre chaves multirregionais relacionadas. 

  Quando você cria uma chave de réplica no AWS KMS console, o console exibe a política de chaves atual da chave primária como uma conveniência. É possível usar essa política de chaves, editá-la ou excluí-la e substituí-la. Mas mesmo que você aceite a política de chave primária inalterada, AWS KMS não sincroniza as políticas. Por exemplo, se você alterar a política de chaves da chave primária, a política de chaves da chave de réplica permanecerá igual.
+ **Política de chaves padrão** — Quando você cria chaves multirregionais usando as `ReplicateKey` operações [CreateKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateKey.html)e, a [política de chaves padrão](key-policy-default.md) é aplicada, a menos que você especifique uma política de chaves na solicitação. Essa é a mesma política de chave padrão aplicada a chaves de região única.
+ **Políticas do IAM** — Assim como acontece com todas as chaves do KMS, você pode usar políticas do IAM para controlar o acesso a chaves de várias regiões somente quando a [política de chaves permite](key-policy-default.md#key-policy-default-allow-root-enable-iam). [As políticas do IAM](iam-policies.md) se aplicam a todos Regiões da AWS por padrão. No entanto, você pode usar chaves de condição, como [aws: RequestedRegion](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requestedregion), para limitar as permissões a uma região específica. 

  Para criar chaves primárias e de réplica, as entidades principais devem ter a permissão `kms:CreateKey` em uma política do IAM aplicável à região na qual a chave é criada. 
+ **Subsídios** — os AWS KMS [subsídios](grants.md) são regionais. Cada concessão dá permissões para uma chave do KMS. É possível usar concessões para dar permissões para uma chave primária ou chave de réplica de várias regiões. Porém, você não pode usar uma única concessão para dar permissões para várias chaves do KMS, mesmo que elas sejam chaves de várias regiões relacionadas.
+ **ARN de chave** — Cada chave de várias regiões tem um [ARN de chave](mrk-how-it-works.md). A chave ARNs das chaves multirregionais relacionadas tem a mesma partição, conta e ID de chave, mas regiões diferentes.

  Para aplicar uma instrução de política do IAM a uma chave de várias regiões específica, use seu ARN de chave ou um padrão de ARN de chave que inclua a região. Para aplicar uma instrução de política do IAM a todas as chaves de várias regiões relacionadas, use um caractere curinga (\$1) no elemento Region do ARN, como mostra o exemplo abaixo.

  ```
  {
    "Effect": "Allow",  
    "Action": [
      "kms:Describe*",
      "kms:List*"
    ],
    "Resource": {
        "arn:aws:kms:*::111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab"
    }
  }
  ```

  Para aplicar uma declaração de política a todas as chaves multirregionais em sua Conta da AWS, você pode usar a condição [kms: MultiRegion](conditions-kms.md#conditions-kms-multiregion) policy ou um padrão de ID de chave que inclua o prefixo distinto`mrk-`.
+ **Função vinculada ao serviço** [— Os diretores que criam chaves primárias multirregionais devem ter a permissão iam:. CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html)

  [Para sincronizar as propriedades compartilhadas das chaves multirregionais relacionadas, AWS KMS assume uma função vinculada ao serviço do IAM.](multi-region-auth-slr.md) AWS KMS cria a função vinculada ao serviço Conta da AWS sempre que você cria uma chave primária multirregional. (Se a função existir, o AWS KMS a recriará, o que não causa nenhum problema.) A função é válida em todas as regiões. AWS KMS [Para permitir a criação (ou recriação) da função vinculada ao serviço, os diretores que criam chaves primárias multirregionais devem ter a permissão iam:. CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html)

## Autorizar administradores e usuários de chave de várias regiões
<a name="multi-region-auth-users"></a>

As entidades principais que criam e gerenciam chaves de várias regiões precisam das seguintes permissões nas regiões primária e de réplica:
+ `kms:CreateKey`
+ `kms:ReplicateKey`
+ `kms:UpdatePrimaryRegion`
+ `iam:CreateServiceLinkedRole`

### Criar uma chave primária
<a name="mrk-auth-create-primary"></a>

Para [criar uma chave primária multirregional](create-primary-keys.md), o principal precisa das CreateServiceLinkedRole permissões [kms: CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) e [iam:](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html) em uma política do IAM que seja efetiva na região da chave primária. As entidades principais que têm essas permissões podem criar chaves de região única e de várias regiões, a menos que você restrinja suas permissões. 

A `iam:CreateServiceLinkedRole` permissão permite criar AWS KMS a [**AWSServiceRoleForKeyManagementServiceMultiRegionKeys**função](multi-region-auth-slr.md) para sincronizar as [propriedades compartilhadas das chaves](multi-region-keys-overview.md#mrk-sync-properties) multirregionais relacionadas.

Por exemplo, essa política do IAM permite que uma entidade principal crie chaves multirregionais, anexe políticas para essas chaves e perfis vinculados ao serviço para as chaves multirregionais.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":{
      "Action": [
        "kms:CreateKey",
        "iam:CreateServiceLinkedRole"
      ],
      "Effect":"Allow",
      "Resource":"*"
  }
}
```

------

Para permitir ou negar a permissão para criar chaves primárias multirregionais, use a chave de MultiRegion condição [kms:](conditions-kms.md#conditions-kms-multiregion). Os valores válidos são `true` (chave de várias regiões) ou `false` (chave de região única). Por exemplo, a instrução de política do IAM a seguir usa uma ação `Deny` com a chave de condição `kms:MultiRegion` para impedir que as entidades principais criem chaves de várias regiões. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":{
      "Action":"kms:CreateKey",
      "Effect":"Deny",
      "Resource":"*",
      "Condition": {
          "Bool": {
            "kms:MultiRegion": true
          }
      }
  }
}
```

------

### Replicação de chaves
<a name="mrk-auth-replicate"></a>

Para [criar uma chave de réplica de várias regiões](#mrk-auth-replicate), a entidade principal precisará das seguintes permissões:
+  [kms: ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html) permissão na política de chaves da chave primária.
+ [kms: CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) permissão em uma política do IAM que é efetiva na região da chave de réplica.

Tenha cuidado ao conceder essas permissões. Elas permitem que as entidades principais criem chaves do KMS e as políticas de chaves que autorizam seu uso. A permissão `kms:ReplicateKey` também autoriza a transferência de material chave através dos limites da região no AWS KMS.

Para restringir o modo Regiões da AWS em que uma chave multirregional pode ser replicada, use a chave de condição [kms: ReplicaRegion](conditions-kms.md#conditions-kms-replica-region). Ela limita apenas a permissão `kms:ReplicateKey`. De outra forma, ela não terá efeito. Por exemplo, a política de chaves a seguir permite que a entidade principal replique essa chave primária, mas somente nas regiões especificadas.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/Administrator"
  },
  "Action": "kms:ReplicateKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ReplicaRegion": [
         "us-east-1",
         "eu-west-3",
         "ap-southeast-2"
      ]
    }
  }
}
```

### Atualizar a região primária
<a name="mrk-auth-update"></a>

As entidades principais autorizadas podem converter uma chave de réplica em uma chave primária, o que transforma a chave primária anterior em uma réplica. Essa ação é conhecida como [atualização da região primária](multi-region-update.md). Para atualizar a região principal, o principal precisa de [kms: UpdatePrimaryRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html) permissão em ambas as regiões. Você pode fornecer essas permissões em uma política de chaves ou política do IAM.
+ `kms:UpdatePrimaryRegion` na chave primária. Essa permissão deve ser efetiva na região da chave primária.
+ `kms:UpdatePrimaryRegion` na chave de réplica. Essa permissão deve ser efetiva na região da chave de réplica.

Por exemplo, a política de chaves a seguir dá aos usuários que podem assumir a função Administrador permissão para atualizar a região primária da chave do KMS. Essa chave do KMS pode ser a chave primária ou uma chave de réplica nessa operação.

```
{
  "Effect": "Allow",
  "Resource": "*",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/Administrator"
  },
  "Action": "kms:UpdatePrimaryRegion"
}
```

Para restringir o Regiões da AWS que pode hospedar uma chave primária, use a chave de PrimaryRegion condição [kms:](conditions-kms.md#conditions-kms-primary-region). Por exemplo, a declaração de política do IAM a seguir permite que os diretores atualizem a região primária das chaves multirregionais no Conta da AWS, mas somente quando a nova região primária for uma das regiões especificadas.

```
{
  "Effect": "Allow",  
  "Action": "kms:UpdatePrimaryRegion",
  "Resource": {
      "arn:aws:kms:*:111122223333:key/*"
  },
  "Condition": {
    "StringEquals": {
      "kms:PrimaryRegion": [ 
         "us-west-2",
         "sa-east-1",
         "ap-southeast-1"
      ]
    }
  }
}
```

### Usar e gerenciar chaves de várias regiões
<a name="mrk-auth-using"></a>

Por padrão, as entidades principais que têm permissão para usar e gerenciar chaves do KMS em uma Conta da AWS e região também têm permissão para usar e gerenciar chaves de várias regiões. No entanto, você pode usar a chave de MultiRegion condição [kms:](conditions-kms.md#conditions-kms-multiregion) para permitir somente chaves de região única ou somente chaves de várias regiões. Ou use a chave de MultiRegionKeyType condição [kms:](conditions-kms.md#conditions-kms-multiregion-key-type) para permitir somente chaves primárias multirregionais ou somente chaves de réplica. Ambas as chaves de condição controlam o acesso à [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operação e a qualquer operação que use uma chave KMS existente, como [Criptografar ou. [EnableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKey.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)

A instrução de política do IAM a seguir usa a chave de condição `kms:MultiRegion` para impedir que as entidades principais usem ou gerenciem qualquer chave de várias regiões.

```
{
  "Effect": "Deny",  
  "Action": "kms:*",
  "Resource": "*",
  "Condition": {
    "Bool": "kms:MultiRegion": true
  }
}
```

Esse exemplo de instrução de política do IAM usa a condição `kms:MultiRegionKeyType` para permitir que as entidades principais programem e cancelem a exclusão de chaves, mas somente em chaves de réplica de várias regiões.

```
{
  "Effect": "Allow",  
  "Action": [
    "kms:ScheduleKeyDeletion",
    "kms:CancelKeyDeletion"
  ],
  "Resource": {
      "arn:aws:kms:us-west-2:111122223333:key/*"
  },
  "Condition": {
    "StringEquals": "kms:MultiRegionKeyType": "REPLICA"
  }
}
```

# Determinando o acesso ao AWS KMS keys
<a name="determining-access"></a>

Para determinar a extensão total de quem ou o que atualmente tem acesso a uma AWS KMS key, você deve examinar a política principal da chave KMS, todas as [concessões](grants.md) que se aplicam à chave KMS e, potencialmente, todas as políticas AWS Identity and Access Management (IAM). Você pode fazer isso para determinar o escopo do uso potencial de uma chave do KMS ou para ajudar a cumprir os requisitos de conformidade ou de auditoria. Os tópicos a seguir podem ajudar você a gerar uma lista completa das entidades principais da AWS (identidades) que no momento têm acesso a uma chave do KMS.

**Topics**
+ [Examinar a política de chaves](determining-access-key-policy.md)
+ [Examinar políticas do IAM](determining-access-iam-policies.md)
+ [Examinar concessões](determining-access-grants.md)

# Examinar a política de chaves
<a name="determining-access-key-policy"></a>

[Políticas de chaves](key-policies.md) são a principal maneira de controlar o acesso a chaves do KMS. Cada chave do KMS tem exatamente uma política de chaves.

Quando uma política de chaves consiste em ou inclui a [política de chaves padrão](key-policy-default.md#key-policy-default-allow-root-enable-iam), ela permite que os administradores do IAM na conta usem políticas do IAM para controlar o acesso à chave do KMS. Além disso, se a política de chaves conceder a [outra Conta da AWS](key-policy-modifying-external-accounts.md) permissão para usar a chave do KMS, os administradores do IAM na conta externa poderão usar políticas do IAM para delegar essas permissões. Para determinar a lista completa de entidades principais que podem acessar a chave do KMS, [examine as políticas do IAM](determining-access-iam-policies.md). 

Para ver a política de chaves de uma [chave gerenciada pelo AWS KMS cliente](concepts.md#customer-mgn-key) ou [Chave gerenciada pela AWS](concepts.md#aws-managed-key)em sua conta, use a operação Console de gerenciamento da AWS ou a [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html)operação na AWS KMS API. Para visualizar a política de chaves, é necessário ter permissões `kms:GetKeyPolicy` para a chave do KMS. Para obter instruções sobre como visualizar a política de chaves de uma chave do KMS, consulte [Visualizar uma política de chave](key-policy-viewing.md).

Examine o documento de política de chaves e anote todas as principais especificadas em cada elemento `Principal` da declaração de política. Em uma declaração de política com `Allow` efeito, os usuários do IAM, as funções do IAM e Contas da AWS o `Principal` elemento têm acesso a essa chave do KMS.

**nota**  
Não defina a entidade principal como um asterisco (\$1) em qualquer instrução de política de chave que permita permissões, a menos que você utilize [condições](policy-conditions.md) para limitar a política de chave. Um asterisco dá a cada identidade em cada Conta da AWS permissão para usar a chave KMS, a menos que outra declaração de política a negue explicitamente. Usuários de outros usuários Contas da AWS podem usar sua chave KMS sempre que tiverem permissões correspondentes em suas próprias contas.

Os exemplos a seguir usam as declarações de política encontradas na [política de chaves padrão](key-policy-default.md) para demonstrar como fazer isso.

**Example Declaração de política 1**  

```
{
  "Sid": "Enable IAM User Permissions",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:root"},
  "Action": "kms:*",
  "Resource": "*"
}
```
Na declaração de política 1, `arn:aws:iam::111122223333:root` é um [principal de AWS conta](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts) que se refere ao Conta da AWS 111122223333. (Não corresponde ao usuário raiz da conta.) Por padrão, uma declaração de política como essa é incluída no documento de política de chaves quando você cria uma nova chave KMS com o Console de gerenciamento da AWS, ou cria uma nova chave KMS programaticamente, mas não fornece uma política de chaves.  
Um documento de política de chaves com uma declaração que permite o acesso às [políticas de Conta da AWS habilitação do IAM na conta para permitir o acesso à chave KMS](key-policy-default.md#key-policy-default-allow-root-enable-iam). Isso significa que os usuários e perfis na conta podem ter acesso à chave do KMS, mesmo se não estiverem explicitamente listados como entidades principais no documento de política de chaves. [Examine todas as políticas do IAM](determining-access-iam-policies.md) em todas as Contas da AWS listadas como principais para determinar se elas permitem acesso a essa chave do KMS.

**Example Declaração de política 2**  

```
{
  "Sid": "Allow access for Key Administrators",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/KMSKeyAdmins"},
  "Action": [
    "kms:Describe*",
    "kms:Put*",
    "kms:Create*",
    "kms:Update*",
    "kms:Enable*",
    "kms:Revoke*",
    "kms:List*",
    "kms:Disable*",
    "kms:Get*",
    "kms:Delete*",
    "kms:ScheduleKeyDeletion",
    "kms:CancelKeyDeletion"
  ],
  "Resource": "*"
}
```
Na declaração de política 2, `arn:aws:iam::111122223333:role/KMSKeyAdmins` refere-se à função do IAM chamada KMSKey Admins em Conta da AWS 111122223333. Os usuários autorizados a assumir esse perfil podem executar as ações listadas na instrução de política, que são as ações administrativas para gerenciar uma chave do KMS.

**Example Declaração de política 3**  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"},
  "Action": [
    "kms:DescribeKey",
    "kms:GenerateDataKey*",
    "kms:Encrypt",
    "kms:ReEncrypt*",
    "kms:Decrypt"
  ],
  "Resource": "*"
}
```
Na declaração de política 3, `arn:aws:iam::111122223333:role/EncryptionApp` refere-se à função do IAM nomeada EncryptionApp em Conta da AWS 111122223333. As entidades principais autorizadas a assumir esse perfil podem executar as ações listadas na instrução de política, que incluem as [operações criptográficas](kms-cryptography.md#cryptographic-operations) para uma chave do KMS de criptografia simétrica.

**Example Declaração de política 4**  

```
{
  "Sid": "Allow attachment of persistent resources",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"},
  "Action": [
    "kms:ListGrants",
    "kms:CreateGrant",
    "kms:RevokeGrant"
  ],
  "Resource": "*",
  "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}
}
```
Na declaração de política 4, `arn:aws:iam::111122223333:role/EncryptionApp` refere-se à função do IAM nomeada EncryptionApp em Conta da AWS 111122223333. As entidades principais autorizadas assumem esse perfil e podem executar as ações listadas na instrução de política. Essas ações, quando combinadas com as ações permitidas na **Instrução de política de exemplo 3**, são aquelas necessárias para delegar o uso da chave do KMS à maioria dos [serviços da AWS integrados ao AWS KMS](service-integration.md), especificamente os serviços que usam [concessões](grants.md). O GrantIsFor AWSResource valor [kms:](conditions-kms.md#conditions-kms-grant-is-for-aws-resource) no `Condition` elemento garante que a delegação seja permitida somente quando o delegado é um AWS serviço que se integra AWS KMS e usa concessões para autorização.

Para conhecer todas as diferentes maneiras de especificar uma entidade principal em um documento de política de chaves, consulte [Especificar uma entidade principal ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Principal_specifying), no *Manual do usuário do IAM*.

Para saber mais sobre as AWS KMS principais políticas, consulte[Políticas-chave em AWS KMS](key-policies.md).

# Examinar políticas do IAM
<a name="determining-access-iam-policies"></a>

Além da política de chaves e concessões, também é possível usar as [políticas do IAM](iam-policies.md) para permitir o acesso a uma chave do KMS. Para obter mais informações sobre como as políticas do IAM e as políticas de chaves funcionam juntas, consulte [Solução de problemas de AWS KMS permissões](policy-evaluation.md).

Para determinar quais entidades principais têm acesso no momento a uma chave do KMS por meio de políticas do IAM, você pode usar a ferramenta baseada em navegador [Simulador de políticas do IAM](https://policysim.aws.amazon.com/), ou pode fazer solicitações para a API do IAM.

**Contents**
+ [Examinar políticas do IAM com o Simulador de políticas do IAM](#determining-access-iam-policy-simulator)
+ [Examinar políticas do IAM com a API do IAM](#determining-access-iam-api)

## Examinar políticas do IAM com o Simulador de políticas do IAM
<a name="determining-access-iam-policy-simulator"></a>

O Simulador de políticas do IAM pode ajudar a saber quais entidades principais têm acesso a uma chave do KMS por meio de uma política do IAM.

**Para usar o simulador de políticas do IAM para determinar o acesso a uma chave do KMS**

1. Faça login no Console de gerenciamento da AWS e abra o IAM Policy Simulator em[https://policysim.aws.amazon.com/](https://policysim.aws.amazon.com/).

1. No painel **Users, Groups, and Roles (Usuários, grupos e funções)**, escolha o usuário, o grupo ou a função cujas políticas você deseja simular.

1. (Opcional) Desmarque a caixa de seleção ao lado de qualquer política que você deseja omitir da simulação. Para simular todas as políticas, deixe todas as políticas selecionadas.

1. No painel **Policy Simulator (Simulador de políticas)**, faça o seguinte:

   1. Para **Select service (Selecionar serviço)**, selecione **Key Management Service**.

   1. Para simular AWS KMS ações específicas, em **Selecionar ações**, escolha as ações a serem simuladas. Para simular todas as AWS KMS ações, escolha **Selecionar tudo**.

1. (Opcional) O Simulador de políticas simula o acesso a todas as chaves do KMS por padrão. Para simular o acesso a uma determinada chave do KMS, escolha **Simulation Settings** (Configurações de simulação) e digite o nome do recurso da Amazon (ARN) da chave do KMS a ser simulada.

1. Selecione **Run Simulation (Executar simulação)**.

Você pode visualizar os resultados da simulação na seção **Results (Resultados)**. Repita as etapas 2 a 6 para cada usuário, grupo e perfil na Conta da AWS.

## Examinar políticas do IAM com a API do IAM
<a name="determining-access-iam-api"></a>

Você pode usar a API do IAM para examinar políticas do IAM programaticamente. As etapas a seguir fornecem uma visão geral de como fazer isso:

1. Para cada um Conta da AWS listado como principal na política de chaves (ou seja, cada [principal de AWS conta](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts) especificado neste formato:`"Principal": {"AWS": "arn:aws:iam::111122223333:root"}`), use as [ListRoles](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html)operações [ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)e na API do IAM para obter todos os usuários e funções na conta.

1. Para cada usuário e função na lista, use a [SimulatePrincipalPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulatePrincipalPolicy.html)operação na API IAM, transmitindo os seguintes parâmetros:
   + Para `PolicySourceArn`, especifique o Amazon Resource Name (ARN) de um usuário ou função da sua lista. É possível especificar somente um `PolicySourceArn` para cada solicitação `SimulatePrincipalPolicy`, portanto, você deve chamar essa operação diversas vezes, uma vez para cada perfil e usuário em sua lista.
   + Para a `ActionNames` lista, especifique cada ação AWS KMS da API a ser simulada. Para simular todas as ações AWS KMS da API, use`kms:*`. Para testar ações de AWS KMS API individuais, preceda cada ação de API com "`kms:`“, por exemplo,"`kms:ListKeys`”. Para obter uma lista completa das ações de API do AWS KMS , consulte [Actions](https://docs.aws.amazon.com/kms/latest/APIReference/API_Operations.html) (Ações) na *Referência de API do AWS Key Management Service *.
   + (Opcional) Para determinar se os usuários ou funções têm acesso a chaves KMS específicas, use o `ResourceArns` parâmetro para especificar uma lista dos nomes de recursos da Amazon (ARNs) das chaves do KMS. Para determinar se os usuários ou perfis têm acesso a qualquer chave do KMS, omita o parâmetro `ResourceArns`.

O IAM responde a cada solicitação `SimulatePrincipalPolicy` com uma decisão de avaliação: `allowed`, `explicitDeny` ou `implicitDeny`. Para cada resposta que contém uma decisão de avaliação de`allowed`, a resposta inclui o nome da operação de AWS KMS API específica que é permitida. Ela também inclui o ARN da chave do KMS que foi usada na avaliação, se houver.

# Examinar concessões
<a name="determining-access-grants"></a>

As concessões são mecanismos avançados para especificar permissões que você ou um AWS serviço integrado AWS KMS podem usar para especificar como e quando uma chave KMS pode ser usada. Concessões são associadas a uma chave do KMS, e cada concessão contém a entidade principal que recebe permissão para usar a chave do KMS e uma lista de operações que são permitidas. As concessões são uma alternativa para a política de chaves e são úteis para casos de uso específicos. Para obter mais informações, consulte [Subsídios em AWS KMS](grants.md).

Para obter uma lista de concessões para uma chave KMS, use a AWS KMS [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)operação. É possível examinar as concessões de uma chave do KMS para determinar quem ou o quê tem acesso no momento para usar a chave do KMS por meio dessas concessões. Por exemplo, a seguir há uma representação JSON de uma concessão que foi obtida do comando [list-grants](https://docs.aws.amazon.com/cli/latest/reference/kms/list-grants.html) na AWS CLI.

```
{"Grants": [{
  "Operations": ["Decrypt"],
  "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
  "Name": "0d8aa621-43ef-4657-b29c-3752c41dc132",
  "RetiringPrincipal": "arn:aws:iam::123456789012:root",
  "GranteePrincipal": "arn:aws:sts::111122223333:assumed-role/aws:ec2-infrastructure/i-5d476fab",
  "GrantId": "dc716f53c93acacf291b1540de3e5a232b76256c83b2ecb22cdefa26576a2d3e",
  "IssuingAccount": "arn:aws:iam::111122223333:root",
  "CreationDate": 1.444151834E9,
  "Constraints": {"EncryptionContextSubset": {"aws:ebs:id": "vol-5cccfb4e"}}
}]}
```

Para saber quem ou o quê tem acesso para usar a chave do KMS, procure o elemento `"GranteePrincipal"`. No exemplo anterior, o principal favorecido é um usuário de função assumida associado à instância do EC2 i-5d476fab. A infraestrutura do EC2 usa essa função para anexar o volume do EBS criptografado vol-5cccfb4e à instância. Nesse caso, a função da infraestrutura do EC2 tem permissão para usar a chave do KMS porque você já criou um volume do EBS criptografado protegido por essa chave do KMS. Anexe o volume a uma instância do EC2.

A seguir há outro exemplo de representação JSON de uma concessão que foi obtida do comando [list-grants](https://docs.aws.amazon.com/cli/latest/reference/kms/list-grants.html) na AWS CLI. No exemplo a seguir, o principal beneficiário é outro. Conta da AWS

```
{"Grants": [{
  "Operations": ["Encrypt"],
  "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
  "Name": "",
  "GranteePrincipal": "arn:aws:iam::444455556666:root",
  "GrantId": "f271e8328717f8bde5d03f4981f06a6b3fc18bcae2da12ac38bd9186e7925d11",
  "IssuingAccount": "arn:aws:iam::111122223333:root",
  "CreationDate": 1.444151269E9
}]}
```

# Contexto de criptografia
<a name="encrypt_context"></a>

**nota**  
Não é possível especificar um contexto de criptografia em uma operação criptográfica com uma [chave do KMS assimétrica](symmetric-asymmetric.md) ou uma [chave do KMS de Hash-based message authentication code (HMAC – Código de autenticação de mensagem por hash)](hmac.md). Algoritmos assimétricos e algoritmos de Message authentication code (MAC – Código de autenticação de mensagem) não são compatíveis com um contexto de criptografia.

Todas as [operações AWS KMS criptográficas](kms-cryptography.md#cryptographic-operations) com [chaves KMS de criptografia simétrica](symm-asymm-choose-key-spec.md#symmetric-cmks) aceitam um *contexto de criptografia*, um conjunto opcional de pares de chave-valor não secretos que podem conter informações contextuais adicionais sobre os dados. Você pode inserir o contexto de criptografia nas `Encrypt` operações AWS KMS para aprimorar a autorização e a auditabilidade de suas chamadas de descriptografia da AWS KMS API. AWS KMS usa o contexto de criptografia como dados autenticados adicionais (AAD) para oferecer suporte à criptografia autenticada. O contexto de criptografia é associado de maneira criptográfica ao texto cifrado, de modo que o mesmo contexto de criptografia é necessário para descriptografar os dados.

O contexto de criptografia não é secreto nem criptografado. Ele é exibido em texto simples em [Logs do AWS CloudTrail](logging-using-cloudtrail.md), para você possa usá-lo para identificar e categorizar suas operações de criptografia. Seu contexto de criptografia não deve incluir informações confidenciais. Recomendamos que o seu contexto de criptografia descreva os dados que estão sendo criptografados ou descriptografados. Por exemplo, quando você criptografar um arquivo, poderá usar parte do caminho do arquivo como contexto de criptografia.

```
"encryptionContext": {
    "department": "10103.0"
}
```

Por exemplo, ao criptografar volumes e snapshots criados com a operação [Amazon Elastic Block Store](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) (Amazon EBS) [CreateSnapshot](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSnapshot.html), o Amazon EBS usa o ID do volume como valor do contexto de criptografia.

```
"encryptionContext": {
  "aws:ebs:id": "vol-abcde12345abc1234"
}
```

Você também pode usar o contexto de criptografia para refinar ou limitar o acesso à AWS KMS keys sua conta. Você pode usar o contexto de criptografia [como uma restrição em concessões](grants.md) e como uma *[condição nas declarações de política](policy-conditions.md)*. As chaves de contexto de criptografia e seus valores podem ser strings arbitrárias com `aws`. Esses valores contrastam com as [tags geradas pela AWS](https://docs.aws.amazon.com/tag-editor/latest/userguide/best-practices-and-strats.html#tag-conventions), como [aws:cloudformation:stack-name](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-resource-tags.html). Para obter mais informações, consulte [*kms:EncryptionContext: chave de contexto*](conditions-kms.md#conditions-kms-encryption-context). 

Para saber como usar o contexto de criptografia para proteger a integridade dos dados criptografados, consulte [a postagem Como proteger a integridade de seus dados criptografados usando AWS Key Management Service e EncryptionContext](https://aws.amazon.com/blogs/security/how-to-protect-the-integrity-of-your-encrypted-data-by-using-aws-key-management-service-and-encryptioncontext/) no blog AWS de segurança.

## Regras de contexto de criptografia
<a name="encryption-context-rules"></a>

AWS KMS impõe as seguintes regras para chaves e valores de contexto de criptografia.
+ A chave e o valor em um par de contexto de criptografia devem ser strings literais simples. Se você usar um tipo diferente, como um inteiro ou flutuante, o AWS KMS o interpretará como uma string.
+ As chaves e valores em um contexto de criptografia podem incluir caracteres Unicode. Se um contexto de criptografia incluir caracteres que não são permitidos em políticas de chaves ou políticas do IAM, você não poderá especificar o contexto de criptografia em chaves de condição de política, como [`kms:EncryptionContext:context-key`](conditions-kms.md#conditions-kms-encryption-context) e [`kms:EncryptionContextKeys`](conditions-kms.md#conditions-kms-encryption-context-keys). Para obter detalhes sobre as regras de documento de política de chaves, consulte [Formato de política de chaves](key-policy-overview.md#key-policy-format). Para obter detalhes sobre as regras de documento de política do IAM, consulte [Requisitos de nome do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-names) no *Guia do usuário do IAM*.

## Contexto de criptografia em políticas
<a name="encryption-context-authorization"></a>

O contexto de criptografia é usado principalmente para verificar a integridade e a autenticidade. No entanto, também é possível usar o contexto de criptografia para controlar o acesso a AWS KMS keys de criptografia simétrica em políticas de chave e em políticas do IAM. 

As chaves de EncryptionContextKeys condição [kmsEncryptionContext::](conditions-kms.md#conditions-kms-encryption-context) e [kms:](conditions-kms.md#conditions-kms-encryption-context) permitem (ou negam) uma permissão somente quando a solicitação inclui chaves de contexto de criptografia específicas ou pares de valores-chave. 

Por exemplo, a instrução de política de chave a seguir permite que a função `RoleForExampleApp` use a chave do KMS em operações `Decrypt`. Ela usa a chave da condição `kms:EncryptionContext:context-key` para conceder essa permissão somente quando o contexto de criptografia na solicitação inclui um par de contexto de criptografia `AppName:ExampleApp`.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:Decrypt",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:AppName": "ExampleApp"
    }
  }
}
```

Para obter mais informações sobre essas chaves de condição de contexto de criptografia, consulte [Chaves de condição para AWS KMS](policy-conditions.md).

## Contexto de criptografia em concessões
<a name="encryption-context-grants"></a>

Ao [criar uma concessão](grants.md), você pode incluir [restrições de concessão](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html) que estabeleçam condições para as permissões de concessão. AWS KMS suporta duas restrições de concessão `EncryptionContextEquals` e `EncryptionContextSubset` ambas envolvem o [contexto de criptografia](#encrypt_context) em uma solicitação de uma operação criptográfica. Quando você usa essas restrições de concessão, as permissões na concessão são efetivas apenas quando o contexto de criptografia na solicitação para a operação criptográfica atende aos requisitos das restrições de concessão. 

Por exemplo, você pode adicionar uma restrição de `EncryptionContextEquals` concessão a uma concessão que permita a [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)operação. Com essa restrição, a concessão permite a operação apenas quando o contexto de criptografia na solicitação é uma correspondência com maiúsculas e minúsculas ao contexto de criptografia na restrição de concessão.

```
$ aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:user/exampleUser \
    --retiring-principal arn:aws:iam::111122223333:role/adminRole \
    --operations GenerateDataKey \
    --constraints EncryptionContextEquals={Purpose=Test}
```

Uma solicitação como a seguinte da entidade principal receptora da concessão atenderia à restrição `EncryptionContextEquals`.

```
$ aws kms generate-data-key \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --key-spec AES_256 \
    --encryption-context Purpose=Test
```

Para obter detalhes sobre as restrições de concessão, consulte [Usar restrições de concessão](create-grant-overview.md#grant-constraints). Para obter informações detalhadas sobre concessões, consulte [Subsídios em AWS KMS](grants.md).

## Registrar em log o contexto de criptografia
<a name="encryption-context-auditing"></a>

AWS KMS usa AWS CloudTrail para registrar o contexto de criptografia para que você possa determinar quais chaves e dados do KMS foram acessados. A entrada de log mostra exatamente quais chaves do KMS foram usada para criptografar ou descriptografar dados específicos referenciados pelo contexto de criptografia na entrada de log.

**Importante**  
Como o contexto de criptografia é registrado em log, ele não deve conter informações confidenciais.

## Armazenar o contexto de criptografia
<a name="encryption-context-storing"></a>

Para simplificar o uso de qualquer contexto de criptografia quando você chama as operações [https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) ou [https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html), é possível armazenar o contexto de criptografia com os dados criptografados. Recomendamos que você armazene apenas o suficiente do contexto de criptografia para ajudar a criar o contexto de criptografia por completo quando você precisar dele para criptografia ou descriptografia. 

Por exemplo, se o contexto de criptografia é o caminho para um arquivo, armazene apenas parte desse caminho com o conteúdo do arquivo criptografado. Quando você precisar do contexto de criptografia completo, reconstrua-o do fragmento armazenado. Se alguém tentar violar o arquivo, como renomear ou mover para um local diferente, o valor do contexto de criptografia será alterado e a solicitação de descriptografia falhará.

# Testar suas permissões
<a name="testing-permissions"></a>

Para usar AWS KMS, você precisa ter credenciais que AWS possam ser usadas para autenticar suas solicitações de API. As credenciais devem incluir permissões para acessar chaves KMS e aliases. As permissões são determinadas pelas política de chave, políticas do IAM, concessões e controles de acesso entre contas. Além de controlar o acesso às chaves KMS, é possível controlar o acesso ao seu CloudHSM e aos seus repositórios de chaves personalizados.

É possível especificar o parâmetro da API `DryRun` para verificar se você tem as permissões necessárias para usar as chaves do AWS KMS . Você também pode usar `DryRun` para verificar se os parâmetros de solicitação em uma chamada de AWS KMS API estão especificados corretamente. 

**Topics**
+ [Qual é o DryRun parâmetro?](#what-is-dryrun)
+ [Especificando DryRun com a API](#dryrun-api)

## Qual é o DryRun parâmetro?
<a name="what-is-dryrun"></a>

 `DryRun` é um parâmetro de API opcional que você especifica para verificar se as chamadas da API do AWS KMS serão bem-sucedidas. Use `DryRun` para testar sua chamada de API, antes de realmente fazer a chamada para o AWS KMS. É possível verificar o seguinte: 
+ Que você tem as permissões necessárias para usar as chaves do AWS KMS .
+ Que você especificou os parâmetros na chamada corretamente.

AWS KMS suporta o uso do `DryRun` parâmetro em determinadas ações da API: 
+ [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)
+ [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)
+ [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html)
+ [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)
+ [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)
+ [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)
+ [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html)
+ [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)
+ [GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html)
+ [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)
+ [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)
+ [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)
+ [Sign](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html)
+ [Verificar](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html)
+ [VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html)

O uso do parâmetro `DryRun` incorrerá em cobranças e será cobrado como uma solicitação de API padrão. Para obter mais informações sobre AWS KMS preços, consulte [AWS Key Management Service Preços](https://aws.amazon.com/kms/pricing/).

 Todas as solicitações de API que usam o parâmetro `DryRun` se aplicam à cota de solicitações da API e podem resultar em uma exceção de controle de utilização se você exceder a cota de solicitação da API. Por exemplo, chamar [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) com `DryRun` ou sem `DryRun` conta na mesma cota de operações criptográficas. Para saber mais, consulte [Solicitações de AWS KMS limitação](throttling.md).

Cada chamada para uma operação de AWS KMS API é capturada como um evento e registrada em um AWS CloudTrail registro. A saída de qualquer operação que especifique o `DryRun` parâmetro aparece no seu CloudTrail registro. Para obter mais informações, consulte [Registrando chamadas de AWS KMS API com AWS CloudTrail](logging-using-cloudtrail.md).

## Especificando DryRun com a API
<a name="dryrun-api"></a>

Para usar`DryRun`, especifique o `—dry-run` parâmetro em AWS CLI comandos e chamadas de AWS KMS API compatíveis com o parâmetro. Ao fazer isso, AWS KMS verificará se sua chamada será bem-sucedida. AWS KMS as chamadas usadas sempre falharão e `DryRun` retornarão uma mensagem com informações sobre o motivo pelo qual a chamada falhou. A mensagem pode incluir as seguintes exceções:
+ `DryRunOperationException` ‐ A solicitação seria bem-sucedida se `DryRun` não estivesse especificada. 
+ `ValidationException` ‐ A solicitação falhou devido à especificação de um parâmetro de API incorreto.
+ `AccessDeniedException` ‐ Você não tem permissões para realizar a ação de API especificada no recurso KMS.

Por exemplo, o comando a seguir usa a [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operação e cria uma concessão que permite que os usuários autorizados a assumir a `keyUserRole` função chamem a operação [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) em uma chave KMS [simétrica](symm-asymm-choose-key-spec.md#symmetric-cmks) especificada. O parâmetro `DryRun` está especificado.

```
$  aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \
    --operations Decrypt \
    --dry-run
```

# Solução de problemas de AWS KMS permissões
<a name="policy-evaluation"></a><a name="security_iam_troubleshoot"></a>

Ao autorizar o acesso a uma chave KMS, AWS KMS avalia o seguinte:
+ A [política de chaves](determining-access-key-policy.md) associada à chave do KMS. A política de chaves é sempre definida na Conta da AWS região que possui a chave KMS. 
+ Todas as [políticas do IAM](determining-access-iam-policies.md) que são vinculadas ao usuário ou ao perfil que realiza a solicitação. As políticas do IAM do que controlam o uso de uma chave do KMS pela entidade principal sempre são definidas na Conta da AWS da entidade principal.
+ Todas as [concessões](determining-access-grants.md) que se aplicam à chave do KMS.
+ Outros tipos de políticas que podem se aplicar à solicitação para usar a chave do KMS, como [políticas de controle de serviço do AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_type-auth.html#orgs_manage_policies_scp) e [políticas de endpoint da VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#edit-vpc-endpoint-policy). Essas políticas são opcionais e permitem todas as ações por padrão, mas é possível usá-las para restringir permissões concedidas de outra forma às entidades principais.

AWS KMS avalia esses mecanismos de política em conjunto para determinar se o acesso à chave KMS é permitido ou negado. Para fazer isso, AWS KMS usa um processo semelhante ao descrito no fluxograma a seguir. O fluxograma a seguir fornece uma representação visual do processo de avaliação de política.

![\[Fluxograma que descreve o processo de avaliação de política\]](http://docs.aws.amazon.com/pt_br/kms/latest/developerguide/images/updated-kms-authz-diagram.png)


Esse fluxograma está dividido em duas partes. As partes parecem ser sequenciais, mas geralmente são avaliadas ao mesmo tempo.
+ A *autorização de uso* determina se você tem permissão para usar uma chave do KMS com base em sua política de chaves, políticas do IAM, concessões e outras políticas aplicáveis.
+ A *confiança de chave* determina se você deve confiar em uma chave do KMS que tem autorização para usar. Em geral, você confia nos recursos do seu Conta da AWS. Mas você também pode se sentir confiante em usar as chaves KMS de outra forma Conta da AWS se uma concessão ou política do IAM em sua conta permitir que você use a chave KMS.

Use esse fluxograma para descobrir por que um autor da chamada recebeu ou não permissão para usar uma chave do KMS. Ou use-o para avaliar suas políticas e concessões. Por exemplo, o fluxograma mostra que um autor de chamada pode ter acesso negado por uma instrução `DENY` explícita ou pela ausência de uma instrução `ALLOW` explícita na política de chaves, política do IAM ou concessão.

O fluxograma consegue explicar alguns cenários comuns de permissão.

**Topics**
+ [Exemplo 1: O usuário tem acesso negado a uma chave KMS em seu Conta da AWS](#example-no-iam)
+ [Exemplo 2: O usuário assume a função com permissão para usar uma chave KMS em uma outra Conta da AWS](#example-cross-acct)

## Exemplo 1: O usuário tem acesso negado a uma chave KMS em seu Conta da AWS
<a name="example-no-iam"></a>

Alice é usuária do IAM no Conta da AWS 111122223333. Ela teve o acesso negado a uma chave do KMS na mesma Conta da AWS. Por que Alice não pode usar a chave do KMS?

Nesse caso, Alice teve o acesso negado à chave do KMS porque não há uma política de chaves, política do IAM ou concessão que dê a ela as permissões necessárias. A política de chaves da chave KMS permite o uso de políticas do IAM Conta da AWS para controlar o acesso à chave do KMS, mas nenhuma política do IAM dá permissão a Alice para usar a chave do KMS.

![\[Fluxograma que descreve o processo de avaliação de política\]](http://docs.aws.amazon.com/pt_br/kms/latest/developerguide/images/kms-auth-flow-Alice.png)


Considere as políticas relevantes para este exemplo.
+ A chave do KMS que Alice deseja usar tem a [política de chaves padrão](key-policy-default.md). Essa política [permite que a Conta da AWS](key-policy-default.md#key-policy-default-allow-root-enable-iam) que possui a chave do KMS use as políticas do IAM para controlar o acesso à chave do KMS. Esta política de chaves atende à condição*A política de chaves PERMITE que a conta dos chamadores usem políticas do IAM para controlar o acesso à chave?* no fluxograma.

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Id" : "key-test-1",
    "Statement" : [ {
      "Sid" : "DelegateToIAMPolicies",
      "Effect" : "Allow",
      "Principal" : {
        "AWS" : "arn:aws:iam::111122223333:root"
      },
      "Action" : "kms:*",
      "Resource" : "*"
    } ]
  }
  ```

------
+ No entanto, nenhuma política de chaves, política do IAM ou concessão permite que Alice use a chave do KMS. Portanto, é negada à Alice a permissão para usar a chave do KMS.

## Exemplo 2: O usuário assume a função com permissão para usar uma chave KMS em uma outra Conta da AWS
<a name="example-cross-acct"></a>

Bob é um usuário na conta 1 (111122223333). Ele tem permissão para usar uma chave do KMS na conta 2 (444455556666) em [operações de criptografia](kms-cryptography.md#cryptographic-operations). Como isso é possível?

**dica**  
Ao avaliar permissões entre contas, lembre-se de que a política de chaves é especificada na conta da chave do KMS. A política do IAM é especificada na conta do autor da chamada, mesmo quando ele está em uma conta diferente. Para obter detalhes sobre como fornecer acesso entre contas a chaves do KMS, consulte [Permitir que usuários de outras contas usem uma chave do KMS](key-policy-modifying-external-accounts.md).
+ A política de chaves da chave do KMS permite que a conta 2 use políticas do IAM para controlar o acesso à chave do KMS. 
+ A política de chaves da chave do KMS na conta 2 permite que a conta 1 use a chave do KMS em operações de criptografia. No entanto, a conta 1 deve usar políticas do IAM para conceder às suas entidades principais acesso à chave do KMS.
+ Uma política do IAM na conta 1 permite que a função `Engineering` use a chave do KMS na conta 2 para operações de criptografia.
+ Bob, um usuário na conta 1, tem permissão para assumir a função `Engineering`.
+ Bob pode confiar nessa chave do KMS, pois, mesmo que ela não esteja na conta dele, uma política do IAM na conta dele concede uma permissão explícita para usar essa chave do KMS.

![\[Fluxograma que descreve o processo de avaliação de política\]](http://docs.aws.amazon.com/pt_br/kms/latest/developerguide/images/kms-auth-flow-Bob.png)


Considere as políticas que permitem que Bob, um usuário na conta 1, use a chave do KMS na conta 2.
+ A política de chaves da chave do KMS permite que a conta 2 (444455556666, a conta que possui a chave do KMS) use políticas do IAM para controlar o acesso à chave do KMS. Essa política de chaves também permite que a conta 1 (111122223333) use a chave do KMS em operações de criptografia (especificadas no elemento `Action` da instrução de política). No entanto, ninguém na conta 1 pode usar a chave do KMS na conta 2 até que conta 1 defina políticas do IAM que concedam às entidades principais acesso à chave do KMS.

  No fluxograma, essa política de chaves na conta 2 atende à condição *A política de chaves PERMITE que a conta do autor da chamada use políticas do IAM para controlar o acesso à chave?*. 

------
#### [ JSON ]

****  

  ```
  {
      "Id": "key-policy-acct-2",
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "PermissionUseIAMpolicies",
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::444455556666:root"
              },
              "Action": "kms:*",
              "Resource": "*"
          },
          {
              "Sid": "AllowAccount1UseThisKMSKeys",
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::111122223333:root"
              },
              "Action": [
                  "kms:Encrypt",
                  "kms:Decrypt",
                  "kms:ReEncryptFrom",
                  "kms:ReEncryptTo",
                  "kms:GenerateDataKey",
                  "kms:GenerateDataKeyWithoutPlaintext",
                  "kms:DescribeKey"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------
+ Uma política do IAM no chamador Conta da AWS (conta 1, 111122223333) dá ao principal permissão para realizar operações criptográficas usando a chave KMS na conta 2 (444455556666). O elemento `Action` concede à entidade principal as mesmas permissões que a política de chaves na conta 2 concedeu à conta 1. Para dar essas permissões à função `Engineering` na conta 1, [essa política em linha está incorporada](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html) na função `Engineering`.

  Políticas do IAM entre contas como essa são efetivas somente quando a política de chaves para a chave do KMS na conta 2 concede à conta 1 permissão para usar a chave do KMS. Além disso, a conta 1 só pode conceder aos seus principais permissão para executar as ações que a política de chaves atribuiu à conta.

  No fluxograma, isso atende à condição *Uma política do IAM permite que o autor da chamada realize essa ação?*.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "kms:Encrypt",
                  "kms:Decrypt",
                  "kms:ReEncryptFrom",
                  "kms:ReEncryptTo",
                  "kms:GenerateDataKey",
                  "kms:GenerateDataKeyWithoutPlaintext",
                  "kms:DescribeKey"
              ],
              "Resource": [
              "arn:aws:kms:us-west-2:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab"
              ]
          }
      ]
  }
  ```

------
+ O último elemento exigido é a definição da função `Engineering` na conta 1. O `AssumeRolePolicyDocument` na função permite que Bob assuma a função `Engineering`.

  ```
  {
      "Role": {
          "Arn": "arn:aws:iam::111122223333:role/Engineering",
          "CreateDate": "2019-05-16T00:09:25Z",
          "AssumeRolePolicyDocument": {
              "Version": "2012-10-17",		 	 	 
              "Statement": {
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:user/bob"
                  },
                  "Effect": "Allow",
                  "Action": "sts:AssumeRole"
              }
          },
          "Path": "/",
          "RoleName": "Engineering",
          "RoleId": "AROA4KJY2TU23Y7NK62MV"
      }
  }
  ```

# AWS KMS glossário de controle de acesso
<a name="access-glossary"></a>

O tópico a seguir descreve termos e conceitos importantes no controle de AWS KMS acesso.

## Autenticação
<a name="permission-concept-authentication"></a>

A *autenticação* é o processo de verificação da identidade. Para enviar uma solicitação para AWS KMS, você deve fazer login AWS usando suas AWS credenciais.

## Autorização
<a name="permission-concept-authorization"></a>

A *autorização* fornece a permissão para enviar solicitações para criar, gerenciar ou usar AWS KMS recursos. Por exemplo, você deve ter autorização para usar uma chave do KMS em uma operação criptográfica.

Para controlar o acesso aos seus AWS KMS recursos, use [políticas de chave](key-policies.md), [políticas de IAM](iam-policies.md) e [concessões](grants.md). Cada chave do KMS deve ter uma política de chaves. Se a política de chaves permitir, também é possível usar concessões e políticas do IAM para conceder às entidades principais acesso à chave do KMS. Para detalhar a autorização, você pode usar [chaves de condição](policy-conditions.md) que permitem ou negam acesso somente quando uma solicitação ou recurso atende às condições especificadas. Também é possível permitir o acesso às entidades principais em que confia em [outras Contas da AWS](key-policy-modifying-external-accounts.md).

## Autenticação com identidades
<a name="security_iam_authentication"></a>

A autenticação é a forma como você faz login AWS usando suas credenciais de identidade. Você deve estar autenticado como usuário do IAM ou assumindo uma função do IAM. Usuário raiz da conta da AWS

Você pode fazer login como uma identidade federada usando credenciais de uma fonte de identidade como Centro de Identidade do AWS IAM (IAM Identity Center), autenticação de login único ou credenciais. Google/Facebook Para ter mais informações sobre como fazer login, consulte [Como fazer login em sua Conta da AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do Início de Sessão da AWS *.

Para acesso programático, AWS fornece um SDK e uma CLI para assinar solicitações criptograficamente. Para ter mais informações, consulte [AWS Signature Version 4 para solicitações de API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) no *Guia do usuário do IAM*.

### Conta da AWS usuário root
<a name="security_iam_authentication-rootuser"></a>

 Ao criar um Conta da AWS, você começa com uma identidade de login chamada *usuário Conta da AWS raiz* que tem acesso completo a todos Serviços da AWS os recursos. É altamente recomendável não usar o usuário-raiz em tarefas diárias. Consulte as tarefas que exigem credenciais de usuário-raiz em [Tarefas que exigem credenciais de usuário-raiz](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) no *Guia do usuário do IAM*. 

### Identidade federada
<a name="security_iam_authentication-federated"></a>

Como prática recomendada, exija que os usuários humanos usem a federação com um provedor de identidade para acessar Serviços da AWS usando credenciais temporárias.

Uma *identidade federada* é um usuário do seu diretório corporativo, provedor de identidade da web ou Directory Service que acessa Serviços da AWS usando credenciais de uma fonte de identidade. As identidades federadas assumem funções que oferecem credenciais temporárias.

Para o gerenciamento de acesso centralizado, recomendamos Centro de Identidade do AWS IAM. Para saber mais, consulte [O que é o IAM Identity Center?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) no *Guia do usuário do Centro de Identidade do AWS IAM *.

### Usuários e grupos do IAM
<a name="security_iam_authentication-iamuser"></a>

Um *[usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* é uma identidade com permissões específicas para uma única pessoa ou aplicação. É recomendável usar credenciais temporárias, em vez de usuários do IAM com credenciais de longo prazo. Para obter mais informações, consulte [Exigir que usuários humanos usem a federação com um provedor de identidade para acessar AWS usando credenciais temporárias](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) no *Guia do usuário do IAM*.

Um [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) especifica um conjunto de usuários do IAM e facilita o gerenciamento de permissões para grandes conjuntos de usuários. Para ter mais informações, consulte [Casos de uso de usuários do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) no *Guia do usuário do IAM*.

### Perfis do IAM
<a name="security_iam_authentication-iamrole"></a>

Uma *[perfil do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* é uma identidade com permissões específicas que oferece credenciais temporárias. Você pode assumir uma função [mudando de um usuário para uma função do IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) ou chamando uma operação de AWS API AWS CLI ou. Para saber mais, consulte [Métodos para assumir um perfil](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) no *Manual do usuário do IAM*.

Os perfis do IAM são úteis para acesso de usuário federado, permissões de usuário do IAM temporárias, acesso entre contas, acesso entre serviços e aplicações em execução no Amazon EC2. Consulte mais informações em [Acesso a recursos entre contas no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) no *Guia do usuário do IAM*.

## Gerenciar o acesso usando políticas
<a name="security_iam_access-manage"></a>

Você controla o acesso AWS criando políticas e anexando-as a AWS identidades ou recursos. Uma política define permissões quando associada a uma identidade ou recurso. AWS avalia essas políticas quando um diretor faz uma solicitação. A maioria das políticas é armazenada AWS como documentos JSON. Para ter mais informações sobre documentos de política JSON, consulte [Visão geral das políticas JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) no *Guia do usuário do IAM*.

Por meio de políticas, os administradores especificam quem tem acesso a que, definindo qual **entidade principal** pode realizar **ações** em quais **recursos** e sob quais **condições**.

Por padrão, usuários e perfis não têm permissões. Um administrador do IAM cria políticas do IAM e as adiciona aos perfis, os quais os usuários podem então assumir. As políticas do IAM definem permissões, independentemente do método usado para realizar a operação.

### Políticas baseadas em identidade
<a name="security_iam_access-manage-id-based-policies"></a>

As políticas baseadas em identidade são documentos de políticas de permissão JSON que você anexa a uma identidade (usuário, grupo ou perfil). Essas políticas controlam quais ações as identidades podem realizar, em quais recursos e sob quais condições. Para saber como criar uma política baseada em identidade, consulte [Definir permissões personalizadas do IAM com as políticas gerenciadas pelo cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) no *Guia do Usuário do IAM*.

As políticas baseadas em identidade podem ser políticas *em linha* (incorporadas diretamente em uma única identidade) ou *políticas gerenciadas* (políticas autônomas anexadas a várias identidades). Para saber como escolher entre uma política gerenciada e políticas em linha, consulte [Escolher entre políticas gerenciadas e políticas em linha](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) no *Guia do usuário do IAM*.

### Políticas baseadas em recursos
<a name="security_iam_access-manage-resource-based-policies"></a>

Uma [política de AWS KMS chaves](key-policies.md) é uma política baseada em recursos que controla o acesso a uma chave KMS. Cada chave do KMS deve ter uma política de chaves. É possível usar outro mecanismo de autorização para permitir o acesso à chave do KMS, mas somente se a política de chaves permitir. (É possível usar uma política do IAM para *negar* o acesso para uma chave do KMS, mesmo que a política de chaves não permita isso explicitamente.)

Políticas baseadas em recursos são documentos de política JSON que você vincula a um recurso, como uma chave do KMS, para controlar o acesso ao recurso específico. A política baseada em recursos define as ações que uma entidade principal especificada pode executar nesse recurso e sob quais condições. Você não especifica o recurso em uma política baseada em recursos, mas deve especificar um principal, como contas, usuários, funções, usuários federados ou. Serviços da AWS As políticas baseadas em recursos são políticas em linha localizadas no serviço que gerencia o recurso. Você não pode usar políticas AWS gerenciadas do IAM, como a [política `AWSKeyManagementServicePowerUser` gerenciada, em uma política](security-iam-awsmanpol.md#security-iam-awsmanpol-AWSKeyManagementServicePowerUser) baseada em recursos.

### Outros tipos de política
<a name="security_iam_access-manage-other-policies"></a>

AWS oferece suporte a tipos de políticas adicionais que podem definir o máximo de permissões concedidas por tipos de políticas mais comuns:
+ **Limites de permissões**: definem o número máximo de permissões que uma política baseada em identidade pode conceder a uma entidade do IAM. Para saber mais sobre limites de permissões, consulte [Limites de permissões para identidades do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) no *Guia do usuário do IAM*.
+ **Políticas de controle de serviço (SCPs)** — Especifique as permissões máximas para uma organização ou unidade organizacional em AWS Organizations. Para saber mais, consulte [Políticas de controle de serviço](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) no *Guia do usuário do AWS Organizations *.
+ **Políticas de controle de recursos (RCPs)** — Defina o máximo de permissões disponíveis para recursos em suas contas. Para obter mais informações, consulte [Políticas de controle de recursos (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) no *Guia AWS Organizations do usuário*.
+ **Políticas de sessão**: políticas avançadas transmitidas como um parâmetro durante a criação de uma sessão temporária para um perfil ou um usuário federado. Para saber mais, consulte [Políticas de sessão](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) no *Guia do usuário do IAM*.

### Vários tipos de política
<a name="security_iam_access-manage-multiple-policies"></a>

Quando vários tipos de política são aplicáveis a uma solicitação, é mais complicado compreender as permissões resultantes. Para saber como AWS determinar se uma solicitação deve ser permitida quando vários tipos de políticas estão envolvidos, consulte [Lógica de avaliação de políticas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) no *Guia do usuário do IAM*.

## AWS KMS recursos
<a name="kms-resources-operations"></a>

Em AWS KMS, o recurso principal é um AWS KMS key. AWS KMS também oferece suporte a um [alias](kms-alias.md), um recurso independente que fornece um nome amigável para uma chave KMS. Algumas AWS KMS operações permitem que você use um alias para identificar uma chave KMS.

Cada instância de uma chave do KMS ou um alias tem um [Amazon Resource Name](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arns-syntax) (ARN) exclusivo com um formato padrão. Em AWS KMS recursos, o nome do AWS serviço é`kms`. 
+ **AWS KMS key**

  Formato ARN:

  `arn:AWS partition name:AWS service name:Região da AWS:Conta da AWS ID:key/key ID`

  Exemplo de ARN:

  `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
+ **Alias**

  Formato ARN:

  `arn:AWS partition name:AWS service name:Região da AWS:Conta da AWS ID:alias/alias name`

  Exemplo de ARN:

  `arn:aws:kms:us-west-2:111122223333:alias/example-alias`

AWS KMS fornece um conjunto de operações de API para trabalhar com seus AWS KMS recursos. Para obter mais informações sobre a identificação de chaves KMS nas operações Console de gerenciamento da AWS e AWS KMS da API, consulte[Identificadores-chave () KeyId](concepts.md#key-id). Para ver uma lista de AWS KMS operações, consulte a [Referência AWS Key Management Service da API](https://docs.aws.amazon.com/kms/latest/APIReference/).