Ejecuta consultas como función de IAM en Amazon QuickSight - Amazon QuickSight

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejecuta consultas como función de IAM en Amazon QuickSight

Ahora puede mejorar la seguridad de los datos mediante políticas de acceso detalladas en lugar de permisos más amplios para los orígenes de datos conectados a Amazon Athena, Amazon Redshift o Amazon S3. Comience por crear un rol de AWS Identity and Access Management (IAM) con permisos que se activarán cuando una persona o una API inicie una consulta. A continuación, un QuickSight administrador o desarrollador de Amazon asigna el rol de IAM a una fuente de datos de Athena o Amazon S3. Una vez establecido el rol, cualquier persona o API que ejecute la consulta dispondrá de los permisos exactos necesarios para ejecutarla.

Estos son algunos aspectos que debe tener en cuenta antes de comprometerse a implementar roles Ejecutar como para mejorar la seguridad de los datos:

  • Explique cómo la seguridad adicional funciona a su favor.

  • Hable con su QuickSight administrador para saber si añadir funciones a las fuentes de datos le ayuda a cumplir mejor sus objetivos o requisitos de seguridad.

  • Pregúntese si su equipo puede documentar y mantener este tipo de seguridad, teniendo en cuenta la cantidad de orígenes de datos y personas y aplicaciones involucradas. Si no es así, ¿quién se encargará de esa parte del trabajo?

  • En una organización estructurada, ubique a las partes interesadas en equipos paralelos de Operaciones, Desarrollo y Soporte de TI. Solicite su experiencia, consejos y disposición para que respalden su plan.

  • Antes de lanzar su proyecto, considere la posibilidad de realizar una prueba de concepto en la que participen las personas que necesitan acceder a los datos.

Las siguientes reglas se aplican al uso de roles Ejecutar como con Athena, Amazon Redshift y Amazon S3:

  • Cada fuente de datos solo puede tener asociada una RoleArn. Los consumidores del origen de datos, que suelen acceder a conjuntos de datos y elementos visuales, pueden generar muchos tipos diferentes de consultas. El rol establece límites entre las consultas que funcionan y las que no.

  • El ARN debe corresponder a un rol de IAM al Cuenta de AWS igual que la QuickSight instancia que lo usa.

  • El rol de IAM debe tener una relación de confianza que permita QuickSight asumir el rol.

  • La identidad que QuickSight llama a las API debe tener permiso para pasar el rol antes de poder actualizar la RoleArn propiedad. Solo necesita pasar el rol al crear o actualizar el ARN del rol. Los permisos no se vuelven a evaluar más adelante. Del mismo modo, el permiso no es necesario cuando se omite el ARN del rol.

  • Si se omite el ARN del rol, el origen de datos de Athena o Amazon S3 utiliza el rol de toda la cuenta y las políticas de reducción del alcance.

  • Cuando el ARN del rol está presente, se ignora el rol de toda la cuenta y cualquier política de reducción del alcance. En el caso de los orígenes de datos de Athena, no se ignoran los permisos de Lake Formation.

  • En el caso de los orígenes de datos de Amazon S3, se debe poder acceder tanto al archivo de manifiesto como a los datos especificados en el archivo de manifiesto mediante el rol de IAM.

  • La cadena ARN debe coincidir con una función de IAM existente en el Región de AWS lugar donde se encuentran Cuenta de AWS y se consultan los datos.

Cuando se QuickSight conecta a otro servicio AWS, utiliza una función de IAM. De forma predeterminada, esta versión menos detallada de la función la crea QuickSight para cada servicio que utiliza y los Cuenta de AWS administradores administran la función. Al agregar un ARN de rol de IAM con una política de permisos personalizada, se anula el rol más amplio de los orígenes de datos que necesitan protección adicional. Para obtener más información acerca de las políticas, consulte Creación de políticas administradas por el cliente en la Guía del usuario de IAM.

Ejecución de consultas con orígenes de datos de Athena

Utilice la API para adjuntar el ARN al origen de datos de Athena. Para ello, añada el rol ARN a la RoleArnpropiedad de. AthenaParameters Para verificarlo, puede ver el ARN del rol en el cuadro de diálogo Editar origen de datos de Athena. Sin embargo, el ARN del rol es un campo de solo lectura.

Ventana emergente Editar origen de datos de Athena que muestra el ARN del rol.

Para empezar, necesita un rol de IAM personalizado, como demostramos en el siguiente ejemplo.

Tenga en cuenta que el siguiente ejemplo de código es solo para fines de aprendizaje. Utilice este ejemplo únicamente en un entorno temporal de desarrollo y pruebas, y no en un entorno de producción. La política de este ejemplo no protege ningún recurso específico, que debe estar en una política desplegable. Además, incluso para el desarrollo, debe agregar la información de su propia cuenta. AWS

Los siguientes comandos crean un nuevo rol simple y adjuntan algunas políticas que le otorgan permisos QuickSight.

aws iam create-role \ --role-name TestAthenaRoleForQuickSight \ --description "Test Athena Role For QuickSight" \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "quicksight.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

Una vez que haya identificado o creado un rol de IAM para usarlo con cada fuente de datos, adjunte las políticas mediante el attach-role-policy.

aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::222222222222:policy/service-role/AWSQuickSightS3Policy1 aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSQuicksightAthenaAccess1 aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::aws:policy/AmazonS3Access1

Después de verificar sus permisos, puede usar la función en las fuentes de QuickSight datos creando una nueva función o actualizando una función existente. Cuando utilice estos comandos, actualice el Cuenta de AWS ID Región de AWS para que coincida con el suyo.

Recuerde que estos fragmentos de código de ejemplo no son para entornos de producción. AWS recomienda encarecidamente que identifique y utilice un conjunto de políticas de privilegios mínimos para sus casos de producción.

aws quicksight create-data-source --aws-account-id 222222222222 \ --region us-east-1 \ --data-source-id "athena-with-custom-role" \ --cli-input-json '{ "Name": "Athena with a custom Role", "Type": "ATHENA", "data sourceParameters": { "AthenaParameters": { "RoleArn": "arn:aws:iam::222222222222:role/TestAthenaRoleForQuickSight" } } }'

Ejecución de consultas con orígenes de datos de Amazon Redshift

Conecte los datos de Amazon Redshift con el rol Ejecutar como para mejorar la seguridad de los datos con políticas de acceso detalladas. Puede crear un rol Ejecutar como para los orígenes de datos de Amazon Redshift que utilizan una red pública o una conexión de VPC. Especifique el tipo de conexión que desee utilizar en el cuadro de diálogo Editar origen de datos de Amazon Redshift. La función run-as no es compatible con las fuentes de datos de Amazon Redshift Serverless.

La imagen siguiente muestra un origen de datos de Amazon Redshift que utiliza el tipo de conexión Red pública.

Ventana emergente Editar origen de datos de Amazon S3 que muestra el tipo de conexión.

Para empezar, necesita un rol de IAM personalizado, como demostramos en el siguiente ejemplo. Los siguientes comandos crean un ejemplo de rol nuevo y adjuntan políticas que le otorgan permisos. QuickSight

aws iam create-role \ --role-name TestRedshiftRoleForQuickSight \ --description "Test Redshift Role For QuickSight" \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "quicksight.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

Después de identificar o crear un rol de IAM para usarlo con cada origen de datos, adjunte las políticas a una política attach-role-policy. Si el redshift:GetClusterCredentialsWithIAM permiso está asociado al rol que desea usar, los valores de DatabaseUser y DatabaseGroups son opcionales.

aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/service-role/AWSQuickSightRedshiftPolicy aws iam create-policy --policy-name RedshiftGetClusterCredentialsPolicy1 \ --policy-document file://redshift-get-cluster-credentials-policy.json aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/RedshiftGetClusterCredentialsPolicy1 // redshift-get-cluster-credentials-policy.json { "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftGetClusterCredentialsPolicy", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials" ], "Resource": [ "*" ] } ] }

El ejemplo anterior crea una fuente de datos que utiliza los parámetros RoleARNDatabaseUser, e DatabaseGroups IAM. Si desea establecer la conexión únicamente a través del RoleARN parámetro IAM, adjunte el redshift:GetClusterCredentialsWithIAM permiso a su función, tal y como se muestra en el ejemplo siguiente.

aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/RedshiftGetClusterCredentialsPolicy1 // redshift-get-cluster-credentials-policy.json { "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftGetClusterCredentialsPolicy", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentialsWithIAM" ], "Resource": [ "*" ] } ] }"

Después de verificar sus permisos, puede usar el rol en las fuentes de QuickSight datos creando un rol nuevo o actualizando uno existente. Cuando utilices estos comandos, actualiza el ID de AWS cuenta y la AWS región para que coincidan con los tuyos.

aws quicksight create-data-source \ --region us-west-2 \ --endpoint https://quicksight.us-west-2.quicksight.aws.com/ \ --cli-input-json file://redshift-data-source-iam.json \ redshift-data-source-iam.json is shown as below { "AwsAccountId": "AWSACCOUNTID", "DataSourceId": "DATSOURCEID", "Name": "Test redshift demo iam", "Type": "REDSHIFT", "DataSourceParameters": { "RedshiftParameters": { "Database": "integ", "Host": "redshiftdemocluster.us-west-2.redshift.amazonaws.com", "Port": 8192, "ClusterId": "redshiftdemocluster", "IAMParameters": { "RoleArn": "arn:aws:iam::222222222222:role/TestRedshiftRoleForQuickSight", "DatabaseUser": "user", "DatabaseGroups": ["admin_group", "guest_group", "guest_group_1"] } } }, "Permissions": [ { "Principal": "arn:aws:quicksight:us-east-1:AWSACCOUNTID:user/default/demoname", "Actions": [ "quicksight:DescribeDataSource", "quicksight:DescribeDataSourcePermissions", "quicksight:PassDataSource", "quicksight:UpdateDataSource", "quicksight:DeleteDataSource", "quicksight:UpdateDataSourcePermissions" ] } ] }

Si el origen de datos utiliza el tipo de conexión de VPC, utilice la siguiente configuración de VPC.

{ "AwsAccountId": "AWSACCOUNTID", "DataSourceId": "DATSOURCEID", "Name": "Test redshift demo iam vpc", "Type": "REDSHIFT", "DataSourceParameters": { "RedshiftParameters": { "Database": "mydb", "Host": "vpcdemo.us-west-2.redshift.amazonaws.com", "Port": 8192, "ClusterId": "vpcdemo", "IAMParameters": { "RoleArn": "arn:aws:iam::222222222222:role/TestRedshiftRoleForQuickSight", "DatabaseUser": "user", "AutoCreateDatabaseUser": true } } }, "VpcConnectionProperties": { "VpcConnectionArn": "arn:aws:quicksight:us-west-2:222222222222:vpcConnection/VPC Name" }, "Permissions": [ { "Principal": "arn:aws:quicksight:us-east-1:222222222222:user/default/demoname", "Actions": [ "quicksight:DescribeDataSource", "quicksight:DescribeDataSourcePermissions", "quicksight:PassDataSource", "quicksight:UpdateDataSource", "quicksight:DeleteDataSource", "quicksight:UpdateDataSourcePermissions" ] } ] }

Si la fuente de datos utiliza el redshift:GetClusterCredentialsWithIAM permiso y no DatabaseGroups los parámetros DatabaseUser o, conceda al rol acceso a algunas o a todas las tablas del esquema. Para comprobar si un rol tiene SELECT permisos para una tabla específica, introduzca el siguiente comando en el editor de consultas de Amazon Redshift.

SELECT u.usename, t.schemaname||'.'||t.tablename, has_table_privilege(u.usename,t.tablename,'select') AS user_has_select_permission FROM pg_user u CROSS JOIN pg_tables t WHERE u.usename = 'IAMR:RoleName' AND t.tablename = tableName

Para obtener más información sobre la SELECT acción en el editor de consultas de Amazon Redshift, consulte SELECT.

Para conceder SELECT permisos al rol, introduzca el siguiente comando en el editor de consultas de Amazon Redshift.

GRANT SELECT ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO "IAMR:Rolename";

Para obtener más información sobre la GRANT acción en el editor de consultas de Amazon Redshift, consulte GRANT.

Ejecución de consultas con orígenes de datos de Amazon S3

Las fuentes de datos de Amazon S3 contienen un archivo de manifiesto que se QuickSight utiliza para buscar y analizar sus datos. Puede cargar un archivo de manifiesto JSON a través de la QuickSight consola o puede proporcionar una URL que apunte a un archivo JSON de un bucket de S3. Si decide proporcionar una URL, se le QuickSight debe conceder permiso para acceder al archivo en Amazon S3. Utilice la consola de QuickSight administración para controlar el acceso al archivo de manifiesto y a los datos a los que hace referencia.

Con RoleArnesta propiedad, puedes conceder acceso al archivo de manifiesto y a los datos a los que hace referencia mediante una función de IAM personalizada que anula la función de toda la cuenta. Utilice la API para adjuntar el ARN al archivo de manifiesto del origen de datos de Amazon S3. Para ello, incluya el rol ARN en la RoleArnpropiedad de S3Parameters. Para verificarlo, puede ver el ARN del rol en el cuadro de diálogo Editar origen de datos de S3. Sin embargo, el ARN del rol es un campo de solo lectura, tal y como se muestra en la captura de pantalla a continuación.

Ventana emergente Editar origen de datos de Amazon S3 que muestra el ARN del rol.

Para empezar, cree un archivo de manifiesto de Amazon S3. A continuación, puede subirlo a Amazon QuickSight cuando cree un nuevo conjunto de datos de Amazon S3 o colocar el archivo en el bucket de Amazon S3 que contiene sus archivos de datos. Consulte el siguiente ejemplo para ver el aspecto que tendría un archivo de manifiesto:

{ "fileLocations": [ { "URIPrefixes": [ "s3://quicksightUser-run-as-role/data/" ] } ], "globalUploadSettings": { "format": "CSV", "delimiter": ",", "textqualifier": "'", "containsHeader": "true" } }

Para obtener instrucciones acerca de cómo crear un manifiesto, consulte Formatos compatibles con los archivos de manifiesto de Amazon S3.

Una vez que haya creado un archivo de manifiesto y lo haya añadido a su bucket de Amazon S3 o lo haya cargado en él QuickSight, cree o actualice un rol existente en IAM que conceda s3:GetObject acceso. El siguiente ejemplo ilustra cómo actualizar un rol de IAM existente con la AWS API:

aws iam put-role-policy \ --role-name QuickSightAccessToS3RunAsRoleBucket \ --policy-name GrantS3RunAsRoleAccess \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::s3-bucket-name" }, { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::s3-bucket-name/manifest.json" }, { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::s3-bucket-name/*" } ] }'

Una vez que su política le conceda el acceso s3:GetObject, puede empezar a crear orígenes de datos que apliquen la actualización de put-role-policy al archivo de manifiesto del origen de datos de Amazon S3.

aws quicksight create-data-source --aws-account-id 111222333444 --region us-west-2 --endpoint https://quicksight.us-west-2.quicksight.aws.com/ \ --data-source-id "s3-run-as-role-demo-source" \ --cli-input-json '{ "Name": "S3 with a custom Role", "Type": "S3", "DataSourceParameters": { "S3Parameters": { "RoleArn": "arn:aws:iam::111222333444:role/QuickSightAccessRunAsRoleBucket", "ManifestFileLocation": { "Bucket": "s3-bucket-name", "Key": "manifest.json" } } } }'

Después de verificar sus permisos, puede usar el rol en las fuentes de QuickSight datos, ya sea creando un rol nuevo o actualizando uno existente. Cuando utilice estos comandos, asegúrese de actualizar el Cuenta de AWS ID Región de AWS para que coincida con el suyo.