Autorizzazione di accesso all'API dati di Amazon Redshift - 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à.

Autorizzazione di accesso all'API dati di Amazon Redshift

Per accedere all'API dati, un utente deve essere autorizzato. È possibile consentire a un utente di accedere all'API dati aggiungendo una policy gestita, che è una policy AWS Identity and Access Management (IAM) predefinita, a tale utente. Come best practice, consigliamo di collegare le policy di autorizzazioni a un ruolo IAM, che quindi viene assegnato a utenti e gruppi secondo le necessità. Per ulteriori informazioni, consulta Identity and access management in Amazon Redshift. Per visualizzare le autorizzazioni consentite e negate dalle policy gestite, consultare la console IAM (https://console.aws.amazon.com/iam/).

Amazon Redshift fornisce la policy gestita AmazonRedshiftDataFullAccess. Questa policy fornisce accesso completo alle operazioni API dati di Amazon Redshift. Questa policy consente inoltre l'accesso mirato a specifiche operazioni di Amazon Redshift AWS Secrets Manager e API IAM necessarie per autenticare e accedere a un cluster Amazon Redshift o a un gruppo di lavoro Serverless Redshift.

È possibile anche creare una policy IAM personalizzata che consente l'accesso a risorse specifiche. Per creare la policy, utilizzare la policy AmazonRedshiftDataFullAccess come modello di partenza. Dopo aver creato la policy, aggiungerla a ciascun utente che richiede l'accesso all'API dati.

Considera i seguenti requisiti della policy IAM associata all'utente:

  • Se la utilizzi AWS Secrets Manager per l'autenticazione, conferma che la policy consenta l'utilizzo dell'secretsmanager:GetSecretValueazione per recuperare il segreto etichettato con la chiave. RedshiftDataFullAccess

  • Se per l'autenticazione in un cluster vengono utilizzate credenziali temporanee, confermare che la policy consente l'uso dell'operazione redshift:GetClusterCredentials al nome utente del database redshift_data_api_user per qualsiasi database nel cluster. Questo nome utente deve essere già stato creato nel database.

  • Se utilizzi credenziali temporanee per eseguire l'autenticazione in un gruppo di lavoro serverless, verifica che la policy consenta l'uso dell'operazione redshift-serverless:GetCredentials per richiamare il gruppo di lavoro taggato con la chiave RedshiftDataFullAccess. L'utente del database viene mappato 1:1 all'identità di origine AWS Identity and Access Management (IAM). Ad esempio, l'utente sample_user è mappato all'utente del database IAM:sample_user e il ruolo IAM sample_role è mappato a IAMR:sample_role. Per ulteriori informazioni sulle diverse identità IAM, consulta Identità IAM (utenti, gruppi di utenti e ruoli) nella Guida per l'utente IAM.

Per eseguire una query su un cluster di proprietà di un altro account, l'account proprietario deve fornire un ruolo IAM che l'API dati può assumere nell'account chiamante. Si supponga, ad esempio, che l'Account B sia proprietario di un cluster a cui l'Account A deve accedere. L'account B può allegare la policy AWS-managed AmazonRedshiftDataFullAccess al ruolo IAM dell'account B. Quindi l'Account B considera attendibile l'Account A utilizzando una policy di attendibilità come la seguente:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::accountID-of-account-A:role/someRoleA" ] }, "Action": "sts:AssumeRole" } ] }

Infine, il ruolo IAM dell'Account A deve essere in grado di assumere il ruolo IAM dell'Account B.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::accountID-of-account-B:role/someRoleB" } }

I seguenti link forniscono ulteriori informazioni sulla AWS Identity and Access Management IAM User Guide.

Memorizzazione delle credenziali del database in AWS Secrets Manager

Quando si richiama l'API dati, è possibile passare le credenziali per il cluster o il gruppo di lavoro serverless utilizzando un secreto in AWS Secrets Manager. Per utilizzare questo metodo per passare le credenziali, specifica il nome del segreto o l'Amazon Resource Name (ARN) del segreto.

Per archiviare le credenziali con Secrets Manager, è necessaria l'autorizzazione per la policy gestita da SecretManagerReadWrite. Per ulteriori informazioni sulle autorizzazioni minime, vedere Creating and Managing Secrets with AWS Secrets Manager nella Guida per l'AWS Secrets Manager utente.

Come archiviare le credenziali in un segreto per un cluster Amazon Redshift
  1. Usa la AWS Secrets Manager console per creare un segreto che contenga le credenziali per il tuo cluster:

    • Quando si sceglie Archivia un nuovo segreto, selezionare Credenziali per il cluster Redshift.

    • Archiviare i valori per Nome utente (utente del database), Password e Cluster database(identificatore del cluster) nel segreto.

    • Taggare il segreto con la chiave RedshiftDataFullAccess. La policy gestita da AWSAmazonRedshiftDataFullAccess consente solo l'operazione secretsmanager:GetSecretValue per i segreti taggati con la chiave RedshiftDataFullAccess.

    Per le istruzioni, consultare Creazione di un segreto di base nella Guida per l'utente di AWS Secrets Manager .

  2. Usa la AWS Secrets Manager console per visualizzare i dettagli del segreto che hai creato o esegui il aws secretsmanager describe-secret AWS CLI comando.

    Prendere nota del nome e dell'ARN del segreto, Possono essere utilizzati nelle chiamate all'API dati.

Archiviazione delle credenziali in un segreto per un gruppo di lavoro serverless
  1. Usa AWS Secrets Manager AWS CLI i comandi per archiviare un segreto che contiene le credenziali per il tuo gruppo di lavoro serverless:

    • Crea il tuo segreto in un file, ad esempio un file JSON denominato mycreds.json. Fornire i i valori per User name (Nome utente) (utente del database) e Password nel file.

      { "username": "myusername", "password": "mypassword" }
    • Memorizzare i valori nel segreto e taggare il segreto con la chiave RedshiftDataFullAccess.

      aws secretsmanager create-secret --name MyRedshiftSecret --tags Key="RedshiftDataFullAccess",Value="serverless" --secret-string file://mycreds.json

      Di seguito è riportato l'output.

      { "ARN": "arn:aws:secretsmanager:region:accountId:secret:MyRedshiftSecret-mvLHxf", "Name": "MyRedshiftSecret", "VersionId": "a1603925-e8ea-4739-9ae9-e509eEXAMPLE" }

    Per ulteriori informazioni, consulta l'argomento relativo alla creazione di un segreto di base con AWS CLI nella Guida per l'utente di AWS Secrets Manager .

  2. Usa la AWS Secrets Manager console per visualizzare i dettagli del segreto che hai creato o esegui il comando. aws secretsmanager describe-secret AWS CLI

    Prendere nota del nome e dell'ARN del segreto, Possono essere utilizzati nelle chiamate all'API dati.

Creazione di un endpoint Amazon VPC (AWS PrivateLink) per l'API dati

Amazon Virtual Private Cloud (Amazon VPC) consente di lanciare AWS risorse, come cluster e applicazioni Amazon Redshift, in un cloud privato virtuale (VPC). AWS PrivateLink fornisce connettività privata tra cloud privati virtuali (VPC) e AWS servizi in modo sicuro sulla rete Amazon. Utilizzando AWS PrivateLink, è possibile creare endpoint VPC che consentono di connettersi a servizi su account e VPC diversi basati su Amazon VPC. Per ulteriori informazioni AWS PrivateLink, consulta VPC Endpoint Services (AWS PrivateLink) nella Amazon Virtual Private Cloud User Guide.

Puoi chiamare l'API dati con gli endpoint Amazon VPC. L'uso di un endpoint Amazon VPC mantiene il traffico tra le applicazioni in Amazon VPC e l'API Data nella AWS rete, senza utilizzare indirizzi IP pubblici. Gli endpoint Amazon VPC consentono di soddisfare i requisiti di conformità e normativi relativi alla limitazione della connettività Internet. Ad esempio, se utilizzi un endpoint Amazon VPC, puoi mantenere il traffico tra un'applicazione in esecuzione su un'istanza Amazon EC2 e l'API dati nei VPC che li contengono.

Dopo aver creato l'endpoint Amazon VPC, puoi iniziare a utilizzarlo senza apportare modifiche al codice o alla configurazione nell'applicazione.

Per creare un endpoint Amazon VPC per l'API dati
  1. Accedi AWS Management Console e apri la console Amazon VPC all'indirizzo https://console.aws.amazon.com/vpc/.

  2. Scegliere Endpoint, quindi Create Endpoint (Crea endpoint).

  3. Nella pagina Crea endpoint, per Categoria di servizio, seleziona Servizi AWS . Per Nome servizio, scegliere redshift-data (com.amazonaws.region.redshift-data).

  4. Per VPC, scegliere il VPC in cui creare l'endpoint.

    Scegliere il VPC che contiene l'applicazione che effettua chiamate API dati.

  5. Per le sottoreti, scegli la sottorete per ogni zona di disponibilità (AZ) utilizzata dal AWS servizio che esegue l'applicazione.

    Per creare un endpoint Amazon VPC, specificare l'intervallo di indirizzi IP privati in cui l'endpoint sarà accessibile. A tale scopo, scegliere la sottorete per ogni zona di disponibilità. Questo ha l'effetto di limitare l'endpoint VPC all'intervallo di indirizzi IP privati specifico per ciascuna zona di disponibilità e crea inoltre un endpoint Amazon VPC in ogni zona di disponibilità.

  6. Per Enable DNS Name (Abilita nome DNS), seleziona Enable for this endpoint (Abilita per questo endpoint).

    Il DNS privato risolve il nome host DNS dell'API dati standard (https://redshift-data.region.amazonaws.com) negli indirizzi IP privati associati al nome host DNS specifico dell'endpoint Amazon VPC. Di conseguenza, puoi accedere all'endpoint VPC Data API utilizzando AWS CLI o AWS SDK senza apportare modifiche al codice o alla configurazione per aggiornare l'URL dell'endpoint Data API.

  7. Per Security group (Gruppo di sicurezza), scegli un gruppo di sicurezza da associare all'endpoint Amazon VPC.

    Scegli il gruppo di sicurezza che consente l'accesso al AWS servizio su cui è in esecuzione l'applicazione. Ad esempio, se un'istanza Amazon EC2 esegue l'applicazione, scegli il gruppo di sicurezza che consente l'accesso all'istanza Amazon EC2. Il gruppo di sicurezza consente di controllare il traffico verso l'endpoint Amazon VPC dalle risorse del VPC.

  8. Seleziona Crea endpoint.

Dopo aver creato l'endpoint, scegli il link in AWS Management Console per visualizzare i dettagli dell'endpoint.

La scheda Details (Dettagli) dell'endpoint mostra i nomi host DNS generati durante la creazione dell'endpoint Amazon VPC.

È possibile utilizzare l'endpoint standard (redshift-data.region.amazonaws.com) o uno degli endpoint specifici di VPC per chiamare l'API dati all'interno di Amazon VPC. L'endpoint API dati standard esegue automaticamente l'instradamento all'endpoint Amazon VPC. Questo routing si verifica perché il nome host DNS privato è stato abilitato al momento della creazione dell'endpoint Amazon VPC.

Quando utilizzi un endpoint Amazon VPC in una chiamata API dati, tutto il traffico tra l'applicazione e l'API dati rimane nei Amazon VPC che li contengono. Puoi utilizzare un endpoint Amazon VPC per qualsiasi tipo di chiamata API dati. Per informazioni sulla chiamata dell'API dati, consultare Considerazioni da fare durante la chiamata all'API dati di Amazon Redshift.

Unirsi a gruppi di database durante la connessione a un cluster

I gruppi di database sono raccolte di utenti del database. I privilegi del database possono essere concessi ai gruppi. Un amministratore può configurare un ruolo IAM in modo che questi gruppi di database vengano presi in considerazione quando SQL viene eseguito con l'API Data. Per ulteriori informazioni sui gruppi di database, consultare Gruppi nella Guida per gli sviluppatori di database di Amazon Redshift.

Puoi configurare il ruolo IAM di un chiamante dell'API Data in modo che l'utente del database specificato nella chiamata si unisca ai gruppi del database quando l'API dei dati si connette a un cluster. Questa funzionalità è supportata solo quando ci si connette a cluster forniti. Non è supportato durante la connessione a gruppi di lavoro Redshift Serverless. Il ruolo IAM del chiamante dell'API Data deve inoltre consentire l'azione redshift:JoinGroup.

Configuralo aggiungendo tag ai ruoli IAM. L'amministratore del ruolo IAM del chiamante aggiunge i tag con la chiave RedshiftDbGroups e un valore chiave di un elenco di gruppi di database. Il valore è un elenco di nomi separati da due punti (:) di gruppi di database fino a una lunghezza totale di 256 caratteri. I gruppi di database devono essere precedentemente definiti nel database connesso. Se un gruppo specificato non viene trovato nel database, viene ignorato. Ad esempio, per i gruppi di database accounting e retail, il valore-chiave è accounting:retail. La coppia chiave-valore del tag {"Key":"RedshiftDbGroups","Value":"accounting:retail"} viene utilizzato dall'API Data per determinare quali gruppi di database sono associati all'utente del database fornito nella chiamata alla Data API.

Per aggiungere gruppi di database come tag a un ruolo IAM
  1. Accedi AWS Management Console e apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione della console, scegliere Roles (Ruoli) e selezionare il nome del ruolo che si desidera modificare.

  3. Scegliere la scheda Tag, quindi scegliere Gestisci tag.

  4. Scegli Aggiungi tag, quindi aggiungi la chiave RedshiftDbGroupse un valore che è un elenco di database-groups-colon-separated.

  5. Seleziona Salvataggio delle modifiche.

    Ora, quando un principal IAM (con questo ruolo IAM associato) chiama l'API dei dati, l'utente del database specificato si unisce ai gruppi di database specificati nel ruolo IAM.

Per ulteriori informazioni su come collegare un tag a un principale, inclusi i ruoli e gli utenti IAM, consultare Assegnazione di tag di risorse IAM nella Guida per l'utente di IAM.