Configuración de permisos IAM para la integración de RDS para Oracle con Amazon S3 - Amazon Relational Database Service

Configuración de permisos IAM para la integración de RDS para Oracle con Amazon S3

Para que RDS para Oracle se integre con Amazon S3, su instancia de base de datos debe tener acceso a un bucket Amazon S3. La Amazon VPC utilizada por la instancia de base de datos no necesita ofrecer acceso a los puntos de enlace de Amazon S3.

RDS para Oracle admite la transferencia de archivos entre una instancia de base de datos en una cuenta y un bucket de Amazon S3 en una cuenta diferente. En los casos en que se requieren pasos adicionales, se indican en las siguientes secciones.

Paso 1: Crear una política de IAM para su rol de Amazon RDS

En este paso, cree una política AWS Identity and Access Management (IAM) con los permisos necesarios para transferir archivos entre el bucket de Amazon S3 a la instancia de base de datos de RDS. En este paso, también se asume que ya ha creado un bucket de S3.

Antes de crear la política, anote la siguiente información:

  • El nombre de recurso de Amazon (ARN) del bucket

  • El ARN para su clave de AWS KMS, si el bucket utiliza el cifrado SSE-KMS o SSE-S3

    nota

    Una instancia de base de datos de RDS para Oracle no puede acceder a los buckets de Amazon S3 cifrados con SSE-C.

Para obtener más información, consulte Protección de los datos con el cifrado del servidor en la Guía del usuario de Amazon Simple Storage Service.

Para crear una política de IAM que permita a Amazon RDS acceder a un bucket de Amazon S3
  1. Abra la consola de administración de IAM.

  2. En Access management (Administración de acceso), seleccione Policies (Políticas).

  3. Seleccione Crear política.

  4. En la pestaña Visual editor (Editor visual), seleccione Choose a service (Elegir un servicio) y, a continuación, S3.

  5. En Actions (Acciones), seleccione Expand all (Expandir todo)y, a continuación, elija los permisos de bucket y los permisos de objeto necesarios para transferir archivos de un bucket Amazon S3 a Amazon RDS. Por ejemplo, haga lo siguiente:

    • Expanda List (Lista)y, a continuación, seleccione ListBucket.

    • Expanda Read (Lectura)y, a continuación, seleccione GetObject.

    • Expanda Write (Escritura) y, a continuación, seleccione PutObject y DeleteObject.

    • Expanda Permissions management (Administración de permisos)y, a continuación, seleccione PutObjectAcl. Este permiso es necesario si planea cargar archivos en un bucket propiedad de otra cuenta y esta cuenta necesita un control total del contenido del bucket.

    Los permisos de objeto son permisos para operaciones de objeto en Amazon S3. Debe concederlos para los objetos de un bucket, y no para el bucket en sí. Para más información, consulte Permisos para operaciones con objetos.

  6. Elija Recursos y, a continuación, haga lo siguiente:

    1. Elija Específico.

    2. En el bucket, seleccione Agregar ARN. Introduzca el ARN de su bucket. El nombre del bucket se rellena automáticamente. A continuación, elija Add (Añadir).

    3. Si se muestra el recurso del objeto, elija Agregar ARN para añadir recursos manualmente o elija Cualquiera.

      nota

      Puede establecer en Amazon Resource Name (ARN) (Nombre de recurso de Amazon [ARN]) un valor de ARN más específico y que así Amazon RDS solo tenga acceso a archivos o carpetas determinados de un bucket de Amazon S3. Para obtener más información acerca del modo de definir una política de acceso en Amazon S3, consulte Administración de permisos de acceso para los recursos de Amazon S3.

  7. (Opcional) Elija Add additional permissions (Agregar permisos adicionales) para agregar recursos a la política. Por ejemplo, haga lo siguiente:

    1. Si el bucket está cifrado con una clave KMS personalizada, seleccione KMS para el servicio.

    2. En Acciones manuales, seleccione lo siguiente:

      • Encrypt

      • Volver a cifrar desde y Volver a cifrar a

      • Decrypt

      • DescribeKey

      • GenerateDataKey

    3. En Recursos, elija Específico.

    4. En la clave, seleccione Agregar ARN. Introduzca el ARN de su clave personalizada como recurso y luego elija Añadir.

      Para obtener más información, consulte Protección de datos con el cifrado en el servidor mediante claves de KMS almacenadas en AWS Key Management Service (SSE-KMS) en la guía del usuario de Amazon Simple Storage Service.

    5. Si desea que Amazon RDS acceda a otros buckets, agregue los ARN de estos buckets. Opcionalmente, también puede conceder acceso a todos los buckets y objetos de Amazon S3.

  8. Elija Next: Tags (Siguiente: Etiquetas) y, a continuación, Next: Review (Siguiente: Revisar).

  9. En Name (Nombre), escriba un nombre para la política de IAM, por ejemplo, rds-s3-integration-policy. Utilizará este nombre al crear un rol de IAM y asociarlo a la instancia de base de datos. También puede añadir una descripción opcional en Description (Descripción).

  10. Elija Create Policy (Crear política).

Cree una política de AWS Identity and Access Management (IAM) que conceda a Amazon RDS acceso a un bucket de Amazon S3. Después de crear la política, apunte el ARN de esta. Necesita el ARN para un paso posterior.

Incluya las acciones adecuadas en la política en función del tipo de acceso necesario:

  • GetObject: se requiere para transferir archivos desde un bucket de Amazon S3 a Amazon RDS.

  • ListBucket: se requiere para transferir archivos desde un bucket de Amazon S3 a Amazon RDS.

  • PutObject: se requiere para transferir archivos desde Amazon RDS a un bucket de Amazon 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 denominado amzn-s3-demo-bucket.

ejemplo

Para Linux, macOS o:Unix

aws iam create-policy \ --policy-name rds-s3-integration-policy \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }'

En el ejemplo siguiente se incluyen permisos para claves KMS personalizadas.

aws iam create-policy \ --policy-name rds-s3-integration-policy \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject", "kms:Decrypt", "kms:Encrypt", "kms:ReEncrypt*", "kms:GenerateDataKey", "kms:DescribeKey", ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:kms:::your-kms-arn" ] } ] }'

En:Windows

aws iam create-policy ^ --policy-name rds-s3-integration-policy ^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }'

En el ejemplo siguiente se incluyen permisos para claves KMS personalizadas.

aws iam create-policy ^ --policy-name rds-s3-integration-policy ^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject", "kms:Decrypt", "kms:Encrypt", "kms:ReEncrypt", "kms:GenerateDataKey", "kms:DescribeKey", ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:kms:::your-kms-arn" ] } ] }'

Paso 2: (Opcional) Crear una política de IAM para su bucket de Amazon S3

Este paso solo es necesario en las siguientes condiciones:

  • Tiene previsto cargar archivos en un bucket de Amazon S3 desde una cuenta (cuenta A) y acceder a ellos desde otra cuenta (cuenta B).

  • La cuenta A es la propietaria del bucket.

  • La cuenta B necesita un control total de los objetos cargados en el bucket.

Si las condiciones anteriores no le atañen, vaya a Paso 3: Crear un rol de IAM para la instancia de base de datos y asociar la política.

Para crear la política del bucket, asegúrese de que dispone de lo siguiente:

  • El ID de cuenta de la cuenta A

  • El nombre de usuario de la cuenta A

  • El valor ARN para el bucket de Amazon S3 en la cuenta B

Para crear o editar una política de bucket
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En la lista Buckets (Buckets), elija el nombre del bucket para el que desea crear una política de bucket o cuya política de bucket quiera editar.

  3. Elija Permissions (Permisos).

  4. En Bucket Policy (Política de bucket), elija Edit (Editar). Se abre la página Edit bucket policy (Editar política de bucket).

  5. En la página Edit bucket policy (Editar política de bucket), examine Policy examples (Ejemplos de políticas) en la Guía del usuario de Amazon S3. Elija Policy generator (Generador de políticas) para generar una política automáticamente o edite el JSON en la sección Policy (Política).

    Si elige Policy generator (Generador de políticas), se abre el generador de políticas de AWS en una ventana nueva:

    1. En la página AWS Policy Generator (Generador de políticas de AWS), en Select Type of Policy (Seleccionar tipo de política), elija S3 Bucket Policy (Política de bucket de S3).

    2. Agregue una instrucción ingresando la información en los campos proporcionados y, a continuación, elija Add Statement (Agregar declaración). Repita el procedimiento para tantas instrucciones como desee agregar. Para obtener más información acerca de estos campos, consulte la Referencia de los elementos de las políticas de JSON de IAM en la Guía del usuario de IAM.

      nota

      Para mayor comodidad, la página Edit bucket policy (Editar política de bucket) muestra el Bucket ARN (nombre de recurso de Amazon [ARN]) del bucket actual encima del campo de texto Policy (Política). Puede copiar este ARN para utilizarlo en las instrucciones de la página AWS Policy Generator (Generador de políticas de AWS).

    3. Una vez que haya terminado de agregar instrucciones, elija Generar política.

    4. Copie el texto de la política generada, elija Cerrar y vuelva a la página Editar política de bucket en la consola de Amazon S3.

  6. En el cuadro Policy (Política), edite la política existente o pegue la política de bucket desde el generador de políticas. Asegúrese de resolver advertencias de seguridad, errores, advertencias generales y sugerencias antes de guardar la política.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Example permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-A-ID:account-A-user" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket", "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" ] } ] }
  7. Elija Save changes (Guardar cambios), que lo redirecciona a la página Bucket Permissions (Permisos de bucket).

Paso 3: Crear un rol de IAM para la instancia de base de datos y asociar la política

En este paso se supone que se ha creado la política de IAM en Paso 1: Crear una política de IAM para su rol de Amazon RDS. En este paso, creará un rol para la instancia de base de datos de RDS para Oracle y, a continuación, asociará la política al rol.

Para crear un rol de IAM que permita el acceso de Amazon RDS a un bucket de Amazon S3
  1. Abra la consola de administración de IAM.

  2. Seleccione Roles en el panel de navegación.

  3. Elija Crear rol.

  4. Elija Servicio de AWS.

  5. En Casos de uso de otros servicios de:AWS, elija RDS y, a continuación, RDS: Añadir rol a la base de datos. A continuación, elija Next.

  6. En Buscar, en Políticas de permisos, escriba el nombre de la política de IAM que ha creado en Paso 1: Crear una política de IAM para su rol de Amazon RDS y elija la política cuando aparezca en la lista. A continuación, elija Next.

  7. En Nombre del rol, escriba un nombre para el rol de IAM, por ejemplo, rds-s3-integration-role. También puede añadir una descripción opcional en Description (Descripción).

  8. Elija Crear rol.

Para crear un rol de IAM y asociarle su política
  1. Cree un rol de IAM que Amazon RDS pueda asumir en su nombre para acceder a sus buckets de Amazon S3.

    Se recomienda usar las claves de contexto de condición global aws:SourceArn y aws:SourceAccount en las relaciones de confianza 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.

    • 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 relación de confianza, asegúrese de usar la clave de contexto de la condición global aws:SourceArn con el nombre de recurso de Amazon (ARN) completo de los recursos que acceden al rol.

    El siguiente comando AWS CLI crea el rol nombrado rds-s3-integration-role para este propósito.

    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:SourceAccount": my_account_ID, "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname" } } } ] }'

    En:Windows

    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:SourceAccount": my_account_ID, "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname" } } } ] }'

    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.

  2. Después de crear el rol, anote el ARN del rol. Necesita el ARN para un paso posterior.

  3. Asocie la política que ha creado al rol que ha creado.

    El siguiente comando de la AWS CLI asocia la política al rol denominado rds-s3-integration-role.

    ejemplo

    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

    Sustituya your-policy-arn por el ARN de la política anotado en el paso anterior.

Paso 4: Asocie su rol de IAM a su instancia de base de datos de RDS para Oracle

El último paso para configurar los permisos para la integración de Amazon S3 es asociar el rol de IAM con la instancia de base de datos. Tenga en cuenta los siguientes requisitos:

  • Debe tener acceso a un rol de IAM con la política de permisos de Amazon S3 requerida adjunta.

  • Solo puede asociar un rol de IAM a su instancia de base de datos de RDS para Oracle cada vez.

  • Su instancia de base de datos debe tener el estado Disponible.

Para asociar su rol de IAM a su instancia de base de datos de RDS para Oracle
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. Elija Databases (Bases de datos) en el panel de navegación.

  3. Seleccione el nombre de la instancia de base de datos de RDS para Oracle para ver sus detalles.

  4. En la pestaña Connectivity & Security (Conectividad y seguridad), desplácese hacia abajo hasta la sección Manage IAM roles (Administrar roles de IAM) de la parte inferior de la página.

  5. En Añadir roles de IAM a esta instancia, elija el rol que creó en Paso 3: Crear un rol de IAM para la instancia de base de datos y asociar la política.

  6. En Feature (Característica), elija S3_INTEGRATION.

    Añadir rol S3_INTEGRATION
  7. Seleccione Add role (Añadir rol).

El siguiente comando de la AWS CLI añade el rol a una instancia de base de datos de Oracle denominada mydbinstance.

ejemplo

Para Linux, macOS o:Unix

aws rds add-role-to-db-instance \ --db-instance-identifier mydbinstance \ --feature-name S3_INTEGRATION \ --role-arn your-role-arn

En:Windows

aws rds add-role-to-db-instance ^ --db-instance-identifier mydbinstance ^ --feature-name S3_INTEGRATION ^ --role-arn your-role-arn

Sustituya your-role-arn por el ARN del rol anotado en el paso anterior. S3_INTEGRATION debe especificarse para la opción --feature-name.