Autorizzazioni per accedere ad altre risorse AWS - Amazon Redshift

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

Autorizzazioni per accedere ad altre risorse AWS

Per spostare dati tra il cluster e un'altra AWS risorsa, ad esempio Amazon S3, Amazon DynamoDB, Amazon EMR o EC2 Amazon, il cluster deve disporre dell'autorizzazione per accedere alla risorsa ed eseguire le azioni 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 proteggere AWS le credenziali e i dati sensibili, consigliamo vivamente di utilizzare l'autenticazione basata sui ruoli.

  • Controllo degli accessi basato su chiave— Per il controllo degli accessi basato su chiavi, si forniscono le credenziali di AWS accesso (ID della chiave di accesso e chiave di accesso segreta) per un utente come testo semplice.

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.

Ti consigliamo di utilizzare il controllo degli accessi basato sui ruoli perché offre un controllo più sicuro e dettagliato dell'accesso alle AWS risorse e ai dati sensibili degli utenti, oltre a salvaguardare le credenziali. AWS

L'autenticazione basata sui ruoli offre i seguenti vantaggi:

  • Puoi utilizzare strumenti IAM AWS standard 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.

  • Puoi definire policy IAM granulari che concedono autorizzazioni a cluster e utenti del database specifici per accedere a risorse e azioni specifiche. AWS

  • 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 i passaggi per creare un ruolo IAM e collegarlo al cluster, consulta la sezione Autorizzazione di Amazon Redshift ad accedere ad AWS altri servizi per conto dell'utente nella Amazon Redshift Management Guide.

È 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 IAM_ROLE o il 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, consultare GRANT.

Controllo degli accessi basato su chiave

Con il controllo degli accessi basato su chiavi, fornisci l'ID della chiave di accesso e la chiave di accesso segreta per un utente IAM autorizzato ad accedere alle AWS risorse che contengono i dati. È possibile utilizzare sia i parametri ACCESS_KEY_ID and SECRET_ACCESS_KEY insieme, sia il 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 scegli il controllo degli accessi basato su chiavi, non utilizzare mai le credenziali del tuo AWS account (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 eseguire l'autenticazione utilizzando ACCESS_KEY_ID e SECRET_ACCESS_KEY, sostituisci e <secret-access-key> con l'ID della chiave di accesso di un utente autorizzato <access-key-id> e una chiave di accesso segreta completa, come illustrato di seguito.

ACCESS_KEY_ID '<access-key-id>' SECRET_ACCESS_KEY '<secret-access-key>';

Per eseguire l'autenticazione utilizzando il parametro CREDENTIALS, sostituite <access-key-id> e <secret-access-key> con l'ID della chiave di accesso di un utente autorizzato e una chiave di accesso segreta completa, come illustrato 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 tue risorse, chiami le operazioni API AWS Security Token Service (AWS STS). Le operazioni AWS STS API restituiscono credenziali di sicurezza temporanee costituite da un token di sicurezza, un ID della 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 ACCESS_KEY_ID and SECRET_ACCESS_KEY insieme con il parametro SESSION_TOKEN o il parametro CREDENTIALS. È inoltre necessario fornire l'ID chiave di accesso e la chiave di accesso segreta forniti con il token.

Per eseguire l'autenticazione utilizzando ACCESS_KEY_ID, SECRET_ACCESS_KEY e SESSION_TOKEN, sostituisci e come mostrato di seguito. <temporary-access-key-id> <temporary-secret-access-key> <temporary-token>

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=<temporary-token> nella stringa delle credenziali come mostrato di seguito.

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 la COPIA da Amazon S3, Amazon EMR e host remoti (SSH) con dati in formato JSON, autorizzazione a ELENCARE e OTTENERE il file su JSONPaths Amazon S3, se ne viene utilizzato uno.

  • 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 ListInstances sul 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.