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 o EC2 AmazonEMR, il cluster deve disporre dell'autorizzazione per accedere alla risorsa ed eseguire le azioni necessarie. Ad esempio, per caricare dati da Amazon S3, è COPY necessario avere LIST accesso al bucket e GET agli oggetti del bucket. Per maggiori informazioni sulle autorizzazioni minime, consultare IAMautorizzazioni per, e COPY UNLOAD 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, si specifica 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, fornisci 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 sui ruoli, il cluster assume temporaneamente un ruolo per conto dell'utente. IAM Quindi, in base alle autorizzazioni concesse al ruolo, il cluster può accedere alle risorse AWS necessarie.

La creazione di un IAM ruolo è simile alla concessione delle autorizzazioni a un utente, in quanto si tratta di un' AWS identità con politiche di autorizzazione che determinano ciò che l'identità può e non può fare. 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:

  • È possibile utilizzare IAM strumenti AWS standard per definire un IAM ruolo 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 IAM politiche dettagliate che concedano 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 della chiave di accesso e l'ID della chiave di accesso segreta non vengono memorizzati o trasmessi nel codice. SQL

Per utilizzare il controllo degli accessi basato sui ruoli, devi prima creare un IAM ruolo utilizzando il tipo di ruolo del servizio Amazon Redshift e quindi assegnare il ruolo al tuo cluster. Il ruolo deve avere, come minimo, le autorizzazioni elencate in IAMautorizzazioni per, e COPY UNLOAD CREATE LIBRARY. Per i passaggi per creare un IAM ruolo 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.

Puoi aggiungere un ruolo a un cluster o visualizzare i ruoli associati a un cluster utilizzando la console di gestione Amazon RedshiftCLI, oppure. API Per ulteriori informazioni, consulta Associating an IAM role with a cluster nella Amazon Redshift Management Guide.

Quando crei un IAM ruolo, IAM restituisce un Amazon Resource Name (ARN) per il ruolo. Per specificare un IAM ruolo, fornisci ARN al ruolo il IAM_ROLE parametro o il CREDENTIALS parametro.

Ad esempio, supponiamo che al cluster sia collegato il seguente ruolo.

"IamRoleArn": "arn:aws:iam::0123456789012:role/MyRedshiftRole"

Il seguente esempio di COPY comando utilizza il ROLE parametro IAM _ insieme ARN a quello dell'esempio precedente per l'autenticazione e l'accesso ad Amazon S3.

copy customer from 's3://amzn-s3-demo-bucket/mydata' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Il seguente esempio di COPY comando utilizza il CREDENTIALS parametro per specificare il IAM ruolo.

copy customer from 's3://amzn-s3-demo-bucket/mydata' credentials 'aws_iam_role=arn:aws:iam::0123456789012:role/MyRedshiftRole';

Inoltre, un superutente può concedere il ASSUMEROLE privilegio agli utenti e ai gruppi del database di fornire l'accesso a un ruolo per le COPY operazioni. 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 IAM utente 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 IAM ruolo per l'autenticazione invece di fornire un ID della chiave di accesso in testo semplice 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). Crea sempre un IAM utente e fornisci l'ID della chiave di accesso e la chiave di accesso segreta dell'utente. Per i passaggi per creare un IAM utente, consulta Creazione di un IAM utente nel tuo AWS account.

Per autenticarti usando ACCESS _ KEY _ID e SECRET _ ACCESS _KEY, sostituisci <access-key-id> e <secret-access-key> con l'ID della chiave di accesso dell'utente autorizzato e una chiave di accesso segreta completa, come illustrato di seguito.

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

Per autenticarti utilizzando il CREDENTIALS parametro, sostituisci <access-key-id> e <secret-access-key> con l'ID della chiave di accesso dell'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'IAMutente deve disporre almeno delle autorizzazioni elencate inIAMautorizzazioni per, e COPY UNLOAD 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 AWS Security Token Service (AWS STS) API operations. Le AWS STS API operazioni 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 IAM utenti esistenti o non AWS utenti. Per ulteriori informazioni sulla creazione di credenziali di sicurezza temporanee, vedere Utilizzo delle credenziali di sicurezza temporanee nella Guida per l'IAMutente.

È 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 _ e ACCESS _KEY, sostituisci SESSION TOKEN <temporary-access-key-id>, <temporary-secret-access-key>e <temporary-token> come illustrato di seguito.

ACCESS_KEY_ID '<temporary-access-key-id>' SECRET_ACCESS_KEY '<temporary-secret-access-key>' SESSION_TOKEN '<temporary-token>';

Per autenticarsi utilizzandoCREDENTIALS, includete session_token=<temporary-token> nella stringa delle credenziali come illustrato 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 COPY comando 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 LISTING tabella 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 LISTING tabella utilizzando il CREDENTIALS parametro 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 orUNLOAD. 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'COPYoperazione richiede un'ora, l'COPYoperazione ha esito negativo prima del completamento. Se utilizzi l'accesso basato su ruoli, le credenziali di sicurezza temporanee vengono aggiornate automaticamente fino al completamento dell'operazione.

IAMautorizzazioni per, e COPY UNLOAD CREATE LIBRARY

Il IAM ruolo o l'utente a cui fa riferimento il CREDENTIALS parametro deve disporre almeno delle seguenti autorizzazioni:

  • COPYDa Amazon S3, l'autorizzazione per LIST il bucket Amazon S3 e gli oggetti GET Amazon S3 che vengono caricati e il file manifest, se utilizzato.

  • COPYDa Amazon S3EMR, Amazon e host remoti (SSH) con dati JSON formattati, autorizzazione LIST e GET file JSONPaths su Amazon S3, se ne viene utilizzato uno.

  • COPYDa DynamoDB, l'autorizzazione SCAN e DESCRIBE la tabella DynamoDB che viene caricata.

  • COPYDa un EMR cluster Amazon, autorizzazione per l'ListInstancesazione sul EMR cluster Amazon.

  • UNLOADPer Amazon S3, GETLIST, e PUT le autorizzazioni per il bucket Amazon S3 in cui vengono scaricati i file di dati.

  • CREATELIBRARYDa Amazon S3, autorizzazione all'importazione LIST del bucket Amazon S3 e degli oggetti GET Amazon S3.

Nota

Se ricevi il messaggio di erroreS3ServiceException: Access Denied, quando esegui un CREATE LIBRARY comando COPYUNLOAD, o, il cluster non dispone delle autorizzazioni di accesso adeguate per Amazon S3.

Puoi gestire IAM le autorizzazioni allegando una IAM policy a un IAM ruolo collegato al tuo cluster, a un utente o al gruppo a cui appartiene l'utente. Ad esempio, la policy AmazonS3ReadOnlyAccess gestita concede LIST e GET autorizzazioni alle risorse Amazon S3. Per ulteriori informazioni sulle IAM politiche, consulta Managing Policies nella IAM Guida per l'IAMutente.