Seguridad de Amazon RDS Custom - Amazon Relational Database Service

Seguridad de Amazon RDS Custom

Familiarícese con los aspectos de seguridad de RDS Custom.

Cómo gestiona RDS Custom las tareas en su nombre de forma segura

RDS Custom utiliza las siguientes herramientas y técnicas para ejecutar operaciones en su nombre de forma segura:

Rol vinculado al servicio AWSServiceRoleForRDSCustom

Un rol vinculado al servicio está predefinido por el servicio e incluye todos los permisos que requiere el servicio para llamar a otros Servicios de AWS en su nombre. Para RDS Custom, AWSServiceRoleForRDSCustom es un rol vinculado al servicio que se define según el principio del privilegio mínimo. RDS Custom utiliza los permisos de AmazonRDSCustomServiceRolePolicy, que es la política adjunta a este rol, para realizar la mayoría de las tareas de aprovisionamiento y de administración fuera del host. Para obtener más información, consulte AmazonRDSCustomServiceRolePolicy.

Cuando realiza tareas en el host, la automatización de RDS Custom utiliza las credenciales del rol vinculado al servicio para ejecutar los comandos mediante AWS Systems Manager. Puede auditar el historial de comandos a través del historial de comandos de Systems Manager y AWS CloudTrail. Systems Manager se conecta a su instancia de base de datos de RDS Custom mediante la configuración de red. Para obtener más información, consulte Paso 4: configurar IAM para RDS Custom for Oracle.

Credenciales de IAM temporales

Al aprovisionar o eliminar recursos, RDS Custom a veces utiliza credenciales temporales derivadas de las credenciales de la entidad principal de la IAM que llama. Estas credenciales de la IAM están restringidas por las políticas de IAM adjuntas a esa entidad principal y caducan una vez finalizada la operación. Para obtener más información sobre los permisos necesarios para las entidades principales de IAM que utilizan RDS Custom, consulte Paso 5: otorgar los permisos necesarios al rol o usuario de IAM.

Perfil de instancia de Amazon EC2

Un perfil de instancia de EC2 es un contenedor de un rol de IAM, que puede utilizar para transferir información del rol a una instancia de EC2. Una instancia de EC2 subyace a una instancia de base de datos de RDS Custom. Debe proporcionar un perfil de instancia al crear una instancia de base de datos de RDS Custom. RDS Custom utiliza las credenciales del perfil de instancia de EC2 cuando realiza tareas de administración basadas en el host, como las copias de seguridad. Para obtener más información, consulte Cree manualmente el rol de IAM y el perfil de instancias.

Par de claves SSH

Cuando RDS Custom crea la instancia de EC2 que subyace a una instancia de base de datos, crea un par de claves SSH en su nombre. La clave usa el prefijo del nombre do-not-delete-rds-custom-ssh-privatekey-db-. AWS Secrets Manager almacena la clave privada SSH como secreto en Cuenta de AWS. Amazon RDS no almacena, accede ni usa estas credenciales. Para obtener más información, consulte Pares de claves de Amazon EC2 e instancias Linux.

Certificados de SSL

Las instancias de bases de datos de RDS Custom no admiten certificados SSL administrados. Si desea implementar SSL, puede administrar automáticamente los certificados SSL en su propia cartera y crear un oyente de SSL para proteger las conexiones entre la base de datos del cliente o para la replicación de la base de datos. Para obtener más información, consulte Configuring Transport Layer Security Authentication (Configuración de la autenticación de seguridad de la capa de transporte) en la documentación de Oracle Database.

Protección de su bucket de Amazon S3 contra el problema del suplente confuso

Cuando crea una versión del motor personalizado de Amazon RDS Custom para Oracle o una instancia de base de datos de RDS Custom para SQL Server, RDS Custom crea un bucket de Amazon S3. El bucket de S3 almacena archivos como artefactos CEV, registros REDO (transacciones), elementos de configuración para el perímetro de soporte y registros AWS CloudTrail.

Puede hacer que estos buckets de S3 sean más seguros mediante el uso de las claves de contexto de condición global para evitar el problema del suplente confuso. Para obtener más información, consulte Prevención de los problemas del suplente confuso entre servicios.

El siguiente ejemplo de RDS Custom para Oracle muestra el uso de las claves de contexto de condición global aws:SourceArn y aws:SourceAccount en una política de bucket de S3. Para RDS Custom para Oracle, asegúrese de incluir los nombres de recursos de Amazon (ARN) para los CEV y las instancias de base de datos. Para RDS Custom para SQL Server, asegúrese de incluir el ARN para las instancias de base de datos.

... { "Sid": "AWSRDSCustomForOracleInstancesObjectLevelAccess", "Effect": "Allow", "Principal": { "Service": "custom.rds.amazonaws.com" }, "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectRetention", "s3:BypassGovernanceRetention" ], "Resource": "arn:aws:s3:::do-not-delete-rds-custom-123456789012-us-east-2-c8a6f7/RDSCustomForOracle/Instances/*", "Condition": { "ArnLike": { "aws:SourceArn": [ "arn:aws:rds:us-east-2:123456789012:db:*", "arn:aws:rds:us-east-2:123456789012:cev:*/*" ] }, "StringEquals": { "aws:SourceAccount": "123456789012" } } }, ...

Rotación de credenciales de RDS Custom para Oracle para programas de conformidad

Algunos programas de conformidad exigen que las credenciales de usuario de la base de datos cambien periódicamente, por ejemplo, cada 90 días. RDS Custom para Oracle rota automáticamente las credenciales de algunos usuarios de bases de datos predefinidos.

Rotación automática de credenciales para usuarios predefinidos

Si su instancia de base de datos de RDS Custom para Oracle está alojada en Amazon RDS, las credenciales de los siguientes usuarios predefinidos de Oracle se rotan automáticamente cada 30 días. Las credenciales de los usuarios anteriores residen en AWS Secrets Manager.

Usuarios predefinidos de Oracle
Usuario de base de datosCreado porVersiones del motor admitidasNotas

SYS

Oracle

custom-oracle-ee

custom-oracle-ee-cdb

custom-oracle-se2

custom-oracle-se2-cdb

SYSTEM

Oracle

custom-oracle-ee

custom-oracle-ee-cdb

custom-oracle-se2

custom-oracle-se2-cdb

RDSADMIN

RDS

custom-oracle-ee

custom-oracle-se2

C##RDSADMIN

RDS

custom-oracle-ee-cdb

custom-oracle-se2-cdb

Los nombres de usuario con un prefijo C## solo existen en las CDB. Para obtener más información acerca de las CDB, consulte Información general de la arquitectura de Amazon RDS Custom para Oracle.

RDS_DATAGUARD

RDS

custom-oracle-ee

Este usuario solo existe en las réplicas de lectura, en las bases de datos de origen para réplicas de lectura y en las bases de datos que haya migrado físicamente a RDS Custom mediante Oracle Data Guard.

C##RDS_DATAGUARD

RDS

custom-oracle-ee-cdb

Este usuario solo existe en las réplicas de lectura, en las bases de datos de origen para réplicas de lectura y en las bases de datos que haya migrado físicamente a RDS Custom mediante Oracle Data Guard. Los nombres de usuario con un prefijo C## solo existen en las CDB. Para obtener más información acerca de las CDB, consulte Información general de la arquitectura de Amazon RDS Custom para Oracle.

Una excepción a la rotación automática de credenciales es una instancia de base de datos de RDS Custom para Oracle que haya configurado manualmente como base de datos en espera. RDS solo rota las credenciales de las réplicas que haya creado mediante el comando de la CLI de create-db-instance-read-replica o la API de CreateDBInstanceReadReplica.

Directrices para rotar las credenciales de usuario

Para asegurarse de que sus credenciales roten de acuerdo con su programa de conformidad, tenga en cuenta las siguientes directrices:

  • Si la instancia de base de datos rota las credenciales automáticamente, no cambie ni elimine manualmente un secreto, un archivo de contraseñas o una contraseña para los usuarios que figuran en Usuarios predefinidos de Oracle. De lo contrario, RDS Custom podría colocar la instancia de base de datos fuera del perímetro de soporte, lo que suspendería la rotación automática.

  • El usuario maestro de RDS no está predefinido, por lo que usted es el responsable de cambiar la contraseña manualmente o configurar la rotación automática en Secrets Manager. Para obtener más información, consulte Rotar secretos de AWS Secrets Manager.

Rotación manual de credenciales de usuario

Para las siguientes categorías de bases de datos, RDS no rota automáticamente las credenciales de los usuarios que figuran en Usuarios predefinidos de Oracle:

  • Base de datos que configuró manualmente para que funcione como base de datos en espera.

  • Base de datos en las instalaciones

  • Instancia de base de datos que se encuentra fuera del perímetro de soporte o en un estado en el que no se puede ejecutar la automatización de RDS Custom. En este caso, RDS Custom tampoco rota las claves.

Si la base de datos se encuentra en alguna de las categorías anteriores, debe rotar las credenciales de usuario manualmente.

Para rotar manualmente las credenciales de usuario de una instancia de base de datos
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. En Bases de datos, asegúrese de que RDS no esté realizando copias de seguridad de la instancia de base de datos ni operaciones como la configuración de la alta disponibilidad.

  3. En la página de detalles de la base de datos, elija Configuración y anote el ID del recurso de la instancia de base de datos. También puede utilizar el comando describe-db-instances de la AWS CLI.

  4. Abra la consola de Secrets Manager en https://console.aws.amazon.com/secretsmanager/.

  5. En el cuadro de búsqueda, escriba el ID del recurso de base de datos y busque el secreto en el siguiente formulario:

    do-not-delete-rds-custom-db-resource-id-numeric-string

    Este secreto almacena la contraseña de RDSADMIN, SYS y SYSTEM. La siguiente clave de ejemplo es para la instancia de base de datos con el ID de recurso de base de datos db-ABCDEFG12HIJKLNMNOPQRS3TUVWX:

    do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-123456
    importante

    Si la instancia de base de datos es una réplica de lectura y usa el motor custom-oracle-ee-cdb, existen dos secretos con el sufijo db-resource-id-numeric-string: uno para el usuario maestro y otro para RDSADMIN, SYS y SYSTEM. Para encontrar el secreto correcto, ejecute el siguiente comando en el host:

    cat /opt/aws/rdscustomagent/config/database_metadata.json | python3 -c "import sys,json; print(json.load(sys.stdin)['dbMonitoringUserPassword'])"

    El atributo dbMonitoringUserPassword indica el secreto para RDSADMIN, SYS y SYSTEM.

  6. Si su instancia de base de datos existe en una configuración de Oracle Data Guard, busque el secreto de la siguiente forma:

    do-not-delete-rds-custom-db-resource-id-numeric-string-dg

    Este secreto almacena la contraseña de RDS_DATAGUARD. La siguiente clave de ejemplo es para la instancia de base de datos con el ID de recurso de base de datos db-ABCDEFG12HIJKLNMNOPQRS3TUVWX:

    do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-789012-dg
  7. Para todos los usuarios de bases de datos que se indican en Usuarios predefinidos de Oracle, actualice las contraseñas de acuerdo con las instrucciones de Modificación de un secreto de AWS Secrets Manager.

  8. Si su base de datos es una base de datos independiente o una base de datos de origen en una configuración de Oracle Data Guard:

    1. Inicie su cliente de Oracle SQL e inicie sesión como SYS.

    2. Ejecute una instrucción SQL del siguiente modo para cada usuario de base de datos incluido en Usuarios predefinidos de Oracle:

      ALTER USER user-name IDENTIFIED BY pwd-from-secrets-manager ACCOUNT UNLOCK;

      Por ejemplo, si la nueva contraseña de RDSADMIN almacenada en Secrets Manager es pwd-123, ejecute la siguiente instrucción:

      ALTER USER RDSADMIN IDENTIFIED BY pwd-123 ACCOUNT UNLOCK;
  9. Si su instancia de base de datos ejecuta Oracle Database 12c Versión 1 (12.1) y la administra Oracle Data Guard, copie manualmente el archivo de contraseña (orapw) desde la instancia de base de datos principal a cada instancia de base de datos en espera.

    Si la instancia de base de datos está alojada en Amazon RDS, la ubicación del archivo de contraseñas es /rdsdbdata/config/orapw. Para las bases de datos que no están alojadas en Amazon RDS, la ubicación predeterminada es $ORACLE_HOME/dbs/orapw$ORACLE_SID en Linux y UNIX y %ORACLE_HOME%\database\PWD%ORACLE_SID%.ora en Windows.