View a markdown version of this page

Permisos para acceder a otros recursos de AWS - Amazon Redshift

Amazon Redshift dejará de admitir la creación de UDF de Python después del 30 de junio de 2026. Empezaremos a aplicarlo por fases. Para obtener más información sobre los detalles del fin de vida de Python y las opciones de migración, consulte la entrada del blog que se publicó el 30 de junio de 2025.

Permisos para acceder a otros recursos de AWS

Para trasladar datos entre el clúster y otro recurso de AWS, como Amazon S3, Amazon DynamoDB, Amazon EMR o Amazon EC2, el clúster debe tener permiso para acceder al recurso y realizar las acciones necesarias. Por ejemplo, para cargar datos de Amazon S3, COPY debe tener acceso LIST para el bucket y acceso GET para los objetos del bucket. Para obtener información acerca de los permisos mínimos, consulte Permisos de IAM para COPY, UNLOAD y CREATE LIBRARY.

Para obtener la autorización para acceder al recurso, el clúster debe estar autenticado con el siguiente método de autenticación:

  • Control de acceso con base en roles: en el caso del control de acceso basado en roles, se especifica un rol de AWS Identity and Access Management (IAM) que el clúster utiliza para la autenticación y la autorización. Para salvaguardar las credenciales de AWS y la información confidencial, le recomendamos encarecidamente utilizar una autenticación basada en roles.

Control de acceso con base en roles

Con el control de acceso basado en roles, el clúster adopta de forma temporal un rol de IAM en su nombre. Luego, en función de las autorizaciones que se otorgaron al rol, su clúster puede acceder a los recursos de AWS requeridos.

La creación de un rol de IAM es similar a la concesión de permisos a un usuario, en el sentido de que se trata de una identidad de AWS con políticas de permisos que determinan lo que la identidad puede y no puede hacer en AWS. No obstante, en lugar de asociarse exclusivamente a un usuario, cualquier entidad puede asumir un rol cuando lo necesite. Además, un rol no tiene ninguna credencial (una contraseña o claves de acceso) asociada a él. En cambio, si se asocia un rol a un clúster, se crean de forma dinámica claves de acceso y se proporcionan al clúster.

Recomendamos el uso de control de acceso basado en roles porque ofrece un control más preciso y seguro del acceso a los recursos de AWS y a la información confidencial de los usuarios, además de salvaguardar las credenciales de AWS.

La autenticación basada en roles brinda los siguientes beneficios:

  • Puede utilizar las herramientas de IAM estándar de AWS para definir un rol de IAM y asociarlo a varios clústeres. Cuando se modifica una política de acceso de un rol, los cambios se aplican automáticamente a todos los clústeres que utilicen ese rol.

  • Puede definir políticas de IAM pormenorizadas que concedan permisos para que clústeres y usuarios de bases de datos específicos puedan acceder a determinadas acciones y recursos de AWS.

  • El clúster obtiene credenciales de sesión temporales en tiempo de ejecución y actualiza las credenciales según se necesite hasta que se complete la operación.

  • El ID de clave de acceso y el ID de clave de acceso secreta no se almacenan ni se transmiten en el código SQL.

Para utilizar el control de acceso basado en roles, primero debe crear un rol de IAM mediante el tipo de función del servicio de Amazon Redshift y, luego, debe adjuntarlo al clúster. Como mínimo, el rol debe tener los permisos especificados en Permisos de IAM para COPY, UNLOAD y CREATE LIBRARY. Para conocer los pasos que se deben realizar para crear un rol de IAM y adjuntarlo a un clúster, consulte Autorización a Amazon Redshift para acceder a otros servicios de AWS en su nombre en la Guía de administración de Amazon Redshift.

Puede agregar un rol a un clúster o ver los roles asociados a un clúster mediante la consola de administración, la CLI o la API de Amazon Redshift. Para obtener más información, consulte Asociación de un rol de IAM a un clúster en la Guía de administración de Amazon Redshift.

Al crear un rol de IAM, IAM devuelve el Amazon Resource Name (ARN, Nombre de recurso de Amazon) del rol. Para especificar un rol de IAM, proporcione el ARN del rol con el parámetro Uso del parámetro IAM_ROLE.

Por ejemplo, suponga que se asocia el siguiente rol al clúster.

"IamRoleArn": "arn:aws:iam::0123456789012:role/MyRedshiftRole"

En el siguiente ejemplo, el comando COPY utiliza el parámetro IAM_ROLE con el ARN del ejemplo anterior para la autenticación y el acceso a Amazon S3.

copy customer from 's3://amzn-s3-demo-bucket/mydata' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Además, un superusuario puede conceder el privilegio ASSUMEROLE a los usuarios y los grupos de bases de datos con objeto de proporcionar acceso a un rol para las operaciones COPY. Para obtener más información, consulte GRANT.

Credenciales de seguridad temporales

Cuando usa un control de acceso basado en roles, Amazon Redshift usa de forma automática, en su nombre, credenciales de seguridad temporales. Las credenciales de seguridad temporales proporcionan más seguridad debido a su breve vigencia y al hecho de que no se pueden reutilizar cuando vencen.

Cuando autoriza el uso de un rol de IAM, el clúster asume temporalmente el rol y obtiene credenciales de sesión temporales en el momento de la ejecución. El clúster actualiza estas credenciales según sea necesario hasta que se complete la operación, por lo que no es necesario que las proporcione ni las administre usted mismo. Para obtener más información, consulte Control de acceso con base en roles.

Permisos de IAM para COPY, UNLOAD y CREATE LIBRARY

El rol de IAM indicado por el parámetro IAM_ROLE debe tener, como mínimo, los siguientes permisos:

  • Para utilizar COPY de Amazon S3, debe tener permiso para utilizar LIST sobre el bucket de Amazon S3 y GET sobre los objetos de Amazon S3 que se están cargando y el archivo de manifiesto, si se utiliza alguno.

  • Para utilizar COPY de Amazon S3, Amazon EMR y los alojamientos remotos (SSH) con datos en formato JSON deben tener permiso para utilizar LIST y GET con el archivo JSONPaths de Amazon S3, si se utiliza uno.

  • Para utilizar COPY de DynamoDB, debe tener permiso para utilizar SCAN y DESCRIBE en la tabla de DynamoDB que se está cargando.

  • Para utilizar COPY desde un clúster de Amazon EMR, debe tener permiso para la acción ListInstances en el clúster de Amazon EMR.

  • Para utilizar UNLOAD en Amazon S3, debe tener permisos para usar GET, LIST y PUT sobre el bucket de Amazon S3 en que se están descargando los archivos de datos.

  • Para utilizar CREATE LIBRARY de Amazon S3, debe tener permiso para usar LIST sobre el bucket de Amazon S3 y GET sobre los objetos de Amazon S3 que se están importando.

nota

Si recibe el mensaje de error S3ServiceException: Access Denied cuando ejecuta un comando COPY, UNLOAD o CREATE LIBRARY, el clúster no dispone de los permisos de acceso adecuados para Amazon S3.

Puede administrar los permisos de IAM si asocia una política de IAM a un rol de IAM que esté asociado a su clúster, a un usuario o al grupo al que pertenezca su usuario. Por ejemplo, la política administrada AmazonS3ReadOnlyAccess concede permisos para utilizar LIST y GET sobre los recursos de Amazon S3. Para obtener más información acerca de las políticas de IAM, consulte Administración de las políticas de IAM en la Guía del usuario de IAM.