

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

# 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/*"
          ]
        }
      }
    }
  ]
}
```

------