Utilizzo dell’API dati con la propagazione affidabile delle identità - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog.

Utilizzo dell’API dati con la propagazione affidabile delle identità

In qualità di amministratore di account Amazon Redshift, puoi integrare il cluster o il gruppo di lavoro Amazon Redshift con AWS IAM Identity Center, il che aiuta a gestire l’accesso della forza lavoro ad Amazon Redshift con il single sign-on. Per ulteriori informazioni, consulta Configurazione dell’integrazione di Centro identità AWS IAM con Amazon Redshift. L’API dati Amazon Redshift supporta la propagazione delle identità utente di Centro identità IAM a un cluster o un gruppo di lavoro Amazon Redshift e ad altri servizi, ad esempio AWS Lake Formation, lungo la catena. Puoi configurare ed eseguire query utilizzando l’API dati seguendo le fasi descritte in Access AWS services programmatically using trusted identity propagation.

Quando chiami l’API dati utilizzando un’identità utente di Centro identità IAM da una sessione del ruolo IAM rafforzata con l’identità, puoi accedere solo all’istruzione e al risultato dell’istruzione risultanti utilizzando lo stesso utente di Centro identità IAM. Ad esempio, il comando AWS CLI seguente chiama l’operazione execute-statement per eseguire un comando SQL con la propagazione affidabile delle identità.

aws redshift-data execute-statement --sql "select current_user;" --cluster-id mycluster --database dev

Il comando AWS CLI seguente chiama l’operazione batch-execute-statement per eseguire due comandi SQL.

aws redshift-data batch-execute-statement --sqls "select current_user;" "select current_date;" --cluster-id mycluster --database dev

Per accedere alle istruzioni con cancel-statement, describe-statement, get-statement-result e get-statement-result-v2 inviate dalle sessioni del ruolo IAM rafforzate con l’identità, l’utente e il ruolo IAM di Centro identità IAM devono corrispondere alle credenziali utilizzate per eseguire execute-statment o batch-execute-statement. Ad esempio, il comando AWS CLI seguente consente di ottenere i risultati di un’istruzione SQL.

aws redshift-data get-statement-result --id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

Per elencare le istruzioni, è necessario fornire un parametro cluster-identifier o workgroup-name per garantire che l’utente di Centro identità IAM abbia accesso solo alle applicazioni di Centro identità IAM di Amazon Redshift a cui è assegnato. Ad esempio, il comando AWS CLI seguente consente di elencare le istruzioni per un cluster specifico.

aws redshift-data list-statements --cluster-identifier mycluster

Puoi inoltre invocare le operazioni dell’API dati che accedono agli oggetti del database in un cluster o un gruppo di lavoro utilizzando una propagazione affidabile delle identità. Sono incluse le operazioni list-databases, list-schemas, list-tables e describe-table.

Le chiamate API effettuate dall’utente di Centro identità IAM possono essere monitorate in AWS CloudTrail. Una sezione onBehalfOf dell’evento CloudTrail mostra l’ID utente di Centro identità IAM e l’ARN dell’archivio di identità. L’esempio seguente mostra un frammento di un evento CloudTrail che mostra la sezione onBehalfOf con l’ID utente di Centro identità IAM di a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 e l’ARN dell’archivio identità di arn:aws:identitystore::123456789012:identitystore/d-9067bc44d2.

{ "eventVersion":"1.10", "userIdentity":{ "type":"AssumedRole", ... }, "onBehalfOf":{ "userId":"a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "identityStoreArn":"arn:aws:identitystore::123456789012:identitystore/d-9067bc44d2" } }, "eventTime":"2025-01-13T04:46:27Z", "eventSource":"redshift-data.amazonaws.com", "eventName":"ExecuteStatement", "awsRegion":"us-east-1" }

Puoi eseguire il seguente comando SQL per verificare la query inviata dall’utente di Centro identità IAM. In questo esempio l’e-mail registrata in Centro identità è username@example.com.

SELECT h.query_id, h.database_name, h.status, h.query_text, u.usename, h.start_time, h.end_time FROM sys_query_history h LEFT JOIN pg_user u ON h.user_id = u.usesysid where u.usename='awsidc:username@example.com' ORDER BY h.start_time DESC;