轮换 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
。 -
打开 Secrets Manager 控制台,网址为 https://console.aws.amazon.com/secretsmanager/
。 -
在搜索框中,输入您的数据库资源 ID,然后按以下形式查找密钥:
do-not-delete-rds-custom-
db-resource-id
-numeric-string
此密钥存储
RDSADMIN
、SYS
和SYSTEM
的密码。以下示例密钥适用于具有数据库资源 IDdb-ABCDEFG12HIJKLNMNOPQRS3TUVWX
的数据库实例:do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-123456
重要
如果您的数据库实例是只读副本并使用
custom-oracle-ee-cdb
引擎,则存在两个带有后缀
的密钥,一个用于主用户,另一个用于db-resource-id
-numeric-string
RDSADMIN
、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-
db-resource-id
-numeric-string
-dg此密钥存储了
RDS_DATAGUARD
的密码。以下示例密钥适用于具有数据库资源 IDdb-ABCDEFG12HIJKLNMNOPQRS3TUVWX
的数据库实例:do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-789012-dg
-
对于预定义 Oracle 用户中列出的所有数据库用户,按照修改 Amazon Secrets Manager 密钥中的说明更新密码。
-
如果您的数据库是独立数据库或 Oracle Data Guard 配置中的源数据库:
-
启动 Oracle SQL 客户端并以
SYS
身份登录。 -
为预定义 Oracle 用户中列出的每个数据库用户运行以下形式的 SQL 语句:
ALTER USER
user-name
IDENTIFIED BYpwd-from-secrets-manager
ACCOUNT 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
。