轮换 RDS Custom for Oracle 凭证以遵循合规性计划
一些合规性计划要求定期更改数据库用户凭证,例如每 90 天更改一次。RDS Custom for Oracle 会自动轮换某些预定义数据库用户的凭证。
自动轮换预定义用户的凭证
如果 RDS Custom for Oracle 数据库实例托管在 Amazon RDS 中,则以下预定义 Oracle 用户的凭证每 30 天自动轮换一次。之前用户的凭证位于 Amazon Secrets Manager 中。
| 数据库用户 | 创建者 | 支持的引擎版本 | 备注 |
|---|---|---|---|
|
|
Oracle |
custom-oracle-ee custom-oracle-ee-cdb custom-oracle-se2 custom-oracle-se2-cdb | |
|
|
Oracle |
custom-oracle-ee custom-oracle-ee-cdb custom-oracle-se2 custom-oracle-se2-cdb | |
|
|
RDS |
custom-oracle-ee custom-oracle-se2 | |
|
|
RDS |
custom-oracle-ee-cdb custom-oracle-se2-cdb | 带有 C## 前缀的用户名仅存在于 CDB 中。有关 CDB 的更多信息,请参阅 Amazon RDS Custom for Oracle 架构概述。 |
|
|
RDS |
custom-oracle-ee | 此用户仅存在于只读副本、只读副本的源数据库以及您已使用 Oracle Data Guard 物理迁移到 RDS Custom 的数据库中。 |
|
|
RDS |
custom-oracle-ee-cdb | 此用户仅存在于只读副本、只读副本的源数据库以及您已使用 Oracle Data Guard 物理迁移到 RDS Custom 的数据库中。带有 C## 前缀的用户名仅存在于 CDB 中。有关 CDB 的更多信息,请参阅 Amazon RDS Custom for Oracle 架构概述。 |
自动凭证轮换的一个例外是您手动配置为备用数据库的 RDS Custom for Oracle 数据库实例。RDS 仅轮换您已使用 create-db-instance-read-replica CLI 命令或 CreateDBInstanceReadReplica API 创建的只读副本的凭证。
轮换用户凭证的指南
为确保您的凭证根据您的合规性计划进行轮换,请注意以下指南:
如果您的数据库实例自动轮换凭证,请不要手动更改或删除预定义 Oracle 用户中列出的用户的密钥、密码文件或密码。否则,RDS Custom 可能会将您的数据库实例置于支持边界之外,这会暂停自动轮换。
RDS 主用户不是预定义的,因此您负责手动更改密码或在 Secrets Manager 中设置自动轮换。有关更多信息,请参阅轮换 Amazon Secrets Manager 密钥。
手动轮换用户凭证
对于以下类别的数据库,RDS 不会自动轮换在预定义 Oracle 用户中列出的用户的凭证:
-
您手动配置为用作备用数据库的数据库。
-
本地数据库。
-
位于支持边界之外或处于 RDS Custom 自动化无法运行的状态的数据库实例。在这种情况下,RDS Custom 也不会轮换密钥。
如果您的数据库属于上述任何类别,则必须手动轮换用户凭证。
手动轮换数据库实例的用户凭证
登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在数据库中,确保 RDS 当前未备份您的数据库实例或执行配置高可用性等操作。
-
在数据库详细信息页面中,选择配置并记下数据库实例的资源 ID。或者,您可以使用 Amazon CLI 命令
describe-db-instances。 -
通过 https://console.aws.amazon.com/secretsmanager/
打开 Secrets Manager 控制台。 -
在搜索框中,输入数据库的资源 ID,然后使用以下任一命名约定搜索密钥:
do-not-delete-rds-custom-resource_id-uuidrds-custom!oracle-do-not-delete-resource_id-uuid此密钥存储
RDSADMIN、SYS和SYSTEM的密码。以下示例密钥适用于资源 ID 为db-ABCDEFG12HIJKLNMNOPQRS3TUVWX和 UUID 为123456的数据库实例:do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-123456 rds-custom!oracle-do-not-delete-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-123456重要
如果您的数据库实例是只读副本并使用
custom-oracle-ee-cdb引擎,则存在两个带有后缀的密钥,一个用于主用户,另一个用于db-resource_id-uuidRDSADMIN、SYS和SYSTEM。要找到正确的密钥,请在主机上运行以下命令:cat /opt/aws/rdscustomagent/config/database_metadata.json | python3 -c "import sys,json; print(json.load(sys.stdin)['dbMonitoringUserPassword'])"dbMonitoringUserPassword属性表示RDSADMIN、SYS和SYSTEM的密钥。 -
如果您的数据库实例存在于 Oracle Data Guard 配置中,请使用以下任一命名约定搜索密钥:
do-not-delete-rds-custom-resource_id-uuid-dg rds-custom!oracle-do-not-delete-resource_id-uuid-dg此密钥存储了
RDS_DATAGUARD的密码。以下示例密钥适用于数据库资源 ID 为db-ABCDEFG12HIJKLNMNOPQRS3TUVWX和 UUID 为 789012 的数据库实例:do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-789012-dg rds-custom!oracle-do-not-delete-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-789012-dg -
对于预定义 Oracle 用户中列出的所有数据库用户,按照修改 Amazon Secrets Manager 密钥中的说明更新密码。
-
如果您的数据库是独立数据库或 Oracle Data Guard 配置中的源数据库:
-
启动 Oracle SQL 客户端并以
SYS身份登录。 -
为预定义 Oracle 用户中列出的每个数据库用户运行以下形式的 SQL 语句:
ALTER USERuser-nameIDENTIFIED BYpwd-from-secrets-managerACCOUNT UNLOCK;例如,如果存储在 Secrets Manager 中的
RDSADMIN的新密码为pwd-123,请运行以下语句:ALTER USER RDSADMIN IDENTIFIED BY pwd-123 ACCOUNT UNLOCK;
-
-
如果您的数据库实例运行 Oracle Database 12c 版本 1(12.1)并由 Oracle Data Guard 管理,请手动将密码文件(
orapw)从主数据库实例复制到每个备用数据库实例。如果您的数据库实例托管在 Amazon RDS 中,则密码文件位置为
/rdsdbdata/config/orapw。对于不在 Amazon RDS 中托管的数据库,在 Linux 和 UNIX 上的原定设置位置为$ORACLE_HOME/dbs/orapw$ORACLE_SID,在 Windows 上的原定设置位置为%ORACLE_HOME%\database\PWD%ORACLE_SID%.ora。