Configuración del acceso a un bucket de Amazon S3 - Amazon Relational Database Service

Configuración del acceso a un bucket de Amazon S3

Para exportar datos a Amazon S3, conceda permiso a la instancia de base de datos de PostgreSQL para acceder al bucket de Amazon S3 al que irán los archivos.

Para ello, siga el procedimiento que se indica a continuación.

Para proporcionar a la instancia de base de datos de PostgreSQL acceso a Amazon S3 a través de un rol de IAM
  1. Cree una política de IAM.

    Esta política concede los permisos de bucket y objeto que permiten a la instancia de base de datos de PostgreSQL acceder a Amazon S3.

    Como parte de la creación de esta política, realice los siguientes pasos:

    1. Incluya las siguientes acciones necesarias en la política para permitir la transferencia de archivos de la instancia de base de datos de PostgreSQL a un bucket de Amazon S3:

      • s3:PutObject

      • s3:AbortMultipartUpload

    2. Incluye el nombre de recurso de Amazon (ARN) que identifica el bucket de Amazon S3 y los objetos del bucket. El formato del ARN para acceder a Amazon S3 es: arn:aws:s3:::amzn-s3-demo-bucket/*

    Para obtener información adicional sobre cómo crear una política de IAM para Amazon RDS for PostgreSQL, consulte Creación y uso de una política de IAM para el acceso a bases de datos de IAM. Consulte también el Tutorial: Crear y asociar su primera política administrada por el cliente en la Guía del usuario de IAM.

    El siguiente comando de la AWS CLI crea una política de IAM denominada rds-s3-export-policy con estas opciones. Otorga acceso a un bucket denominado amzn-s3-demo-bucket.

    aviso

    Le recomendamos que configure la base de datos en una VPC privada que tenga políticas de punto de enlace configuradas para acceder a buckets específicos. Para obtener más información, consulte Uso de políticas de punto de enlace para Amazon S3 en la Guía del usuario de Amazon VPC.

    Recomendamos encarecidamente que no cree una política con acceso a todos los recursos. Este acceso puede representar una amenaza para la seguridad de los datos. Si crea una política que da acceso S3:PutObject a todos los recursos mediante "Resource":"*", un usuario con privilegios de exportación puede exportar datos a todos los buckets de su cuenta. Además, el usuario puede exportar datos a cualquier bucket en el que se pueda escribir públicamente dentro de su región de AWS.

    Después de crear la política, anote el nombre de recurso de Amazon (ARN) de la política. Cuando asocia la política a un rol de IAM, necesita el ARN para realizar un paso posterior.

    aws iam create-policy --policy-name rds-s3-export-policy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3export", "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation", "s3:AbortMultipartUpload" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }'
  2. Cree un rol de IAM.

    Realiza este paso para que Amazon RDS pueda asumir este rol de IAM en su nombre para obtener acceso a los buckets de Amazon S3. Para obtener más información, consulte Creación de un rol para delegar permisos a un usuario de IAM en la Guía del usuario de IAM.

    Le recomendamos que utilice las claves de contexto de condición globales de aws:SourceArn y aws:SourceAccount en las políticas basadas en recursos para limitar los permisos del servicio a un recurso específico. Esta es la forma más eficaz de protegerse contra el problema del suplente confuso.

    Si utiliza claves de contexto de condición globales y el valor aws:SourceArn contiene el ID de cuenta, el valor aws:SourceAccount y la cuenta en el valor aws:SourceArn deben utilizar el mismo ID de cuenta cuando se utiliza en la misma instrucción de política.

    • Use aws:SourceArn si quiere acceso entre servicios para un único recurso.

    • Use aws:SourceAccount si quiere permitir que cualquier recurso de esa cuenta se asocie al uso entre servicios.

    En la política, asegúrese de utilizar la clave de contexto de condición global aws:SourceArn con el ARN completo del recurso. En el siguiente ejemplo se muestra cómo se usa el comando de la AWS CLI para crear un rol denominado rds-s3-export-role.

    ejemplo

    Para Linux, macOS o:Unix

    aws iam create-role \ --role-name rds-s3-export-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:db:dbname" } } } ] }'

    En:Windows

    aws iam create-role ^ --role-name rds-s3-export-role ^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:db:dbname" } } } ] }'
  3. Asocie la política de IAM que creó al rol de IAM creado.

    El siguiente comando de la AWS CLI asocia la política creada anteriormente al rol denominado rds-s3-export-role.. Sustituya your-policy-arn por el ARN de la política que ha anotado en un paso anterior.

    aws iam attach-role-policy --policy-arn your-policy-arn --role-name rds-s3-export-role
  4. Añada el rol de IAM a la instancia de base de datos. Para ello, utilice la AWS Management Console o la AWS CLI, tal y como se describe a continuación.

Para añadir un rol de IAM para una instancia de base de datos de PostgreSQL utilizando la consola
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. Seleccione el nombre de instancia de base de datos de PostgreSQL para mostrar sus detalles.

  3. En la pestaña Connectivity & security (Conectividad y seguridad), en la sección Manage IAM roles (Administrar roles de IAM), elija el rol que desee añadir en Add IAM roles to this instance (Añadir roles de IAM a esta instancia).

  4. En Feature (Característica), elija s3Export.

  5. Seleccione Add role (Añadir rol).

Para añadir un rol de IAM para una instancia de base de datos de PostgreSQL utilizando la CLI
  • Utilice el siguiente comando para añadir el rol a la instancia de base de datos de PostgreSQL denominada my-db-instance. Sustituya your-role-arn por el ARN del rol que ha anotado en el paso anterior. Utilice s3Export para el valor de la opción --feature-name.

    ejemplo

    Para Linux, macOS o:Unix

    aws rds add-role-to-db-instance \ --db-instance-identifier my-db-instance \ --feature-name s3Export \ --role-arn your-role-arn \ --region your-region

    En:Windows

    aws rds add-role-to-db-instance ^ --db-instance-identifier my-db-instance ^ --feature-name s3Export ^ --role-arn your-role-arn ^ --region your-region