Autorización de las operaciones COPY, UNLOAD, CREATE EXTERNAL FUNCTION y CREATE EXTERNAL SCHEMA mediante roles de IAM - Amazon Redshift

Autorización de las operaciones COPY, UNLOAD, CREATE EXTERNAL FUNCTION y CREATE EXTERNAL SCHEMA mediante roles de IAM

Puede utilizar el comando COPY para cargar (o importar) datos en Amazon Redshift y utilizar el comando UNLOAD para descargar (o exportar) datos desde Amazon Redshift. Puede utilizar el comando CREATE EXTERNAL FUNCTION para crear funciones definidas por el usuario que invoquen funciones desde AWS Lambda.

Con Amazon Redshift Spectrum, el comando CREATE EXTERNAL SCHEMA se utiliza para especificar la ubicación del bucket de Amazon S3 que contiene los datos. Cuando ejecute los comandos COPY, UNLOAD o CREATE EXTERNAL SCHEMA, debe proporcionar credenciales de seguridad. Estas credenciales autorizan a su clúster de Amazon Redshift a leer o escribir datos en su lugar de destino o desde él, como un bucket de Amazon S3.

Cuando ejecuta CREATE EXTERNAL FUNCTION, proporciona credenciales de seguridad mediante el parámetro del rol de IAM. Estas credenciales autorizan a su clúster de Amazon Redshift a invocar funciones de Lambda desde AWS Lambda. El método preferido para proporcionar credenciales de seguridad consiste en especificar un rol de AWS Identity and Access Management (IAM). Para COPY y UNLOAD, puede proporcionar credenciales temporales. Para obtener información sobre la creación de un rol de IAM, consulte Autorización a Amazon Redshift para obtener acceso a los servicios de AWS en su nombre.

Los usuarios necesitan acceso programático si desean interactuar con AWS fuera de la AWS Management Console. La forma de conceder el acceso programático depende del tipo de usuario que acceda a AWS.

Para conceder acceso programático a los usuarios, seleccione una de las siguientes opciones.

¿Qué usuario necesita acceso programático? Para Mediante

Identidad del personal

(Usuarios administrados en el IAM Identity Center)

Utilice credenciales temporales para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK y las API de AWS.

Siga las instrucciones de la interfaz que desea utilizar:

IAM Utilice credenciales temporales para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK y las API de AWS. Siguiendo las instrucciones de Uso de credenciales temporales con recursos de AWS de la Guía del usuario de IAM.
IAM

(No recomendado)

Utilizar credenciales a largo plazo para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK o las API de AWS.

Siga las instrucciones de la interfaz que desea utilizar:

Los pasos para utilizar un rol de IAM son los siguientes:

  • Cree un rol de IAM para usar con el clúster de Amazon Redshift.

  • Asocie el rol de IAM al clúster.

  • Incluya el ARN del rol de IAM cuando llame al comando COPY, UNLOAD, CREATE EXTERNAL SCHEMA o CREATE EXTERNAL FUNCTION.

En este tema, aprenderá a asociar un rol de IAM con un clúster de Amazon Redshift.

Asociación de roles de IAM a los clústeres

Cuando haya creado un rol de IAM que autorice a Amazon Redshift a acceder a otros servicios de AWS en su nombre, debe asociar ese rol con un clúster de Amazon Redshift. Debe hacerlo para poder utilizar el rol para cargar o descargar datos.

Permisos requeridos para asociar un rol de IAM a un clúster

Para asociar un rol de IAM a un clúster, un usuario de IAM debe disponer del permiso iam:PassRole para dicho rol de IAM. Este permiso permite que un administrador pueda restringir los roles de IAM que un usuario puede asociar a clústeres de Amazon Redshift. Como práctica recomendada, aconsejamos asociar las políticas de permisos a un rol de IAM y luego asignarlo a los usuarios y grupos según sea necesario. Para obtener más información, consulte Administración de identidades y accesos en Amazon Redshift.

En el siguiente ejemplo se muestra una política de IAM que se puede asociar a un usuario y que le permite realizar estas acciones:

  • obtener los detalles de todos los clústeres de Amazon Redshift que pertenecen a esa cuenta de usuario

  • asociar cualquiera de los tres roles de IAM a uno de los dos clústeres de Amazon Redshift

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "redshift:DescribeClusters", "Resource": "*" }, { "Effect": "Allow", "Action": [ "redshift:ModifyClusterIamRoles", "redshift:CreateCluster" ], "Resource": [ "arn:aws:redshift:us-east-1:123456789012:cluster:my-redshift-cluster", "arn:aws:redshift:us-east-1:123456789012:cluster:my-second-redshift-cluster" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::123456789012:role/MyRedshiftRole", "arn:aws:iam::123456789012:role/SecondRedshiftRole", "arn:aws:iam::123456789012:role/ThirdRedshiftRole" ] } ] }

Una vez que un usuario tenga los permisos adecuados, ese usuario puede asociar un rol de IAM con un clúster de Amazon Redshift. El rol de IAM estará listo entonces para su uso con el comando COPY u UNLOAD u otros comandos de Amazon Redshift.

Para obtener más información acerca de las políticas de IAM, consulte Información general de las políticas de IAM en la Guía del usuario de IAM.

Administración de la asociación de roles de IAM a un clúster

Puede asociar un rol de IAM con un clúster de Amazon Redshift cuando cree el clúster. O puede modificar un clúster existente y agregar o eliminar una o más asociaciones a roles de IAM.

Tenga en cuenta lo siguiente:

  • El número máximo de roles de IAM que puede asociar está sujeto a una cuota.

  • Puede asociar un rol de IAM a varios clústeres de Amazon Redshift.

  • Puede asociar un rol de IAM a un clúster de Amazon Redshift solo si el rol de IAM y el clúster son propiedad de la misma cuenta de AWS.

Uso de la consola para administrar las asociaciones de roles de IAM

Puede administrar las asociaciones de roles de IAM a un clúster con la consola mediante el siguiente procedimiento.

Para administrar las asociaciones a roles de IAM
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon Redshift en https://console.aws.amazon.com/redshiftv2/.

  2. En el menú de navegación, elija Clusters (Clústeres) y, a continuación, elija el clúster que desea actualizar.

  3. En Actions (Acciones), seleccione Administrar roles de IAM para mostrar la lista actual de roles de IAM asociados al clúster.

  4. En la página Manage IAM roles (Administrar roles de IAM), seleccione los roles de IAM disponibles que desea agregar y luego seleccione Add IAM role (Agregar rol de IAM).

  5. Seleccione Done (Aceptar) para guardar los cambios.

Uso de la AWS CLI para administrar las asociaciones de roles de IAM

Puede administrar las asociaciones de roles de IAM a un clúster con la AWS CLI a través de los siguientes métodos.

Asociación de un rol de IAM a un clúster mediante la AWS CLI

Para asociar un rol de IAM a un clúster cuando se crea el clúster, especifique el nombre de recurso de Amazon (ARN) del rol de IAM para el parámetro --iam-role-arns del comando create-cluster. El número máximo de roles de IAM que puede agregar cuando llama al comando create-cluster está sujeto a una cuota.

La asociación y la desvinculación de roles de IAM a clústeres de Amazon Redshift es un proceso asíncrono. Llame al comando describe-clusters para obtener el estado de todas las asociaciones de roles de IAM a su clúster.

En el siguiente ejemplo, se asocian dos roles de IAM al clúster recién creado con el nombre my-redshift-cluster.

aws redshift create-cluster \ --cluster-identifier "my-redshift-cluster" \ --node-type "ra3.4xlarge" \ --number-of-nodes 16 \ --iam-role-arns "arn:aws:iam::123456789012:role/RedshiftCopyUnload" \ "arn:aws:iam::123456789012:role/SecondRedshiftRole"

Para asociar un rol de IAM a un clúster de Amazon Redshift existente, especifique el nombre de recurso de Amazon (ARN) del rol de IAM para el parámetro --add-iam-roles del comando modify-cluster-iam-roles. El número máximo de roles de IAM que puede agregar cuando llama al comando modify-cluster-iam-roles está sujeto a una cuota.

En el siguiente ejemplo, se asocia un rol de IAM a un clúster existente con el nombre my-redshift-cluster.

aws redshift modify-cluster-iam-roles \ --cluster-identifier "my-redshift-cluster" \ --add-iam-roles "arn:aws:iam::123456789012:role/RedshiftCopyUnload"
Desvinculación de un rol de IAM de un clúster mediante la AWS CLI

Para desvincular un rol de IAM de un clúster, especifique el ARN del rol de IAM para el parámetro --remove-iam-roles del comando modify-cluster-iam-roles. modify-cluster-iam-roles El número máximo de roles de IAM que puede eliminar cuando llama al comando modify-cluster-iam-roles está sujeto a una cuota.

En el siguiente ejemplo, se quita la asociación de un rol de IAM para la cuenta 123456789012 de AWS de un clúster denominado my-redshift-cluster.

aws redshift modify-cluster-iam-roles \ --cluster-identifier "my-redshift-cluster" \ --remove-iam-roles "arn:aws:iam::123456789012:role/RedshiftCopyUnload"
Descripción de asociaciones de roles de IAM a un clúster mediante la AWS CLI

Para obtener una lista de todos los roles de IAM que están asociados a un clúster de Amazon Redshift y los estados de la asociación de los roles de IAM, llame al comando describe-clusters. El ARN de cada rol de IAM asociado al clúster se devuelve en la lista IamRoles como se muestra en el siguiente resultado de ejemplo.

Los roles que se asociaron al clúster muestran un estado de in-sync. Los roles que se encuentran en el proceso de asociación al clúster muestran un estado de adding. Los roles que se están desvinculando del clúster muestran un estado de removing.

{ "Clusters": [ { "ClusterIdentifier": "my-redshift-cluster", "NodeType": "ra3.4xlarge", "NumberOfNodes": 16, "IamRoles": [ { "IamRoleArn": "arn:aws:iam::123456789012:role/MyRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/SecondRedshiftRole", "IamRoleApplyStatus": "in-sync" } ], ... }, { "ClusterIdentifier": "my-second-redshift-cluster", "NodeType": "ra3.4xlarge", "NumberOfNodes": 10, "IamRoles": [ { "IamRoleArn": "arn:aws:iam::123456789012:role/MyRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/SecondRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/ThirdRedshiftRole", "IamRoleApplyStatus": "in-sync" } ], ... } ] }

Para obtener más información acerca de cómo usar AWS CLI, consulte la Guía del usuario de AWS CLI.