Come posso risolvere gli errori di "Access denied" ("Accesso negato") quando utilizzo Athena come origine dei dati in Quicksight?

Ultimo aggiornamento: 29/07/2022

Quando tento di utilizzare Amazon Athena come origine dei dati nel mio account Amazon QuickSight, ricevo errori di "Access denied" ("Accesso negato"). Come posso risolvere questo problema?

Breve descrizione

Di seguito sono riportati i motivi più comuni per la visualizzazione di errori di accesso negato quando si utilizza Amazon Athena come origine dei dati in Amazon QuickSight:

  • Il tuo account QuickSight non dispone delle autorizzazioni necessarie per accedere al bucket Amazon Simple Storage Service (Amazon S3).
  • Il file di dati è crittografato con una chiave AWS Key Management Service (AWS KMS).
  • Non ti è stata assegnata la policy di autorizzazione di AWS Identity and Access Management (IAM) necessaria.
  • Il bucket Amazon S3 non esiste. Oppure, il ruolo IAM utilizzato per interrogare i dati non dispone delle autorizzazioni S3 richieste.
  • Non ti sono state assegnate le policy di controllo dei servizi (SCP) necessarie. (Per gli account QuickSight che utilizzano AWS Organizations)
  • L'utente o il gruppo QuickSight non dispone delle autorizzazioni di AWS Lake Formation. (Per gli account Athena che utilizzano Lake Formation)

Nota: prima di iniziare la procedura di risoluzione dei problemi, assicurati di disporre dell'accesso ai tuoi dati in Athena.

Risoluzione

Se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI .

Il tuo account QuickSight non dispone delle autorizzazioni necessarie per accedere al bucket Amazon S3

Hai ricevuto un errore simile al seguente:

An error has been thrown from AWS Athena client. Permission denied on S3 path:
sourceErrorMessage: s3:/example bucket/object name

Per ottenere l'autorizzazione per il bucket S3, completa i seguenti passaggi:

  1. Apri la console Amazon QuickSight.
  2. Scegli Manage QuickSight (Gestisci QuickSight).
  3. Scegli Security & Permissions (Sicurezza e autorizzazioni).
  4. In QuickSight access to AWS Services (Accesso QuickSight ai servizi AWS), scegli Manage (Gestisci).
  5. Dall'elenco dei servizi AWS, seleziona Amazon S3.
  6. Scegli Select S3 buckets (Seleziona bucket S3) e seleziona il bucket S3 a cui desideri accedere da QuickSight.
  7. Scegli Write permission for Athena Workgroup (Autorizzazione di scrittura per Athena Workgroup), quindi scegli Finish (Fine).
  8. Scegli Save (Salva).

Il tuo file di dati è crittografato con una chiave AWS KMS

Se il tuo file di dati è crittografato con una chiave AWS KMS, Amazon S3 può negarti l'accesso ai dati. Per risolvere questo problema, concedi al tuo ruolo di servizio QuickSight l'accesso alla chiave AWS KMS. Completa i seguenti passaggi.

Tramite AWS CLI

1.    Utilizza la console IAM per individuare l'ARN del ruolo di servizio QuickSight.

2.    Utilizza la console Amazon S3 per trovare l'ARN della chiave AWS KMS.
        Vai al bucket che contiene il tuo file di dati.
        Scegli la scheda Overview (Panoramica) e individua il valore KMS key ID (ID chiave KMS).

3.    Aggiungi l'ARN del ruolo di servizio QuickSight alla policy della chiave KMS.

4.    Esegui il comando create-grant di AWS CLI:

aws kms create-grant --key-id aws_kms_key_arn --grantee-principal quicksight_role_arn --operations Decrypt

Nota: sostituisci aws_kms_key_arn con l'ARN della tua chiave AWS KMS e quicksight_role_arn con l'ARN del tuo ruolo di servizio QuickSight.

Utilizzo della console AWS KMS

Per aggiungere il ruolo di servizio QuickSight alla policy della chiave AWS KMS, segui le istruzioni riportate in Come modificare una policy della chiave. Quindi, modifica la policy della chiave aggiungendo la seguente policy di autorizzazione:

{
     "Sid": "Allow use of the key",
     "Effect": "Allow",
     "Principal": {
         "AWS": [
              "arn:aws:iam::aws-account-id:role/service-role/aws-quicksight-service-role-v0",
              "arn:aws:iam::aws-account-id:role/service-role/aws-quicksight-s3-consumers-role-v0"
              ]
         },
         "Action": [
            "kms:Decrypt"
               ],
         "Resource": "*"
}

Nota: sostituisci aws_account_id con l'ID del tuo account AWS.

Non disponi della policy di autorizzazione IAM necessaria in assegnazione

Puoi ricevere un errore di Accesso negato anche nel caso in cui non ti sia stata assegnata la policy di autorizzazione IAM necessaria. Per verificare quali policy ti sono state assegnate, attieniti alla seguente procedura:

  1. Apri la console Amazon QuickSight.
  2. Scegli Manage QuickSight (Gestisci QuickSight).
  3. Scegli Security & Permissions (Sicurezza e autorizzazioni).
  4. Scegli IAM policy assignments (Assegnazioni della policy IAM).
  5. Verifica se sono presenti assegnazioni di policy IAM per accedere ad Athena.
  6. Verifica che la policy non limiti il tuo accesso a S3 o ad Athena.

Se esiste una policy che limita l'accesso a S3 o ad Athena, chiedi all'amministratore di QuickSight di modificare la policy. Se sei l'amministratore, disattiva l'assegnazione della policy IAM e modifica la policy per includere le autorizzazioni per S3 e Athena. Per ulteriori informazioni, consulta la sezione Impostazione dell'accesso granulare ai servizi AWS tramite IAM.

Il bucket S3 non esiste. Oppure, il ruolo IAM utilizzato per interrogare i dati non dispone delle autorizzazioni S3 richieste

Viene visualizzato il seguente errore:

Unable to verify/create output bucket

Per risolvere l'errore precedente, consulta la sezione In che modo posso risolvere l'errore "Unable to verify/create output bucket" ("Impossibile verificare/creare bucket di output") su Amazon Athena?

Se il bucket non esiste, aggiungi il bucket S3 valido. Dalla console Amazon QuickSight, seleziona Amazon S3 dall'elenco dei servizi AWS. Quindi, seleziona il bucket S3 utilizzato per la posizione dei risultati della query.

Non ti sono state assegnate le SCP necessarie

Se utilizzi AWS Organizations, puoi ricevere l'errore Accesso negato se non ti sono state assegnate le policy di controllo dei servizi (SCP) necessarie. Chiedi all'amministratore di AWS Organizations di controllare le impostazioni delle SCP per verificare le autorizzazioni che ti sono state assegnate. Se sei un amministratore di AWS Organizations, consulta la sezione Creazione, aggiornamento ed eliminazione delle policy di controllo dei servizi.

L'utente o il gruppo QuickSight non dispone delle autorizzazioni Lake Formation

Per gli account Athena che utilizzano Lake Formation, potresti ricevere il seguente errore:

An error has been thrown from the AWS Athena client. Insufficient permissions to execute the query. Insufficient Lake Formation permission(s)

Per concedere le autorizzazioni Lake Formation per QuickSight, devi essere un amministratore di Lake Formation.

Completa i seguenti passaggi:

1.    Individua l'ARN dell'utente o del gruppo QuickSight.

Esegui uno dei seguenti comandi di AWS CLI:

describe-user

aws quicksight describe-user  --user-name user_name  --aws-account-id account_id --namespace default

-oppure-

describe-group

aws quicksight describe-group --group-name group_name  --aws-account-id account_id --namespace default

Nota: nei comandi precedenti, sostituisci user_name con il tuo nome utente, group_name con il nome del tuo gruppo e account_id con l'ID del tuo account.

2.    Apri la console Lake Formation.

3.    Scegli Tables (Tabelle).

4.    Scegli Actions (Operazioni), quindi scegli Permissions (Autorizzazioni).

5.    Dall'elenco dei Principali, scegli Grant (Concedi).

6.    In SAML and Amazon QuickSight users and groups (Utenti e gruppi SAML e Amazon QuickSight), inserisci l'ARN dell'utente o del gruppo QuickSight.
        Ad esempio, arn:aws:quicksight:region:accountId:user/namespace/username

7.    Seleziona l'origine dei dati corretta, quindi scegli All tables (Tutte le tabelle). Le autorizzazioni della tabella sono Select (Selezione) e Describe (Descrizione).

8.    Scegli Grant (Concedi).

Dopo avere concesso le autorizzazioni, torna alla console QuickSight per provare a creare nuovamente il set di dati.