View a markdown version of this page

Configurazione delle autorizzazioni IAM - Amazon Redshift

Amazon Redshift non supporterà più l'uso delle UDF Python dopo il 30 giugno 2026. Inizieremo ad applicarlo gradualmente. Per ulteriori informazioni sui dettagli della fine del ciclo di vita e sulle opzioni di migrazione di Python, consulta la post sul blog che è stato pubblicato il 30 giugno 2025.

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à.

Configurazione delle autorizzazioni IAM

Amazon Redshift fornisce la policy gestita AmazonRedshiftDataFullAccess. Questa policy fornisce accesso completo alle operazioni API dati di Amazon Redshift. Questa policy consente inoltre l'accesso con ambito a specifici Amazon Redshift, AWS Secrets Manager e le operazioni API IAM necessarie per autenticare e accedere a un cluster Amazon Redshift o a un gruppo di lavoro Redshift Serverless.

È possibile anche creare una policy IAM personalizzata che consente l'accesso a risorse specifiche. Per creare la policy, utilizzare la policy AmazonRedshiftDataFullAccess come modello di partenza. Dopo aver creato la policy, aggiungerla a ciascun utente che richiede l'accesso all'API dati.

Considera i seguenti requisiti della policy IAM associata all'utente:

  • Se usi AWS Secrets Manager per autenticarti, conferma che la policy consenta l'uso di secretsmanager:GetSecretValue azione per recuperare il segreto contrassegnato con la chiave RedshiftDataFullAccess.

  • Se per l'autenticazione in un cluster vengono utilizzate credenziali temporanee, confermare che la policy consente l'uso dell'operazione redshift:GetClusterCredentials al nome utente del database redshift_data_api_user per qualsiasi database nel cluster. Questo nome utente deve essere già stato creato nel database.

  • Se utilizzi credenziali temporanee per eseguire l'autenticazione in un gruppo di lavoro serverless, verifica che la policy consenta l'uso dell'operazione redshift-serverless:GetCredentials per richiamare il gruppo di lavoro taggato con la chiave RedshiftDataFullAccess. L'utente del database è mappato 1:1 all'origine AWS Identity and Access Management identità (IAM). Ad esempio, l'utente sample_user è mappato all'utente del database IAM:sample_user e il ruolo IAM sample_role è mappato a IAMR:sample_role. Per ulteriori informazioni sulle diverse identità IAM, consulta Identità IAM (utenti, gruppi di utenti e ruoli) nella Guida per l'utente IAM.

  • L’azione IAM redshift-data:GetStatementResult consente l’accesso a entrambe le operazioni API GetStatementResult e GetStatementResultV2.

I seguenti collegamenti forniscono ulteriori informazioni su AWS Identity and Access Management nel Guida per l'utente IAM.

Esecuzione di una query su un cluster di proprietà di un altro account

Per eseguire una query su un cluster di proprietà di un altro account, l'account proprietario deve fornire un ruolo IAM che l'API dati può assumere nell'account chiamante. Si supponga, ad esempio, che l'Account B sia proprietario di un cluster a cui l'Account A deve accedere. L'account B può allegare AWS politica gestita AmazonRedshiftDataFullAccess al ruolo IAM dell'Account B. Quindi l'Account B considera attendibile l'Account A utilizzando una policy di attendibilità come la seguente:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/someRoleA" ] }, "Action": "sts:AssumeRole" } ] }

Infine, il ruolo IAM dell'Account A deve essere in grado di assumere il ruolo IAM dell'Account B.

JSON
{ "Version":"2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111122223333:role/someRoleB" } }

Specifica un ruolo IAM che limiti le risorse ai gruppi di lavoro Serverless Redshift e ai cluster Amazon Redshift in un Account AWS

Puoi specificare gli ARN delle risorse nella policy basata sull’identità per controllare l’accesso ai gruppi di lavoro Redshift serverless e ai cluster Amazon Redshift in un Account AWS. Questo esempio mostra come creare una policy che consente l’accesso all’API dati solo per il gruppo di lavoro e i cluster nell’ Account AWS specificato.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-data:CancelStatement", "redshift-data:DescribeStatement", "redshift-data:GetStatementResult", "redshift-data:ListStatements" ], "Resource": "*" }, { "Effect": "Allow", "Action": "redshift-data:*", "Resource": [ "arn:aws:redshift:us-east-1:111122223333:workgroup/*", "arn:aws:redshift:us-east-1:111122223333:cluster:*" ] } ] }

Configurare una policy IAM che limiti l’accesso alle informazioni sull’istruzione SQL solo al proprietario dell’istruzione

Per impostazione predefinita, l’API dati di Amazon Redshift considera il ruolo IAM utilizzato durante la chiamata di ExecuteStatement e BatchExecuteStatement come proprietario dell’istruzione SQL. Chiunque sia autorizzato ad assumere il ruolo è in grado di accedere alle informazioni sull’istruzione SQL, compresi i relativi risultati. Per limitare l’accesso alle informazioni sull’istruzione SQL a una sessione di ruolo IAM con un particolare proprietario, aggiungi la condizione redshift-data:statement-owner-iam-userid: "${aws:userid}". La seguente policy IAM limita l’accesso.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-data:CancelStatement", "redshift-data:DescribeStatement", "redshift-data:GetStatementResult", "redshift-data:ListStatements" ], "Resource": "*", "Condition": { "StringEquals": { "redshift-data:statement-owner-iam-userid": "${aws:userid}" } } } ] }

Puoi utilizzare la condizione statement-owner-iam-userid con CancelStatement, DescribeStatement, GetStatementResult e ListStatements. Per ulteriori informazioni, consulta Azioni definite dall’API dati Amazon Redshift.

Configurare una policy IAM che limiti l’accesso ai risultati SQL solo al proprietario della sessione

Per impostazione predefinita, l’API dati di Amazon Redshift considera il ruolo IAM utilizzato durante la chiamata di ExecuteStatement e BatchExecuteStatement come proprietario della sessione del database che esegue l’istruzione SQL. Chiunque sia autorizzato ad assumere il ruolo è in grado di inviare domande alla sessione del database. Per limitare l’accesso alla sessione a una sessione come ruolo IAM con un particolare proprietario, aggiungi la condizione redshift-data:session-owner-iam-userid: "${aws:userid}". La seguente policy IAM limita l’accesso.

La seguente policy IAM consente solo al proprietario della sessione di ottenere i risultati dell’istruzione. La condizione session-owner-iam-userid viene utilizzata per limitare l’accesso alle risorse al valore specificato userid.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-data:ExecuteStatement", "redshift-data:BatchExecuteStatement" ], "Resource": "*", "Condition": { "StringEquals": { "redshift-data:session-owner-iam-userid": "${aws:userid}" } } } ] }

Puoi utilizzare la condizione session-owner-iam-userid con ExecuteStatement e BatchExecuteStatement. Per ulteriori informazioni, consulta Azioni definite dall’API dati Amazon Redshift.