¿Cómo soluciono los errores de “acceso denegado” cuando utilizo Athena como origen de datos en QuickSight?

Última actualización: 29/07/2022

Recibo errores de “acceso denegado” cuando intento utilizar Amazon Athena como origen de datos en mi cuenta de Amazon QuickSight. ¿Cómo puedo solucionarlo?

Descripción breve

A continuación, se presentan motivos habituales por los que se producen errores de acceso denegado cuando utiliza Amazon Athena como origen de datos en Amazon QuickSight:

  • Su cuenta de QuickSight carece de los permisos necesarios para acceder al bucket de Amazon Simple Storage Service (Amazon S3).
  • Su archivo de datos se cifra con una clave de AWS Key Management Service (AWS KMS).
  • No tiene asignada la política de permisos de AWS Identity and Access Management (IAM) necesaria.
  • El bucket de Amazon S3 no existe. O bien, el rol de IAM que se utiliza para consultar los datos carece de los permisos de S3 requeridos.
  • No tiene asignadas las políticas de control de servicio (SCP) necesarias. (Para cuentas de QuickSight que utilizan AWS Organizations)
  • Su usuario o grupo de QuickSight carece de los permisos de AWS Lake Formation. (Para cuentas de Athena que utilizan Lake Formation)

Nota: Antes de empezar a solucionar problemas, asegúrese de que puede acceder a sus datos en Athena.

Resolución

Si se producen errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de que utiliza la versión más reciente de AWS CLI.

Su cuenta de QuickSight carece de los permisos necesarios para acceder al bucket de Amazon S3

Recibió un error como este:

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

Para obtener permiso para acceder al bucket de S3, siga estos pasos:

  1. Abra la consola de Amazon QuickSight.
  2. Elija Manage QuickSight (Administrar QuickSight).
  3. Elija Security & Permissions (Seguridad y permisos).
  4. En QuickSight access to AWS Services (Acceso de QuickSight a los servicios de AWS), seleccione Manage (Administrar).
  5. En la lista de servicios de AWS, seleccione Amazon S3.
  6. Elija Select S3 buckets (Seleccionar buckets de S3) y seleccione el bucket de S3 al que desea acceder desde QuickSight.
  7. Elija Write permission for Athena Workgroup (Permiso de escritura para Athena Workgroup) y, a continuación, seleccione Finish (Finalizar).
  8. Elija Save (Guardar).

El archivo de datos se cifró con una clave de AWS KMS

Si el archivo de datos se cifró con una clave de AWS KMS, Amazon S3 puede denegarle el acceso a los datos. Para resolver este problema, conceda a su rol de servicio de QuickSight acceso a la clave de AWS KMS. Siga los siguientes pasos.

Mediante AWS CLI

1.    Utilice la consola de IAM para localizar el ARN del rol de servicio de QuickSight.

2.    Utilice la consola de Amazon S3 para buscar el ARN de la clave de AWS KMS.
        Vaya al bucket que contiene el archivo de datos.
        Elija la pestaña Overview (Información general) y busque KMS key ID (ID de la clave de KMS).

3.    Agregue el ARN del rol de servicio de QuickSight a la política de claves de KMS.

4.    Ejecute el comando create-grant de AWS CLI:

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

Nota: Reemplace aws_kms_key_arn por el ARN de la clave de AWS KMS y quicksight_role_arn por el ARN del rol de servicio de QuickSight.

Mediante la consola de AWS KMS

Para agregar el rol de servicio de QuickSight a la política de claves de AWS KMS, siga las instrucciones de Cómo modificar una política de claves. A continuación, edite la política de claves al agregar la siguiente política de permisos:

{
     "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: Sustituya aws_account_id con el ID de su cuenta de AWS.

No tiene asignada la política de permisos de IAM necesaria

También puede recibir un error de acceso denegado si no tiene asignada la política de permisos de IAM necesaria. Para comprobar qué políticas se le asignaron, siga estos pasos:

  1. Abra la consola de Amazon QuickSight.
  2. Elija Manage QuickSight (Administrar QuickSight).
  3. Elija Security & Permissions (Seguridad y permisos).
  4. Elija IAM policy assignments (Asignaciones de políticas de IAM).
  5. Compruebe si existen asignaciones de políticas de IAM para acceder a Athena.
  6. Verifique que la política no restrinja su acceso a S3 ni a Athena.

En el caso de que exista una política que restrinja su acceso a S3 o Athena, solicítele al administrador de QuickSight que modifique dicha política. Si es el administrador, desactive la asignación de políticas de IAM y modifique la política para incluir los permisos de S3 y Athena. Para obtener más información, consulte Cómo configurar el acceso granular a los servicios de AWS a través de IAM.

El bucket de S3 no existe. O bien, el rol de IAM que se utiliza para consultar los datos carece de los permisos de S3 requeridos

Aparece el siguiente error:

Unable to verify/create output bucket

Para resolver el error anterior, consulte ¿Cómo soluciono el error “Unable to verify/create output bucket” (No se puede verificar o crear el bucket de salida) en Amazon Athena?

Si el bucket no existe, agregue el bucket de S3 válido. En la consola de Amazon QuickSight, seleccione Amazon S3 de la lista de servicios de AWS. A continuación, seleccione el bucket de S3 que se utiliza para la ubicación de los resultados de la consulta.

No tiene asignadas las SCP necesarias

Si utiliza AWS Organizations, es posible que reciba un error de acceso denegado si no tiene asignadas las políticas de control de servicio (SCP) necesarias. Pídale al administrador de AWS Organizations que revise la configuración de SCP para verificar los permisos que se le asignaron. Si es administrador de AWS Organizations, consulte Cómo crear, actualizar y eliminar políticas de control de servicio.

Su usuario o grupo de QuickSight carece de los permisos de Lake Formation

En el caso de las cuentas de Athena que utilizan Lake Formation, es posible que se reciba el siguiente error:

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

A fin de conceder permisos de Lake Formation para QuickSight, debe ser administrador de Lake Formation.

Siga los siguientes pasos:

1.    Busque el ARN de usuario o grupo de QuickSight.

Ejecute uno de los siguientes comandos de AWS CLI:

describe-user

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

De forma alternativa, realice lo siguiente:

describe-group

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

Nota: En los comandos anteriores, reemplace user_name por su nombre de usuario, group_name por el nombre de su grupo y account_id por el ID de su cuenta.

2.    Abra la consola de Lake Formation.

3.    Elija Tables (Tablas).

4.    Elija Actions (Acciones) y, luego, Permissions (Permisos).

5.    En la lista de entidades principales, elija Grant (Conceder).

6.    En SAML and Amazon QuickSight users and groups (Usuarios y grupos de SAML y Amazon QuickSight), introduzca el ARN de usuario o grupo de QuickSight.
        Por ejemplo, arn:aws:quicksight:region:accountId:user/namespace/username

7.    Seleccione el origen de datos correcto y, luego, elija All tables (Todas las tablas). Los permisos de tabla son Select (Seleccionar) y Describe (Describir).

8.    Elija Grant (Conceder).

Después de conceder los permisos, vuelva a la consola de QuickSight para intentar crear el conjunto de datos de nuevo.