Exemplos de políticas baseadas em recurso do DynamoDB
Ao especificar um ARN no campo Resource
de uma política baseada em recursos, a política entrará em vigor somente se o ARN especificado corresponder ao ARN do recurso do DynamoDB ao qual está associado.
nota
Lembre-se de substituir o texto em itálico
pelas informações específicas do recurso.
Política baseada em recursos para uma tabela
A política baseada em recursos a seguir, associada a uma tabela do DynamoDB chamada MusicCollection
, oferece aos usuários do IAM John
e Jane
permissão para realizar as ações GetItem e BatchGetItem no recurso MusicCollection
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
111122223333
:user/John
", "arn:aws:iam::111122223333
:user/Jane
" ] }, "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem" ], "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
" ] } ] }
Política baseada em recursos para um fluxo
A política baseada em recursos a seguir, associada a um fluxo do DynamoDB chamado 2024-02-12T18:57:26.492
, oferece aos usuários do IAM John
e Jane
permissão para realizar as ações GetRecords, GetShardIterator e DescribeStream no recurso 2024-02-12T18:57:26.492
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
111122223333
:user/John
", "arn:aws:iam::111122223333
:user/Jane
" ] }, "Action": [ "dynamodb:DescribeStream", "dynamodb:GetRecords", "dynamodb:GetShardIterator" ], "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
/stream/2024-02-12T18:57:26.492
" ] } ] }
Política baseada em recursos para acesso a fim de realizar todas as ações em recursos especificados
Para permitir que um usuário realize todas as ações em uma tabela e em todos os índices associados a uma tabela, é possível usar um caractere curinga (*) para representar as ações e os recursos associados à tabela. O uso de um caractere curinga para os recursos permitirá que o usuário acesse a tabela do DynamoDB e todos os índices associados, incluindo aqueles que ainda não foram criados. Por exemplo, a política a seguir concederá permissão ao usuário John
para realizar qualquer ação na tabela MusicCollection
e em todos os seus índices, incluindo quaisquer índices que serão criados no futuro.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal":"arn:aws:iam::
111122223333
:user/John
", "Action": "dynamodb:*", "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
", "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
/index/*" ] } ] }
Política baseada em recursos para acesso entre contas
É possível especificar permissões para uma identidade do IAM entre contas para acessar os recursos do DynamoDB. Por exemplo, talvez seja necessário que um usuário de uma conta confiável tenha acesso para ler o conteúdo da sua tabela, com a condição de que ele acesse somente itens e atributos específicos nesses itens. A política a seguir concede acesso ao usuário John
por meio de um ID de Conta da AWS confiável 111111111111
para acessar dados de uma tabela na conta 123456789012
usando a API GetItem. A política garante que o usuário possa acessar somente itens com uma chave primária Jane
e que o usuário só possa recuperar os atributos Artist
e SongTitle
, mas nenhum outro atributo.
Importante
Se você não especificar a condição SPECIFIC_ATTRIBUTES
, verá todos os atributos dos itens exibidos.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CrossAccountTablePolicy", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111111111111:user/John" }, "Action": "dynamodb:GetItem", "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection" ], "Condition": { "ForAllValues:StringEquals": { "dynamodb:LeadingKeys": "Jane", "dynamodb:Attributes": [ "Artist", "SongTitle" ] }, "StringEquals": { "dynamodb:Select": "SPECIFIC_ATTRIBUTES" } } } ] }
Além da política anterior baseada em recursos, a política baseada em identidade associada ao usuário John
também precisa permitir a ação da API GetItem
para que o acesso entre contas funcione. Veja a seguir um exemplo de política baseada em identidade que deve ser associada ao usuário John
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CrossAccountIdentityBasedPolicy", "Effect": "Allow", "Action": [ "dynamodb:GetItem" ], "Resource": [ "arn:aws:dynamodb:us-west-2:
123456789012
:table/MusicCollection
" ], "Condition": { "ForAllValues:StringEquals": { "dynamodb:LeadingKeys": "Jane
", "dynamodb:Attributes": [ "Artist", "SongTitle" ] }, "StringEquals": { "dynamodb:Select": "SPECIFIC_ATTRIBUTES" } } } ] }
O usuário John pode fazer uma solicitação GetItem
especificando o ARN da tabela no parâmetro table-name
para acessar a tabela MusicCollection
na conta 123456789012
.
aws dynamodb get-item \ --table-name arn:aws:dynamodb:us-west-2:
123456789012
:table/MusicCollection
\ --key '{"Artist": {"S": "Jane
"}' \ --projection-expression 'Artist, SongTitle' \ --return-consumed-capacity TOTAL
Política baseada em recursos com condições de endereço IP
É possível aplicar uma condição para restringir endereços IP de origem, nuvens privadas virtuais (VPCs) e endpoint da VPC (VPCE). É possível especificar permissões com base nos endereços de origem da solicitação de origem. Por exemplo, convém permitir que um usuário acesse os recursos do DynamoDB somente se eles estiverem sendo acessados de uma fonte IP específica, como um endpoint de VPN corporativo. Especifique esses endereços IP na declaração Condition
.
O exemplo a seguir permite que o usuário John
acesse qualquer recurso do DynamoDB quando os IPs de origem são 54.240.143.0/24
e 2001:DB8:1234:5678::/64
.
{ "Id":"PolicyId2", "Version":"2012-10-17", "Statement":[ { "Sid":"AllowIPmix", "Effect":"Allow", "Principal":"arn:aws:iam::
111111111111
:user/John
", "Action":"dynamodb:*", "Resource":"*", "Condition": { "IpAddress": { "aws:SourceIp": [ "54.240.143.0/24", "2001:DB8:1234:5678::/64" ] } } } ] }
Também é possível negar todo o acesso aos recursos do DynamoDB, exceto quando a origem é um endpoint da VPC específico, por exemplo, vpce-1a2b3c4d
.
{ "Id":"PolicyId", "Version":"2012-10-17", "Statement": [ { "Sid": "AccessToSpecificVPCEOnly", "Principal": "*", "Action": "dynamodb:*", "Effect": "Deny", "Resource": "*", "Condition": { "StringNotEquals":{ "aws:sourceVpce":"
vpce-1a2b3c4d
" } } } ] }
Política baseada em recursos usando um perfil do IAM
Você também pode especificar um perfil de serviço do IAM na política baseada em recursos. As entidades do IAM que assumem esse perfil são limitadas pelas ações permitidas especificadas para o perfil e para o conjunto específico de recursos dentro da política baseada em recursos.
O exemplo a seguir permite que uma entidade do IAM realize todas as ações do DynamoDB nos recursos MusicCollection
e MusicCollection
do DynamoDB.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:role/John
" }, "Action": "dynamodb:*", "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
", "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
/*" ] } ] }