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
-
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:
-
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
-
-
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 denominadoamzn-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
/*" ] } ] }' -
-
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
yaws: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 valoraws:SourceAccount
y la cuenta en el valoraws: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 denominadords-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
" } } } ] }' -
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
por el ARN de la política que ha anotado en un paso anterior.your-policy-arn
aws iam attach-role-policy --policy-arn
your-policy-arn
--role-name rds-s3-export-role -
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
Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/
. -
Seleccione el nombre de instancia de base de datos de PostgreSQL para mostrar sus detalles.
-
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).
-
En Feature (Característica), elija s3Export.
-
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
por el ARN del rol que ha anotado en el paso anterior. Utiliceyour-role-arn
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-arnyour-role-arn
\ --regionyour-region
En:Windows
aws rds add-role-to-db-instance ^ --db-instance-identifier
my-db-instance
^ --feature-name s3Export ^ --role-arnyour-role-arn
^ --regionyour-region