Requisitos previos para la integración de RDS for SQL Server con S3
Antes de comenzar, busque o cree el bucket de S3 que desea utilizar. También tiene que añadir los permisos para que la instancia de base de datos de RDS pueda acceder al bucket de S3. Para configurar este acceso, cree una política de IAM y un rol de IAM.
Para crear una política de IAM para acceder a Amazon S3
-
En la IAM Management Console
, seleccione Policies (Políticas) en el panel de navegación. -
Cree una nueva política y utilice la pestaña Visual editor (Editor visual) para los siguientes pasos.
-
En Service (Servicio), introduzca
S3
y, a continuación, seleccione el servicio de S3. -
En Actions (Acciones), seleccione los siguientes elementos para conceder el acceso que requiere la instancia de base de datos:
-
ListAllMyBuckets
: obligatorio -
ListBucket
: obligatorio -
GetBucketACL
: obligatorio -
GetBucketLocation
: obligatorio -
GetObject
– obligatorio para descargar archivos desde S3 aD:\S3\
-
PutObject
: obligatorio para cargar archivos desdeD:\S3\
a S3 -
ListMultipartUploadParts
: obligatorio para cargar archivos desdeD:\S3\
a S3 -
AbortMultipartUpload
: obligatorio para cargar archivos desdeD:\S3\
a S3
-
-
En Resources (Recursos), las opciones que aparecen varían en función de las acciones que seleccione en el paso anterior. Es posible que vea opciones para bucket, object (objeto) o para ambos. En cada una de ellas, añada el nombre de recurso de Amazon (ARN) adecuado.
En bucket, añada el ARN del bucket que desea utilizar. Por ejemplo, si el bucket se denomina
amzn-s3-demo-bucket
, establezca el ARN enarn:aws:s3:::
.amzn-s3-demo-bucket
En object (objeto), introduzca el ARN del bucket y, a continuación, seleccione una de las siguientes opciones:
-
Para conceder acceso a todos los archivos del bucket especificado, seleccione Any (Cualquiera) en Bucket name (Nombre de bucket) y Object name (Nombre de objeto).
-
Para conceder acceso a carpetas o archivos específicos del bucket, facilite los ARN de los objetos y buckets específicos a los que desea que SQL Server acceda.
-
-
Siga las instrucciones de la consola hasta que termine de crear la política.
Se trata de una guía resumida para configurar una política. Para obtener instrucciones más detalladas acerca de la creación de políticas de IAM, consulte Creación de políticas de IAM en la Guía del usuario de IAM.
Para crear un rol de IAM que utiliza la política de IAM del procedimiento anterior
-
En la IAM Management Console
, seleccione Roles en el panel de navegación. -
Cree un rol de IAM nuevo y seleccione las siguientes opciones a medida que aparecen en la consola:
-
Servicio de AWS
-
RDS
-
RDS – Add Role to Database (RDS: Añadir rol a la base de datos)
A continuación, seleccione Next:Permissions (Siguiente:Permisos) en la parte inferior.
-
-
En Attach permissions policies (Asociar políticas de permisos), introduzca el nombre de la política de IAM que ha creado previamente. A continuación, seleccione la política de la lista.
-
Siga las instrucciones de la consola hasta que termine de crear el rol.
Se trata de una guía resumida para configurar un rol. Si desea obtener instrucciones más detalladas acerca de la creación de roles, consulte Roles de IAM en la Guía del usuario de IAM.
Para conceder a Amazon RDS acceso a un bucket de Simple Storage Service (Amazon S3), utilice el siguiente proceso:
-
Cree una política de IAM que conceda a Amazon RDS acceso a un bucket de S3.
-
Cree un rol de IAM que Amazon RDS pueda asumir en su nombre para acceder a los buckets de S3.
Para obtener más información, vea Crear un rol para delegar permisos a un usuario de IAM en Guía del usuario de IAM.
-
Asocie la política de IAM que creó al rol de IAM creado.
Para crear la política de IAM
Incluya las acciones adecuadas para conceder el acceso que requiere la instancia de base de datos:
-
ListAllMyBuckets
: obligatorio -
ListBucket
: obligatorio -
GetBucketACL
: obligatorio -
GetBucketLocation
: obligatorio -
GetObject
– obligatorio para descargar archivos desde S3 aD:\S3\
-
PutObject
: obligatorio para cargar archivos desdeD:\S3\
a S3 -
ListMultipartUploadParts
: obligatorio para cargar archivos desdeD:\S3\
a S3 -
AbortMultipartUpload
: obligatorio para cargar archivos desdeD:\S3\
a S3
-
El siguiente comando de la AWS CLI crea una política de IAM denominada
rds-s3-integration-policy
con estas opciones. Otorga acceso a un bucket denominadoamzn-s3-demo-bucket
.Para Linux, macOS o:Unix
aws iam create-policy \ --policy-name
rds-s3-integration-policy
\ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/key_prefix
/*" } ] }'En:Windows
Asegúrese de cambiar las terminaciones de las líneas a las que son compatibles con la interfaz (
^
en lugar de\
). Además, en Windows, tiene que escapar todas las comillas dobles con\
. Para evitar tener que escapar las comillas del JSON, puede guardarlo en un archivo y transferirlo como un parámetro.En primer lugar, cree el archivo
policy.json
con la siguiente política de permisos:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/key_prefix
/*" } ] }A continuación, utilice el siguiente comando para crear la política:
aws iam create-policy ^ --policy-name
rds-s3-integration-policy
^ --policy-document file://file_path
/assume_role_policy.json -
Después de crear la política, anote el Nombre de recurso de Amazon (ARN) de la política. Necesita el ARN para un paso posterior.
Cómo crear el rol de IAM
-
El siguiente comando de la AWS CLI crea el rol de IAM
rds-s3-integration-role
con este fin.Para Linux, macOS o:Unix
aws iam create-role \ --role-name
rds-s3-integration-role
\ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'En:Windows
Asegúrese de cambiar las terminaciones de las líneas a las que son compatibles con la interfaz (
^
en lugar de\
). Además, en Windows, tiene que escapar todas las comillas dobles con\
. Para evitar tener que escapar las comillas del JSON, puede guardarlo en un archivo y transferirlo como un parámetro.En primer lugar, cree el archivo
assume_role_policy.json
con la siguiente política:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
A continuación, utilice el siguiente comando para crear el rol de IAM:
aws iam create-role ^ --role-name
rds-s3-integration-role
^ --assume-role-policy-document file://file_path
/assume_role_policy.jsonejemplo de utilizar la clave de contexto de condición global para crear el rol de IAM
Le recomendamos que utilice las claves de contexto de condición globales
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.Puede utilizar claves de contexto de condición globales y hacer que el valor de
aws:SourceArn
contenga el ID de cuenta. En estos casos, el valor deaws:SourceAccount
y la cuenta del valor deaws:SourceArn
deben utilizar el mismo ID de cuenta cuando se utilizan 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 nombre de recurso de Amazon (ARN) completo de los recursos que acceden al rol. Para la integración de S3, asegúrese de incluir los ARN de la instancia de base de datos, tal y como se muestra en el siguiente ejemplo.Para Linux, macOS o:Unix
aws iam create-role \ --role-name
rds-s3-integration-role
\ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn":"arn:aws:rds:Region
:my_account_ID
:db:db_instance_identifier
" } } } ] }'En:Windows
Agregue la clave de contexto de condición global a
assume_role_policy.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn":"arn:aws:rds:
Region
:my_account_ID
:db:db_instance_identifier
" } } } ] } -
Para adjuntar la política de IAM al rol de IAM
-
El siguiente comando de la AWS CLI asocia la política al rol denominado
rds-s3-integration-role
. Sustituya
por el ARN de la política anotado en el paso anterior.your-policy-arn
Para Linux, macOS o:Unix
aws iam attach-role-policy \ --policy-arn
your-policy-arn
\ --role-namerds-s3-integration-role
En:Windows
aws iam attach-role-policy ^ --policy-arn
your-policy-arn
^ --role-namerds-s3-integration-role