Requisitos previos para la integración de RDS for SQL Server con S3 - Amazon Relational Database Service

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
  1. En la IAM Management Console, seleccione Policies (Políticas) en el panel de navegación.

  2. Cree una nueva política y utilice la pestaña Visual editor (Editor visual) para los siguientes pasos.

  3. En Service (Servicio), introduzca S3 y, a continuación, seleccione el servicio de S3.

  4. 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 a D:\S3\

    • PutObject: obligatorio para cargar archivos desde D:\S3\ a S3

    • ListMultipartUploadParts: obligatorio para cargar archivos desde D:\S3\ a S3

    • AbortMultipartUpload: obligatorio para cargar archivos desde D:\S3\ a S3

  5. 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 en arn: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.

  6. 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
  1. En la IAM Management Console, seleccione Roles en el panel de navegación.

  2. 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.

  3. 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.

  4. 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:

  1. Cree una política de IAM que conceda a Amazon RDS acceso a un bucket de S3.

  2. 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.

  3. 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 a D:\S3\

  • PutObject: obligatorio para cargar archivos desde D:\S3\ a S3

  • ListMultipartUploadParts: obligatorio para cargar archivos desde D:\S3\ a S3

  • AbortMultipartUpload: obligatorio para cargar archivos desde D:\S3\ a S3

  1. 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 denominado amzn-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
  2. 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.json
    ejemplo 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 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.

    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 de aws:SourceAccount y la cuenta del valor de aws: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 your-policy-arn por el ARN de la política anotado en el paso anterior.

    Para Linux, macOS o:Unix

    aws iam attach-role-policy \ --policy-arn your-policy-arn \ --role-name rds-s3-integration-role

    En:Windows

    aws iam attach-role-policy ^ --policy-arn your-policy-arn ^ --role-name rds-s3-integration-role