Esempi di policy basate su risorse per DynamoDB - 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 per DynamoDB

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

Nota

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

Policy basata su risorse per una tabella

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

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/username", "arn:aws:iam::111122223333:user/Jane" ] }, "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection" ] } ] }

Policy basata su risorse per un flusso

La seguente policy basata sulle risorse allegata a un flusso DynamoDB denominato 2024-02-12T18:57:26.492 fornisce agli utenti IAM GetRecordsGetShardIterator, il Jane permesso di eseguire John e le azioni API sulla risorsa. DescribeStream2024-02-12T18:57:26.492

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/username", "arn:aws:iam::111122223333:user/Jane" ] }, "Action": [ "dynamodb:DescribeStream", "dynamodb:GetRecords", "dynamodb:GetShardIterator" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492" ] } ] }

Politica basata su 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, è possibile utilizzare un carattere jolly (*) per rappresentare le azioni e le risorse associate alla tabella. L’utilizzo di un carattere jolly 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 consentirà all'utente John di eseguire qualsiasi azione sulla MusicCollection tabella e su tutti i relativi indici, inclusi gli indici che verranno creati in futuro.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/role-name" }, "Action": "dynamodb:*", "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection", "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/index/index-name" ] } ] }

Policy basata su risorse per accesso multi-account

È possibile specificare le autorizzazioni per un’identità IAM multi-account per accedere alle risorse DynamoDB. Ad esempio, potrebbe essere necessario un utente di un account attendibile 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 111111111111 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 si specifica la condizione SPECIFIC_ATTRIBUTES, si vedranno tutti gli attributi degli elementi restituiti.

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

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "CrossAccountIdentityBasedPolicy", "Effect": "Allow", "Action": [ "dynamodb:GetItem" ], "Resource": [ "arn:aws:dynamodb:us-east-1: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 table-name l'accesso alla MusicCollection tabella 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

Policy basata su risorse con condizioni di indirizzo IP

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

L'esempio seguente consente all'utente di John accedere a qualsiasi risorsa DynamoDB quando le IPs sorgenti sono e. 54.240.143.0/24 2001:DB8:1234:5678::/64

JSON
{ "Id":"PolicyId2", "Version":"2012-10-17", "Statement":[ { "Sid":"AllowIPmix", "Effect":"Allow", "Principal": { "AWS": "arn:aws:iam::111111111111:user/username" }, "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

Importante

Quando si utilizza DAX con tabelle DynamoDB con policy di risorse basate su IP IPv6 in ambienti -only, è necessario configurare regole di accesso aggiuntive. Se la politica delle risorse limita l'accesso allo spazio degli IPv4 indirizzi 0.0.0.0/0 sulle tabelle, è necessario consentire l'accesso al ruolo IAM associato al cluster DAX. Aggiungi una ArnNotEquals condizione alla tua policy per garantire che DAX mantenga l'accesso alle tue tabelle DynamoDB. Per ulteriori informazioni, vedere DAX e. IPv6

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

Policy basata su risorse che utilizza un ruolo IAM

È inoltre possibile specificare un ruolo di servizio IAM nella policy basata su 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 su risorse.

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

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/role-name" }, "Action": "dynamodb:*", "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection", "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/*" ] } ] }