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à.
Uno scenario comune di Amazon Athena è la concessione dell'accesso agli utenti in un account diverso da quello del proprietario del bucket, in modo che possano eseguire le query. In questo caso, occorre utilizzare una policy dei bucket per concedere l'accesso.
Nota
Per informazioni sull'accesso tra account diversi ai cataloghi di AWS Glue dati di Athena, vedere. Configurare l'accesso tra account ai cataloghi di AWS Glue dati
La seguente policy dei bucket di esempio, creata e applicata al bucket s3://amzn-s3-demo-bucket
dal proprietario del bucket, concede l'accesso a tutti gli utenti nell'account 123456789123
, che è un account diverso.
{
"Version": "2012-10-17",
"Id": "MyPolicyID",
"Statement": [
{
"Sid": "MyStatementSid",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789123:root"
},
"Action": [
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket",
"arn:aws:s3:::amzn-s3-demo-bucket/*"
]
}
]
}
Per concedere l'accesso a un determinato utente in un account, occorre sostituire la chiave Principal
con una chiave che specifica l'utente anziché root
. Ad esempio, per il profilo utente Dave
, è necessario utilizzare arn:aws:iam::123456789123:user/Dave
.
Configura l'accesso tra account diversi a un bucket crittografato con una chiave personalizzata AWS KMS
Se disponi di un bucket Amazon S3 crittografato con una chiave personalizzata AWS Key Management Service (AWS KMS), potresti dover concedere l'accesso ad esso agli utenti di un altro account Amazon Web Services.
La concessione dell'accesso a un bucket AWS KMS crittografato nell'Account A a un utente nell'Account B richiede le seguenti autorizzazioni:
-
La policy del bucket nell'Account A deve concedere l'accesso al ruolo assunto dall'Account B.
-
La politica AWS KMS chiave dell'Account A deve concedere l'accesso al ruolo assunto dall'utente nell'Account B.
-
Il ruolo AWS Identity and Access Management (IAM) assunto dall'Account B deve concedere l'accesso sia al bucket che alla chiave nell'Account A.
Nelle procedure seguenti viene descritto come concedere ciascuna di queste autorizzazioni.
Per concedere l'accesso al bucket nell'Account A all'utente nell'Account B
-
Nell'Account A, esaminare la policy del bucket S3 e verificare che sia presente un'istruzione che consenta l'accesso dall'ID dell'Account B.
Ad esempio, la seguente policy del bucket consente l'accesso
s3:GetObject
all'ID111122223333
dell'account:{ "Id": "ExamplePolicy1", "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStmt1", "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Principal": { "AWS": [ "111122223333" ] } } ] }
Per concedere l'accesso all'utente nell'account b dalla politica AWS KMS chiave nell'account a
-
Nella politica AWS KMS chiave per l'Account A, concedi il ruolo assunto dalle autorizzazioni dell'Account B alle seguenti azioni:
-
kms:Encrypt
-
kms:Decrypt
-
kms:ReEncrypt*
-
kms:GenerateDataKey*
-
kms:DescribeKey
Nell'esempio seguente viene concesso l'accesso alla chiave a un solo ruolo IAM.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "
AllowUseOfTheKey
", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333
:role/role_name
" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" } ] } -
-
Dall'Account A, esamina la politica chiave utilizzando la visualizzazione delle AWS Management Console politiche.
-
Nella policy della chiave, verificare che l'istruzione seguente elenchi l'Account B come principal.
"Sid": "Allow use of the key"
-
Se l'istruzione
"Sid": "Allow use of the key"
non è presente, attenersi alla seguente procedura:-
Visualizzare la policy della chiave utilizzando la visualizzazione predefinita della console.
-
Aggiungere l'ID dell'Account B come account esterno con accesso alla chiave.
-
Concessione dell'accesso al bucket e alla chiave nell'Account A dal ruolo IAM assunto dall'Account B
-
Dall'Account B, apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/
. -
Apri il ruolo IAM associato all'utente nell'Account B.
-
Esamina l'elenco delle policy di autorizzazione applicate al ruolo IAM.
-
Assicurarsi che venga applicata una policy che conceda l'accesso al bucket.
L'istruzione di esempio seguente concede al ruolo IAM l'accesso alle operazioni
s3:GetObject
es3:PutObject
sul bucketamzn-s3-demo-bucket
:{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStmt2", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
-
Assicurarsi che venga applicata una policy che consenta l'accesso alla chiave.
Nota
Se il ruolo IAM assunto dall'Account B dispone già dell'accesso come amministratore, non è necessario concedere l'accesso alla chiave dalle policy IAM dell'utente.
L'istruzione di esempio seguente concede al ruolo IAM l'accesso per utilizzare la chiave
arn:aws:kms:us-west-2:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd
.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStmt3", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:Encrypt", "kms:GenerateDataKey", "kms:ReEncrypt*" ], "Effect": "Allow", "Resource": "arn:aws:kms:
us-west-2
:123456789098
:key/111aa2bb-333c-4d44-5555-a111bb2c33dd
" } ] }
Configura l'accesso tra account agli oggetti bucket
Gli oggetti caricati da un account (Account C) diverso dall'account proprietario del bucket (Account A) potrebbero richiedere un livello di oggetto esplicito ACLs che conceda l'accesso in lettura all'account che esegue la query (Account B). Per evitare questo requisito, l'Account C deve assumere un ruolo nell'Account A prima di collocare gli oggetti nel bucket dell'Account A. Per ulteriori informazioni, consulta Come posso fornire l'accesso tra account agli oggetti che si trovano nei bucket Amazon S3?