为逻辑复制连接配置 IAM 身份验证
从 RDS for PostgreSQL 版本 11 及更高版本开始,您可以对复制连接使用 Amazon Identity and Access Management(IAM)身份验证。此功能允许您使用 IAM 角色而不是密码来管理数据库访问权限,从而增强安全性。该功能以集群和实例粒度运行,并遵循与标准 IAM 身份验证相同的安全模型。
复制连接的 IAM 身份验证是一项可选功能。要启用此功能,请在数据库集群或数据库参数组中将 rds.iam_auth_for_replication 参数设置为 1。由于这是一个动态参数,因此您的数据库集群或实例无需重新启动,这样您就可以在不停机的情况下对现有工作负载使用 IAM 身份验证。启用此功能之前,您必须满足下面列出的先决条件。
先决条件
要对复制连接使用 IAM 身份验证,您需要满足以下所有要求:
-
RDS for PostgreSQL 数据库实例必须为版本 11 或更高版本。
-
在您的发布者 RDS for PostgreSQL 数据库实例上:
-
启用 IAM 数据库身份验证。有关更多信息,请参阅 启用和禁用 IAM 数据库身份验证。
-
通过将
rds.logical_replication参数设置为 1,启用逻辑复制。
-
在逻辑复制中,发布者是向订阅用户数据库发送数据的源 RDS for PostgreSQL 数据库。有关更多信息,请参阅 为 Amazon RDS for PostgreSQL 执行逻辑复制。
注意
必须在发布者 RDS for PostgreSQL 数据库实例上同时启用 IAM 身份验证和逻辑复制。如果任一项未启用,则无法对复制连接使用 IAM 身份验证。
对复制连接启用 IAM 身份验证
要对复制连接启用 IAM 身份验证,请完成以下步骤。
对复制连接启用 IAM 身份验证
-
验证 RDS for PostgreSQL 数据库集群或实例满足对复制连接使用 IAM 身份验证的所有先决条件。有关更多信息,请参阅 先决条件。
-
根据 RDS for PostgreSQL 设置配置
rds.iam_auth_for_replication参数:-
对于 RDS for PostgreSQL 数据库实例:修改数据库参数组。
-
对于多可用集群:修改数据库集群参数组。
将
rds.iam_auth_for_replication设置为 1。这是一个动态参数,无需重启即可立即生效。注意
多可用区集群仅使用数据库集群参数组。在多可用区集群中无法修改各个实例参数组。
-
-
连接到您的数据库并向您的复制用户授予必要的角色:
以下 SQL 命令授予对复制连接启用 IAM 身份验证所需的角色:
-- Grant IAM authentication role GRANT rds_iam TO replication_user_name; -- Grant replication privileges ALTER USER replication_user_name WITH REPLICATION;完成这些步骤后,指定的用户必须对复制连接使用 IAM 身份验证。
重要
启用该功能后,同时拥有
rds_iam和rds_replication角色的用户必须对复制连接使用 IAM 身份验证。无论角色是直接分配给用户还是通过其他角色继承,都是如此。
对复制连接禁用 IAM 身份验证
您可以使用下面任何方法对复制连接禁用 IAM 身份验证:
-
在数据库实例的数据库参数组中,或在多可用区集群的数据库集群参数组中,将
rds.iam_auth_for_replication参数设置为 0。 -
或者,您可以在 RDS for PostgreSQL 数据库集群或实例上禁用以下任一功能:
-
通过将
rds.logical_replication参数设置为 0 来禁用逻辑复制 -
禁用 IAM 身份验证
-
禁用该功能后,复制连接可以使用数据库密码进行身份验证。
注意
即使启用了该功能,没有 rds_iam 角色的用户的复制连接也可以使用密码身份验证。
限制和注意事项
对逻辑复制连接使用 IAM 身份验证时,请考虑以下限制和注意事项。
-
此功能仅适用于 RDS for PostgreSQL 版本 11 及更高版本。
-
发布者必须支持对复制连接使用 IAM 身份验证。
-
默认情况下,IAM 身份验证令牌会在 15 分钟后失效。在令牌失效之前,您可能需要刷新长时间运行的复制连接。