Permissões para serviços da AWS em políticas de chaves - AWS Key Management Service

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 para serviços da AWS em políticas de chaves

Muitos serviços da AWS usam AWS KMS keys para proteger os recursos que gerenciam. Quando um serviço usa Chaves pertencentes à AWS ou Chaves gerenciadas pela AWS, 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 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 e chaves de condição do AWS KMS 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. Por exemplo, para obter as permissões exigidas pelo Amazon Elastic Block Store (Amazon EBS), consulte Permissões para usuários do IAM no Guia do usuário do Amazon EC2 para instâncias Linux ou no Guia do usuário do Amazon EC2 para instâncias Windows. Para obter as permissões exigidas pelo Secrets Manager, consulte Autorizar o uso da chave do KMS no Guia do usuário do AWS Secrets Manager.

Implementação de permissões de privilégio mínimo

Ao conceder a um serviço da AWS permissão para usar uma chave do 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égio mínimo ajuda a impedir o uso não autorizado de uma chave do KMS quando as solicitações são passadas entre serviços da AWS.

Para implementar uma estratégia de privilégio mínimo, recomendamos usar chaves de condição de contexto de criptografia do AWS KMS e as chaves de condições de ARN de origem ou conta de origem globais.

Uso de chaves de condição de contexto de criptografia

A maneira mais eficaz de implementar permissões de privilégio mínimo ao usar recursos do AWS KMS é incluir as chaves de condições kms:EncryptionContext:context-key ou kms:EncryptionContextKeys na política que permite que as entidades principais chamem operações criptográficas do AWS KMS. Essas chaves de condição são particularmente eficazes porque associam a permissão ao contexto de criptografia 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 CreateGrantuma operação criptográfica AWS KMS simétrica que usa um EncryptionContext parâmetro, como as operações como GenerateDataKeyou Decrypt. (Para ver uma lista das operações válidas, consulte kms:EncryptionContext:context-key ou kms:EncryptionContextKeys. Se você usar essas chaves de condição para permitir outras operações, como, por exemplo DescribeKey, 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 para AWS Proton identifica o recurso do AWS Proton e seu modelo associado. O contexto de criptografia do AWS Secrets Manager identifica o segredo e sua versão. O contexto de criptografia para Amazon Location 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, kms: CallerAccount 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

Quando a entidade principal em uma declaração de política chave é uma entidade principal de serviço da AWS, recomendamos usar as chaves de condição globais aws:SourceArn ou aws:SourceAccount, além da chave de condição kms:EncryptionContext:context-key. Os valores de ARN e conta são incluídos no contexto de autorização somente quando uma solicitação chega ao AWS KMS de outro serviço da AWS. Essa combinação de condições implementa permissões de privilégio mínimo e evita um possível cenário de auxiliar confuso. As entidades principais de um serviço geralmente não são usadas como entidades principais em uma política de chaves, mas alguns serviços da AWS, como o AWS CloudTrail, exigem que isso seja feito.

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 sejam permitidos em uma política de chaves do AWS KMS, você não poderá 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.

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow CloudTrail to encrypt logs", "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/*" ] } } } ] }