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
Autorizzazioni per accedere ad altre risorse AWS
Per spostare i dati tra il cluster e un'altra risorsa AWS, ad esempio Amazon S3, Amazon DynamoDB, Amazon EMR o Amazon EC2, il cluster deve disporre dell'autorizzazione di accedere alla risorsa e di eseguire le operazioni necessarie. Ad esempio, per caricare i dati da Amazon S3, COPY deve avere accesso LIST al bucket e accesso GET per gli oggetti del bucket. Per maggiori informazioni sulle autorizzazioni minime, consultare Autorizzazioni IAM per COPY, UNLOAD e CREATE LIBRARY.
Per ottenere l'autorizzazione per accedere alla risorsa, il cluster deve essere autenticato. È possibile scegliere uno dei seguenti metodi di autenticazione:
-
Controllo degli accessi basato sui ruoli: per il controllo degli accessi basato sui ruoli, è necessario specificare un ruolo AWS Identity and Access Management (IAM) utilizzato dal cluster per l'autenticazione e l'autorizzazione. Per salvaguardare le credenziali AWS e i dati sensibili, consigliamo vivamente di utilizzare l'autenticazione basata su ruoli.
-
Controllo degli accessi basato su chiave: per il controllo degli accessi basato sulle chiavi, le credenziali di accesso (ID chiave di accesso e chiave di accesso segreta) di AWS per un utente sono fornite come testo normale.
Controllo degli accessi basato sui ruoli
Con il controllo degli accessi basato su ruoli, il cluster assume in modo temporaneo e automatico un ruolo (IAM). Quindi, in base alle autorizzazioni concesse al ruolo, il cluster può accedere alle risorse AWS necessarie.
La creazione di un ruolo IAM è simile all'assegnazione delle autorizzazioni a un utente, in quanto è un'identità AWS con policy di autorizzazioni che determinano ciò che l'identità può e non può fare in AWS. Tuttavia, invece di essere associato univocamente a un utente, un ruolo può essere assunto da qualsiasi entità che ne abbia bisogno. Inoltre, a un ruolo non sono associate credenziali (password o chiavi di accesso). Al contrario, se un ruolo è associato a un cluster, le chiavi di accesso vengono create dinamicamente e fornite al cluster.
Consigliamo di utilizzare il controllo degli accessi basato sui ruoli in quanto fornisce un controllo più sicuro e preciso dell'accesso alle risorse AWS e ai dati sensibili dell'utente, oltre a salvaguardare le credenziali AWS.
L'autenticazione basata sui ruoli offre i seguenti vantaggi:
-
È possibile utilizzare gli strumenti IAM standard di AWS per definire un ruolo IAM e associarlo a più cluster. Quando modifichi la policy di accesso a un ruolo, le modifiche vengono applicate automaticamente a tutti i cluster che utilizzano il ruolo.
-
È possibile definire policy IAM dettagliate che concedono autorizzazioni per cluster specifici e utenti di database per accedere a risorse e operazioni AWS specifiche.
-
Il cluster ottiene le credenziali di sessione temporanee al momento dell'esecuzione e le aggiorna come necessario fino al completamento dell'operazione. Se utilizzi credenziali temporanee basate su chiavi, l'operazione fallisce se le credenziali temporanee scadono prima del completamento.
-
L'ID chiave di accesso e l'ID chiave di accesso segreta non vengono memorizzati o trasmessi nel codice SQL.
Per utilizzare il controllo degli accessi basato su ruoli, è necessario creare prima un ruolo IAM utilizzando il tipo di ruolo di servizio Amazon Redshift, quindi collegare il ruolo al cluster. Il ruolo deve avere, come minimo, le autorizzazioni elencate in Autorizzazioni IAM per COPY, UNLOAD e CREATE LIBRARY. Per la procedura di creazione di un ruolo IAM e per collegarlo al cluster, consulta Autorizzazione di Amazon Redshift ad accedere ad altri servizi AWS per tuo conto nella Guida alla gestione di Amazon Redshift.
È possibile aggiungere un ruolo a un cluster o visualizzare i ruoli associati a un cluster utilizzando la Console di gestione, la CLI o l'API di Amazon Redshift. Per ulteriori informazioni, consulta Associazione di un ruolo IAM a un cluster nella Guida alla gestione di Amazon Redshift.
Quando crei un ruolo IAM, IAM restituisce un Amazon Resource Name (ARN) per il ruolo. Per specificare un ruolo IAM, fornisci al ruolo ARN il parametro Utilizzo del parametro IAM_ROLE o il parametro Utilizzo del parametro CREDENTIALS.
Ad esempio, supponiamo che al cluster sia collegato il seguente ruolo.
"IamRoleArn": "arn:aws:iam::0123456789012:role/MyRedshiftRole"
Il seguente esempio di comando COPY utilizza il parametro IAM_ROLE con l'ARN dell'esempio precedente per l'autenticazione e l'accesso a Amazon S3.
copy customer from 's3://amzn-s3-demo-bucket/mydata' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
Il seguente esempio di comando COPY utilizza il parametro CREDENTIALS per specificare il ruolo IAM.
copy customer from 's3://amzn-s3-demo-bucket/mydata' credentials 'aws_iam_role=arn:aws:iam::0123456789012:role/MyRedshiftRole';
Inoltre, un utente con privilegi avanzati può concedere il privilegio ASSUMEROLE a utenti e gruppi di database per fornire l'accesso a un ruolo per le operazioni COPY. Per informazioni, consulta GRANT.
Controllo degli accessi basato su chiave
Con il controllo degli accessi basato su chiave, viene fornito l'ID chiave di accesso e la chiave di accesso segreta per un utente IAM autorizzato ad accedere alle risorse AWS che contengono i dati. Puoi utilizzare i parametri Utilizzo dei parametri ACCESS_KEY_ID e SECRET_ACCESS_KEY insieme o il parametro Utilizzo del parametro CREDENTIALS.
Nota
Consigliamo vivamente di utilizzare un ruolo IAM per l'autenticazione invece di fornire un ID chiave di accesso in chiaro e una chiave di accesso segreta. Se si sceglie un controllo di accesso basato su chiave, non utilizzare mai le credenziali dell'account AWS(root). Creare sempre un utente IAM e fornire l'ID della chiave di accesso e la chiave di accesso segreta di quell'utente. Per la procedura per creare un utente IAM, consultare Creazione di un utente IAM nell'account AWS.
Per l'autenticazione tramite ACCESS_KEY_ID e SECRET_ACCESS_KEY, sostituisci <access-key-id> e <secret-access-key> con un ID chiave di accesso di un utente autorizzato e una chiave di accesso completamente segreta, come mostrato di seguito.
ACCESS_KEY_ID '<access-key-id>' SECRET_ACCESS_KEY '<secret-access-key>';
Per l'autenticazione tramite il parametro CREDENTIALS, sostituisci <access-key-id> e <secret-access-key> con un ID chiave di accesso di un utente autorizzato e una chiave di accesso completamente segreta, come mostrato di seguito.
CREDENTIALS 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>';
L'utente IAM deve disporre, come minimo, delle autorizzazioni elencate in Autorizzazioni IAM per COPY, UNLOAD e CREATE LIBRARY.
Credenziali di sicurezza temporanee
Se utilizzi il controllo degli accessi basato su chiave, è possibile limitare ulteriormente l'accesso ai dati degli utenti utilizzando le credenziali di sicurezza temporanee. L'autenticazione basata su ruoli utilizza automaticamente credenziali temporanee.
Nota
Consigliamo vivamente di utilizzare role-based access control invece di creare credenziali temporanee e fornire ID chiave di accesso e chiave di accesso segreta come testo in chiaro. Il controllo degli accessi basato sui ruoli utilizza automaticamente le credenziali temporanee.
Le credenziali di sicurezza temporanee offrono maggiore sicurezza perché hanno una durata breve e non possono essere riutilizzate dopo la loro scadenza. L'ID chiave di accesso e la chiave di accesso segreta generate con il token non possono essere utilizzate senza il token e un utente che ha queste credenziali di sicurezza temporanee può accedere alle risorse solo fino a quando le credenziali non scadono.
Per concedere agli utenti l'accesso temporaneo alle risorse, chiama le operazioni API AWS Security Token Service (AWS STS). Le operazioni API AWS STS restituiscono credenziali di sicurezza temporanee costituite da un token di sicurezza, un ID chiave di accesso e una chiave di accesso segreta. Rilascia le credenziali di sicurezza temporanee agli utenti che necessitano di un accesso temporaneo alle risorse. Questi utenti possono essere utenti IAM esistenti o utenti non AWS. Per ulteriori informazioni sulla creazione delle credenziali di sicurezza temporanee, consultare Utilizzo delle credenziali di sicurezza temporanee nella Guida per l'utente di IAM.
È possibile utilizzare sia i parametri Utilizzo dei parametri ACCESS_KEY_ID e SECRET_ACCESS_KEY insieme con il parametro SESSION_TOKEN o il parametro Utilizzo del parametro CREDENTIALS. È inoltre necessario fornire l'ID chiave di accesso e la chiave di accesso segreta forniti con il token.
Per l'autenticazione tramite ACCESS_KEY_ID, SECRET_ACCESS_KEY e SESSION_TOKEN sostituisci <temporary-access-key-id>, <temporary-secret-access-key> e <temporary-token> come mostrato di seguito.
ACCESS_KEY_ID '<temporary-access-key-id>' SECRET_ACCESS_KEY '<temporary-secret-access-key>' SESSION_TOKEN '<temporary-token>';
Per autenticarti utilizzando CREDENTIALS, includi session_token= nella stringa delle credenziali come mostrato di seguito. <temporary-token>
CREDENTIALS 'aws_access_key_id=<temporary-access-key-id>;aws_secret_access_key=<temporary-secret-access-key>;session_token=<temporary-token>';
L'esempio seguente mostra un comando COPY con credenziali di sicurezza temporanee.
copy table-name from 's3://objectpath' access_key_id '<temporary-access-key-id>' secret_access_key '<temporary-secret-access-key>' session_token '<temporary-token>';
L'esempio seguente carica la tabella LISTING con credenziali temporanee e crittografia dei file.
copy listing from 's3://amzn-s3-demo-bucket/data/listings_pipe.txt' access_key_id '<temporary-access-key-id>' secret_access_key '<temporary-secret-access-key>' session_token '<temporary-token>' master_symmetric_key '<root-key>' encrypted;
L'esempio seguente carica la tabella LISTING utilizzando il parametro CREDENTIALS con credenziali temporanee e crittografia dei file.
copy listing from 's3://amzn-s3-demo-bucket/data/listings_pipe.txt' credentials 'aws_access_key_id=<temporary-access-key-id>;aws_secret_access_key=<temporary-secret-access-key>;session_token=<temporary-token>;master_symmetric_key=<root-key>' encrypted;
Importante
Le credenziali di sicurezza temporanee devono essere valide per l'intera durata dell'operazione COPY o UNLOAD. Se le credenziali di sicurezza temporanee scadono durante l'operazione, il comando fallisce e la transazione viene annullata. Ad esempio, se le credenziali di sicurezza temporanee scadono dopo 15 minuti e l'operazione COPY richiede un'ora, l'operazione COPY fallisce prima del completamento. Se utilizzi l'accesso basato su ruoli, le credenziali di sicurezza temporanee vengono aggiornate automaticamente fino al completamento dell'operazione.
Autorizzazioni IAM per COPY, UNLOAD e CREATE LIBRARY
L'utente o il ruolo IAM a cui fa riferimento il parametro CREDENTIALS deve avere, come minimo, le seguenti autorizzazioni:
-
Per COPY da Amazon S3, l'autorizzazione per il LIST del bucket Amazon S3 e il GET degli oggetti Amazon S3 che vengono caricati e il file manifest, se viene utilizzato.
-
Per COPY da Amazon S3, Amazon EMR e host remoti (SSH) con dati formattati in JSON, l'autorizzazione per LIST e GET del file JSONPaths su Amazon S3, se viene utilizzato.
-
Per COPY da DynamoDB, l'autorizzazione a SCAN e DESCRIBE sulla tabella DynamoDB che viene caricata.
-
Per COPY da un cluster Amazon EMR, l'autorizzazione per l'operazione
ListInstancessul cluster Amazon EMR. -
Per UNLOAD su Amazon S3, le autorizzazioni GET, LIST e PUT per il bucket Amazon S3 in cui i file di dati vengono scaricati.
-
Per CREATE LIBRARY da Amazon S3, l'autorizzazione per il LIST del bucket Amazon S3 e il GET degli oggetti Amazon S3 importati.
Nota
Se si riceve il messaggio di errore S3ServiceException: Access
Denied, quando si esegue un comando COPY, UNLOAD o CREATE LIBRARY, il cluster non ha le autorizzazioni di accesso appropriate per Amazon S3.
È possibile gestire le autorizzazioni IAM assegnando una policy IAM a un ruolo IAM collegato al cluster, all'utente o al gruppo a cui appartiene l'utente. Ad esempio, la policy gestita da AmazonS3ReadOnlyAccess concede le autorizzazioni LIST e GET alle risorse Amazon S3. Per ulteriori informazioni sulle policy IAM, consultare Utilizzo delle policy IAM nella Guida per l'utente di IAM.