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
Policy IAM per Amazon Redshift Spectrum
In questo argomento vengono illustrate le autorizzazioni IAM richieste per l’uso di Redshift Spectrum.
Per impostazione predefinita, Amazon Redshift Spectrum utilizza AWS Glue Data Catalog nelle regioni AWS che supportano AWS Glue. In altre regioni AWS, Redshift Spectrum utilizza il catalogo dati di Athena. Il cluster deve disporre dell'autorizzazione per accedere al catalogo dati esterno in AWS Glue o Athena e ai file di dati in Amazon S3. Per concedere questa autorizzazione, è necessario fare riferimento a un ruolo AWS Identity and Access Management (IAM) associato al cluster. Se si utilizza un metastore Apache Hive per gestire il catalogo dati, non sarà necessario fornire l'accesso a ad Athena.
Puoi concatenare i ruoli di modo che il cluster possa assumere altri ruoli non associati al cluster. Per ulteriori informazioni, consultare Concatenazione di ruoli IAM per Amazon Redshift Spectrum.
Il catalogo AWS Glue a cui accedi potrebbe essere crittografato per aumentare la sicurezza. Se il catalogo AWS Glue è crittografato, è necessaria la chiave AWS KMS affinché AWS Glue possa accedere al catalogo AWS Glue. Per ulteriori informazioni, consultare Crittografia del catalogo di dati AWS Glue nella Guida per gli sviluppatori di AWS Glue.
Argomenti
Autorizzazioni di Amazon S3
Il cluster deve disporre almeno dell'accesso GET e LIST per il bucket Amazon S3. Se il bucket non si trova nello stesso account AWS del cluster, il bucket deve autorizzare anche il cluster per accedere ai dati. Per ulteriori informazioni, consultare Autorizzazione di Amazon Redshift per accedere ad altri servizi AWS per conto dell'utente.
Nota
Il bucket Amazon S3 non può utilizzare una policy di bucket che limita l'accesso solo da specifici endpoint VPC.
La policy seguente concede l'accesso GET e LIST a qualsiasi bucket Amazon S3. La policy consente l'accesso a bucket Amazon S3 per Redshift Spectrum nonché le operazioni COPY.
La policy seguente concede l'accesso GET e LIST al bucket Amazon S3 denominato amzn-s3-demo-bucket.
Autorizzazioni Amazon S3 tra account
Per concedere a Redshift Spectrum l'autorizzazione ad accedere ai dati in un bucket aggiungere che appartiene a un altro account AWS, aggiungere la seguente policy al bucket Amazon S3. Per ulteriori informazioni, consultare la pagina relativa alla concessione di autorizzazioni per bucket multiaccount.
Policy per concedere o limitare l'accesso mediante Redshift Spectrum
La policy di esempio seguente consente l’accesso a bucket Amazon S3 per Amazon Redshift. Quando aggiungi questa policy a un ruolo IAM, consigliamo di utilizzare un ruolo IAM che viene impiegato solo per Amazon Redshift. Suggeriamo inoltre di non riutilizzare i ruoli esistenti o di aggiungere ulteriori autorizzazioni a questo ruolo IAM.
Policy per concedere autorizzazioni minime
La policy seguente concede le autorizzazioni minime necessarie per utilizzare Redshift Spectrum con Amazon S3, AWS Glue e Athena.
Se per il catalogo dati si utilizza Athena anziché AWS Glue, la policy richiede l'accesso completo ad Athena. La policy seguente concede l'accesso alle risorse Athena. Se il database esterno è un metastore Hive, l'accesso ad Athena non è necessario.
Concatenazione di ruoli IAM per Amazon Redshift Spectrum
Quando si collega un ruolo al cluster, il cluster può assumere tale ruolo per accedere ad Amazon S3, Amazon Athena e AWS Glue 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. È possibile concatenare un massimo di 10 ruoli. Ogni ruolo nella catena assume il ruolo successivo nella catena, fino a quando il cluster non assume il ruolo alla fine della catena.
Per concatenare i ruoli, stabilisci una relazione di trust tra di essi. Un ruolo che assume un altro ruolo deve avere una policy di autorizzazioni che gli consente di assumere il ruolo specificato. A sua volta, il ruolo che passa le autorizzazioni deve avere una policy di trust che gli consente di passare le relative autorizzazioni a un altro ruolo. Per ulteriori informazioni, consultare Concatenazione di ruoli IAM in Amazon Redshift.
Quando esegui il comando CREATE EXTERNAL SCHEMA, puoi concatenare i ruoli includendo un elenco di ARN di ruoli separati da virgole.
Nota
L'elenco di ruoli concatenati non deve includere spazi.
Negli esempi seguenti, MyRedshiftRole è collegato al cluster. MyRedshiftRole assume il ruolo AcmeData, che appartiene all'account 111122223333.
create external schema acme from data catalog database 'acmedb' region 'us-west-2' iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole,arn:aws:iam::111122223333:role/AcmeData';
Controllo dell'accesso al catalogo dati AWS Glue
Se per il tuo catalogo dati utilizzi AWS Glue, puoi applicare il controllo degli accessi fine-grained al catalogo dati AWS Glue con la tua policy IAM. Ad esempio, potresti decidere di esporre soltanto alcuni database e tabelle a uno specifico ruolo IAM.
Le sezioni seguenti descrivono le policy IAM per vari livelli di accesso ai dati archiviati nel catalog dati AWS Glue.
Argomenti
Policy per le operazioni di database
Perché possano visualizzare e creare un database, gli utenti hanno bisogno dei diritti di accesso sia al database che al catalogo dati AWS Glue.
Nella seguente query di esempio viene creato un database.
CREATE EXTERNAL SCHEMA example_db FROM DATA CATALOG DATABASE 'example_db' region 'us-west-2' IAM_ROLE 'arn:aws:iam::redshift-account:role/spectrumrole' CREATE EXTERNAL DATABASE IF NOT EXISTS
La policy IAM seguente fornisce le autorizzazioni minime richieste per la creazione di un database.
La seguente query di esempio elenca i database correnti.
SELECT * FROM SVV_EXTERNAL_DATABASES WHERE databasename = 'example_db1' or databasename = 'example_db2';
La policy IAM seguente fornisce le autorizzazioni minime richieste per elencare i database correnti.
Policy per le operazioni di tabella
Affinché possano visualizzare, creare, rimuovere, modificare o effettuare altre operazioni sulle tabelle, gli utenti hanno bisogno di diversi tipi di accessi. Hanno bisogno di poter accedere alle tabelle, ai database ai quali queste appartengono e al catalogo.
La query di esempio seguente crea una tabella esterna.
CREATE EXTERNAL TABLE example_db.example_tbl0( col0 INT, col1 VARCHAR(255) ) PARTITIONED BY (part INT) STORED AS TEXTFILE LOCATION 's3://test/s3/location/';
La policy IAM seguente fornisce le autorizzazioni minime richieste per la creazione di una tabella esterna.
Le query di esempio seguenti elencano ciascuna le tabelle esterne correnti.
SELECT * FROM svv_external_tables WHERE tablename = 'example_tbl0' OR tablename = 'example_tbl1';
SELECT * FROM svv_external_columns WHERE tablename = 'example_tbl0' OR tablename = 'example_tbl1';
SELECT parameters FROM svv_external_tables WHERE tablename = 'example_tbl0' OR tablename = 'example_tbl1';
La policy IAM seguente fornisce le autorizzazioni minime richieste per elencare le tabelle esterne correnti.
La query di esempio seguente modifica una tabella esistente.
ALTER TABLE example_db.example_tbl0 SET TABLE PROPERTIES ('numRows' = '100');
La policy IAM seguente fornisce le autorizzazioni minime richieste per la modifica di una tabella esistente.
La query di esempio seguente rimuove una tabella esistente.
DROP TABLE example_db.example_tbl0;
La policy IAM seguente fornisce le autorizzazioni minime richieste per la rimozione di una tabella esistente.
Policy per le operazioni di partizione
Perché possano effettuare operazioni a livello di partizione (visualizzazione, creazione, rimozione, modifica e così via), gli utenti hanno bisogno delle autorizzazioni per le tabelle alle quali appartengono le partizioni. Hanno inoltre bisogno delle autorizzazione per i database correlati e il catalogo dati AWS Glue.
La query di esempio seguente crea una partizione.
ALTER TABLE example_db.example_tbl0 ADD PARTITION (part=0) LOCATION 's3://test/s3/location/part=0/'; ALTER TABLE example_db.example_t ADD PARTITION (part=1) LOCATION 's3://test/s3/location/part=1/';
La policy IAM seguente fornisce le autorizzazioni minime richieste per la creazione di una partizione.
La seguente query di esempio elenca le partizioni correnti.
SELECT * FROM svv_external_partitions WHERE schemname = 'example_db' AND tablename = 'example_tbl0'
La policy IAM seguente fornisce le autorizzazioni minime richieste per elencare le partizioni correnti.
La query di esempio seguente modifica una partizione esistente.
ALTER TABLE example_db.example_tbl0 PARTITION(part='0') SET LOCATION 's3://test/s3/new/location/part=0/';
La policy IAM seguente fornisce le autorizzazioni minime richieste per la modifica di una partizione esistente.
La query di esempio seguente rimuove una partizione esistente.
ALTER TABLE example_db.example_tbl0 DROP PARTITION(part='0');
La policy IAM seguente fornisce le autorizzazioni minime richieste per la rimozione di una partizione esistente.