

# Rotación de credenciales de RDS Custom para Oracle para programas de conformidad
<a name="custom-security.cred-rotation"></a>

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.

**Topics**
+ [Rotación automática de credenciales para usuarios predefinidos](#custom-security.cred-rotation.auto)
+ [Directrices para rotar las credenciales de usuario](#custom-security.cred-rotation.guidelines)
+ [Rotación manual de credenciales de usuario](#custom-security.cred-rotation.manual)

## Rotación automática de credenciales para usuarios predefinidos
<a name="custom-security.cred-rotation.auto"></a>

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.


| Usuario de base de datos | Creado por | Versiones del motor admitidas | Notas | 
| --- | --- | --- | --- | 
|  `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\$1\$1 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](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-creating.html#custom-creating.overview). | 
|  `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\$1\$1 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](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-creating.html#custom-creating.overview). | 

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
<a name="custom-security.cred-rotation.guidelines"></a>

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](#auto-rotation). 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](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html).

## Rotación manual de credenciales de usuario
<a name="custom-security.cred-rotation.manual"></a>

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](#auto-rotation):
+ 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 Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

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

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

1. Abra la consola de Secrets Manager en [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. En el cuadro de búsqueda, ingrese el ID de recurso de la base de datos y busque un secreto mediante una de las siguientes convenciones de nomenclatura:

   ```
   do-not-delete-rds-custom-resource_id-uuid
   rds-custom!oracle-do-not-delete-resource_id-uuid
   ```

   Este secreto almacena la contraseña de `RDSADMIN`, `SYS` y `SYSTEM`. Las siguientes claves de ejemplo son para la instancia de base de datos con el ID de recurso `db-ABCDEFG12HIJKLNMNOPQRS3TUVWX` y UUID `123456`:

   ```
   do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-123456
   rds-custom!oracle-do-not-delete-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-uuid`: 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`.

1. Si la instancia de base de datos existe en una configuración de Oracle Data Guard, busque un secreto mediante una de las siguientes convenciones de nomenclatura:

   ```
   do-not-delete-rds-custom-resource_id-uuid-dg
   rds-custom!oracle-do-not-delete-resource_id-uuid-dg
   ```

   Este secreto almacena la contraseña de `RDS_DATAGUARD`. Las siguientes claves de ejemplo son para la instancia de base de datos con el ID de recurso de base de datos `db-ABCDEFG12HIJKLNMNOPQRS3TUVWX` y UUID **789012**:

   ```
   do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-789012-dg
   rds-custom!oracle-do-not-delete-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-789012-dg
   ```

1. Para todos los usuarios de bases de datos que se indican en [Usuarios predefinidos de Oracle](#auto-rotation), actualice las contraseñas de acuerdo con las instrucciones de [Modificación de un secreto de AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_update-secret.html).

1. 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`.

   1. Ejecute una instrucción SQL del siguiente modo para cada usuario de base de datos incluido en [Usuarios predefinidos de Oracle](#auto-rotation):

      ```
      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;
      ```

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