

# 为逻辑复制连接配置 IAM 身份验证
为逻辑复制配置 IAM 身份验证

从 RDS for PostgreSQL 版本 11 及更高版本开始，您可以对复制连接使用 Amazon Identity and Access Management（IAM）身份验证。此功能允许您使用 IAM 角色而不是密码来管理数据库访问权限，从而增强安全性。该功能以集群和实例粒度运行，并遵循与标准 IAM 身份验证相同的安全模型。

复制连接的 IAM 身份验证是一项可选功能。要启用此功能，请在数据库集群或数据库参数组中将 `rds.iam_auth_for_replication` 参数设置为 1。由于这是一个动态参数，因此您的数据库集群或实例无需重新启动，这样您就可以在不停机的情况下对现有工作负载使用 IAM 身份验证。启用此功能之前，您必须满足下面列出的先决条件。

**Topics**
+ [

## 先决条件
](#PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Prerequisites)
+ [

## 对复制连接启用 IAM 身份验证
](#PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Enabling)
+ [

## 对复制连接禁用 IAM 身份验证
](#PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Disabling)
+ [

## 限制和注意事项
](#PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Limitations)

## 先决条件


要对复制连接使用 IAM 身份验证，您需要满足以下所有要求：
+ RDS for PostgreSQL 数据库实例必须为版本 11 或更高版本。
+ 在您的发布者 RDS for PostgreSQL 数据库实例上：
  + 启用 IAM 数据库身份验证。有关更多信息，请参阅 [启用和禁用 IAM 数据库身份验证](UsingWithRDS.IAMDBAuth.Enabling.md)。
  + 通过将 `rds.logical_replication` 参数设置为 1，启用逻辑复制。

在逻辑复制中，发布者是向订阅用户数据库发送数据的源 RDS for PostgreSQL 数据库。有关更多信息，请参阅 [为 Amazon RDS for PostgreSQL 执行逻辑复制](PostgreSQL.Concepts.General.FeatureSupport.LogicalReplication.md)。

**注意**  
必须在发布者 RDS for PostgreSQL 数据库实例上同时启用 IAM 身份验证和逻辑复制。如果任一项未启用，则无法对复制连接使用 IAM 身份验证。

## 对复制连接启用 IAM 身份验证


要对复制连接启用 IAM 身份验证，请完成以下步骤。

**对复制连接启用 IAM 身份验证**

1. 验证 RDS for PostgreSQL 数据库集群或实例满足对复制连接使用 IAM 身份验证的所有先决条件。有关更多信息，请参阅 [先决条件](#PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Prerequisites)。

1. 根据 RDS for PostgreSQL 设置配置 `rds.iam_auth_for_replication` 参数：
   + 对于 RDS for PostgreSQL 数据库实例：修改数据库参数组。
   + 对于多可用集群：修改数据库集群参数组。

   将 `rds.iam_auth_for_replication` 设置为 1。这是一个动态参数，无需重启即可立即生效。
**注意**  
多可用区集群仅使用数据库集群参数组。在多可用区集群中无法修改各个实例参数组。

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 分钟后失效。在令牌失效之前，您可能需要刷新长时间运行的复制连接。