Esempi di policy basate su risorse - Amazon DynamoDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempi di policy basate su risorse

Quando si specifica un ARN nel Resource campo di una policy basata sulle risorse, la policy ha effetto solo se l'ARN specificato corrisponde all'ARN della risorsa DynamoDB a cui è collegata.

Nota

Ricordati di sostituire il testo in corsivo con le informazioni specifiche della risorsa.

Politica basata sulle risorse per una tabella

La seguente policy basata sulle risorse allegata a una tabella DynamoDB denominata MusicCollection, fornisce agli utenti IAM John e Jane il permesso di eseguire azioni sulla risorsa. GetItemBatchGetItemMusicCollection

{ "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" ] } ] }

Politica basata sulle risorse per uno stream

La seguente policy basata sulle risorse allegata a un flusso DynamoDB denominato 2024-02-12T18:57:26.492 fornisce agli utenti IAM John e Jane il permesso di eseguire GetRecordsazioni API sulla risorsa. GetShardIteratorDescribeStream2024-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" ] } ] }

Politica basata sulle risorse per l'accesso all'esecuzione di tutte le azioni su risorse specifiche

Per consentire a un utente di eseguire tutte le azioni su una tabella e tutti gli indici associati a una tabella, puoi utilizzare un carattere jolly (*) per rappresentare le azioni e le risorse associate alla tabella. L'utilizzo di un carattere wild card per le risorse consentirà all'utente di accedere alla tabella DynamoDB e a tutti gli indici associati, inclusi quelli che non sono ancora stati creati. Ad esempio, la seguente politica concederà all'utente John il permesso di eseguire qualsiasi azione sulla MusicCollectiontabella e su tutti i relativi indici, inclusi gli indici che verranno creati in 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/*" ] } ] }

Politica basata sulle risorse per l'accesso tra più account

È possibile specificare le autorizzazioni per un'identità IAM tra account diversi per accedere alle risorse DynamoDB. Ad esempio, potresti aver bisogno di un utente di un account affidabile per accedere alla lettura del contenuto della tabella, a condizione che acceda solo a elementi e attributi specifici di tali elementi. La seguente politica consente l'accesso all'utente John da un Account AWS ID affidabile 1111 per accedere ai dati da una tabella nell'account 123456789012 utilizzando l'API. GetItem La politica garantisce che l'utente possa accedere solo agli elementi con una chiave primaria Jane e che l'utente possa recuperare solo gli attributi Artist e SongTitle nessun altro attributo.

Importante

Se non specifichi la SPECIFIC_ATTRIBUTES condizione, vedrai tutti gli attributi degli articoli restituiti.

{ "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" } } } ] }

Oltre alla precedente politica basata sulle risorse, anche la politica basata sull'identità allegata all'utente John deve consentire l'azione dell'GetItemAPI per il funzionamento dell'accesso tra più account. Di seguito è riportato un esempio di policy basata sull'identità che è necessario allegare all'utente 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" } } } ] }

L'utente John può effettuare una GetItem richiesta specificando la tabella ARN nel parametro per l'accesso table-name alla MusicCollectiontabella nell'account 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

Politica basata sulle risorse con condizioni relative all'indirizzo IP

Puoi applicare una condizione per limitare gli indirizzi IP di origine, i cloud privati virtuali (VPC) e gli endpoint VPC (VPCE). È possibile specificare le autorizzazioni in base agli indirizzi di origine della richiesta di origine. Ad esempio, potresti voler consentire a un utente di accedere alle risorse DynamoDB solo se vi si accede da una fonte IP specifica, come un endpoint VPN aziendale. Specificate questi indirizzi IP nella dichiarazione. Condition

L'esempio seguente consente all'utente John di accedere a qualsiasi risorsa DynamoDB quando gli IP di origine sono e. 54.240.143.0/24 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" ] } } } ] }

Puoi anche negare tutti gli accessi alle risorse DynamoDB tranne quando l'origine è un endpoint VPC specifico, ad esempio vpce-1a2b3c4d.

{ "Id":"PolicyId", "Version":"2012-10-17", "Statement": [ { "Sid": "AccessToSpecificVPCEOnly", "Principal": "*", "Action": "dynamodb:*", "Effect": "Deny", "Resource": "*", "Condition": { "StringNotEquals":{ "aws:sourceVpce":"vpce-1a2b3c4d" } } } ] }

Policy basata sulle risorse che utilizza un ruolo IAM

Puoi anche specificare un ruolo di servizio IAM nella policy basata sulle risorse. Le entità IAM che assumono questo ruolo sono limitate dalle azioni consentite specificate per il ruolo e allo specifico set di risorse all'interno della policy basata sulle risorse.

L'esempio seguente consente a un'entità IAM di eseguire tutte le azioni DynamoDB sulle risorse MusicCollectione MusicCollectionDynamoDB.

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