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à.
Concatenazione di ruoli IAM in Amazon Redshift
Quando associ un ruolo al cluster, quest'ultimo può assumere quel ruolo per accedere ad Amazon S3, Amazon Athena AWS Glue AWS Lambda e per tuo conto. Se un ruolo collegato al cluster non ha accesso alle risorse necessarie, è possibile concatenare un altro ruolo, possibilmente appartenente a un altro account. Il cluster quindi può assumere temporaneamente il ruolo concatenato per accedere ai dati. Concatenando i ruoli è anche possibile concedere l'accesso a più account. Ogni ruolo nella catena assume il ruolo successivo nella catena, fino a quando il cluster non assume il ruolo alla fine della catena. Il numero massimo di ruoli IAM che è possibile associare è soggetto a una quota. Per ulteriori informazioni, consulta la quota «Cluster IAM roles for Amazon Redshift to access other AWS services» in. Quote per gli oggetti Amazon Redshift
Ad esempio, supponiamo che l'azienda A desideri accedere ai dati in un bucket Amazon S3 appartenente all'azienda B. La società A AWS crei un ruolo di servizio RoleA
denominato per Amazon Redshift e lo alleghi al proprio cluster. L'Azienda B crea un ruolo denominato RoleB
autorizzato ad accedere ai dati nel bucket dell'Azienda B. Per accedere ai dati nel bucket dell'Azienda B, l'Azienda A esegue un comando COPY con un parametro iam_role
che concatena RoleA
e RoleB
. Per l'intera durata dell'operazione COPY, RoleA
assume temporaneamente RoleB
per accedere al bucket Amazon S3.
Per concatenare i ruoli, stabilisci una relazione di trust tra di essi. Un ruolo che assume un altro ruolo (ad esempio, RoleA
) deve avere una policy di autorizzazioni che gli permette di assumere il ruolo concatenato successivo (ad esempio, RoleB
). A sua volta, il ruolo che passa le autorizzazioni (RoleB
) deve avere una policy di trust che gli permette di passare le autorizzazioni al ruolo concatenato precedente (RoleA
). Per ulteriori informazioni, consultare Utilizzo di ruoli IAM nella Guida per l'utente di IAM.
Il primo ruolo nella catena deve essere un ruolo collegato al cluster. Il primo ruolo e ogni ruolo successivo che assume il ruolo seguente nella catena devono avere una policy che include un'istruzione specifica. Questa istruzione ha l'effetto Allow
sull'operazione sts:AssumeRole
e l'Amazon Resource Name (ARN) del ruolo successivo in un elemento Resource
. Nell'esempio, RoleA
ha la policy di autorizzazione seguente che gli permette di assumere RoleB
, di proprietà dell'account AWS
210987654321
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1487639602000", "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::210987654321:role/RoleB" } ] }
Un ruolo che passa a un altro ruolo deve stabilire una relazione di fiducia con il ruolo che assume il ruolo o con l'account che possiede il AWS ruolo. Nell'esempio, RoleB
ha la policy di trust seguente per stabilire una relazione di trust con RoleA
.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::role/RoleA" } } ] }
La seguente politica di fiducia stabilisce una relazione di fiducia con il proprietario dell'accountRoleA
. AWS 123456789012
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::123456789012:root" } } ] }
Nota
Per limitare l'autorizzazione del concatenamento dei ruoli a utenti specifici, puoi definire una condizione. Per ulteriori informazioni, consulta Limitazione dell'accesso a ruoli IAM.
Quando si esegue un comando UNLOAD, COPY, CREATE EXTERNAL FUNCTION o CREATE EXTERNAL SCHEMA, si concatenano i ruoli includendo un elenco di ruoli separati da virgole nel parametro. ARNs iam_role
Di seguito è illustrata la sintassi per la concatenazione di ruoli nel parametro iam_role
.
unload ('select * from venue limit 10') to 's3://acmedata/redshift/venue_pipe_' IAM_ROLE 'arn:aws:iam::<
aws-account-id-1
>:role/<role-name-1
>[,arn:aws:iam::<aws-account-id-2
>:role/<role-name-2
>][,...]';
Nota
L'intera catena di ruoli è racchiusa tra virgolette singole e non deve contenere spazi.
Negli esempi seguenti, RoleA
è collegato al cluster che appartiene all'account AWS 123456789012
. RoleB
, che appartiene all'account 210987654321
, dispone dell'autorizzazione per accedere al bucket denominato s3://companyb/redshift/
. L'esempio seguente concatena RoleA
e RoleB
per eseguire il comando UNLOAD per scaricare i dati nel bucket s3://companyb/redshift/.
unload ('select * from venue limit 10') to 's3://companyb/redshift/venue_pipe_' iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
L'esempio seguente usa il comando COPY per caricare i dati scaricati nell'esempio precedente.
copy venue from 's3://companyb/redshift/venue_pipe_' iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
Nell'esempio seguente CREATE EXTERNAL SCHEMA usa ruoli concatenati per assumere il ruolo RoleB
.
create external schema spectrumexample from data catalog database 'exampledb' region 'us-west-2' iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
Nell'esempio seguente CREATE EXTERNAL FUNCTION usa ruoli concatenati per assumere il ruolo RoleB
.
create external function lambda_example(varchar) returns varchar volatile lambda 'exampleLambdaFunction' iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';