

# 論理レプリケーション接続の IAM 認証の設定
<a name="PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication"></a>

RDS for PostgreSQL バージョン 11 以降では、レプリケーション接続に AWS Identity and Access Management (IAM) 認証を使用できます。この機能は、パスワードの代わりに IAM ロールを使用してデータベースアクセスを管理できるようにすることで、セキュリティを強化します。クラスターとインスタンスの両方の粒度で動作し、標準の IAM 認証と同じセキュリティモデルに従います。

レプリケーション接続の IAM 認証はオプトイン機能です。有効にするには、DB クラスターまたは DB パラメータグループの `rds.iam_auth_for_replication` パラメータを 1 に設定します。これは動的パラメータであるため、DB クラスターまたはインスタンスを再起動する必要がなく、ダウンタイムなしで既存のワークロードで 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)

## 前提条件
<a name="PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Prerequisites"></a>

レプリケーション接続に IAM 認証を使用するには、以下のすべての要件を満たす必要があります。
+ RDS for PostgreSQL DB インスタンスはバージョン 11 以降である必要があります。
+ パブリッシャー RDS for PostgreSQL DB インスタンスの場合:
  + 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 DB インスタンスで IAM 認証と論理レプリケーションの両方を有効にする必要があります。どちらかが有効になっていない場合、レプリケーション接続に IAM 認証を使用することはできません。

## レプリケーション接続の IAM 認証の有効化
<a name="PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Enabling"></a>

レプリケーション接続の IAM 認証を有効にするには、次の手順を実行します。

**レプリケーション接続の IAM 認証を有効にするには**

1. RDS for PostgreSQL DB クラスターまたはインスタンスが、レプリケーション接続による IAM 認証のすべての前提条件を満たしていることを確認します。詳細については、「[前提条件](#PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Prerequisites)」を参照してください。

1. RDS for PostgreSQL の設定に基づいて `rds.iam_auth_for_replication` パラメータを設定します。
   + RDS for PostgreSQL DB インスタンスの場合: DB パラメータグループを変更します。
   + マルチ AZ クラスターの場合: DB クラスターパラメータグループを変更します。

   `rds.iam_auth_for_replication` を 1 に設定します。これは、再起動を必要とせずにすぐに有効になる動的パラメータです。
**注記**  
マルチ AZ クラスターは、DB クラスターパラメータグループのみを使用します。マルチ AZ クラスターでは、個々のインスタンスパラメータグループを変更することはできません。

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 認証の無効化
<a name="PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Disabling"></a>

レプリケーション接続の IAM 認証を無効にするには、次のいずれかの方法を使用します。
+ DB インスタンスの DB パラメータグループまたはマルチ AZ クラスターの DB クラスターパラメータグループで、`rds.iam_auth_for_replication` パラメータを 0 に設定します。
+ または、RDS for PostgreSQL DB クラスターまたはインスタンスで次のいずれかの機能を無効にすることもできます。
  + `rds.logical_replication` パラメータを 0 に設定して論理レプリケーションを無効にする
  + IAM 認証の無効化

この機能を無効にすると、レプリケーション接続では認証にデータベースパスワードを使用できるようになります。

**注記**  
`rds_iam` ロールを持たないユーザーのレプリケーション接続は、この機能が有効になっている場合でもパスワード認証を使用できます。

## 制約事項と考慮事項
<a name="PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Limitations"></a>

論理レプリケーション接続に IAM 認証を使用する場合、以下の制限と考慮事項を考慮してください。
+ この機能は、RDS for PostgreSQL バージョン 11 以降でのみ使用できます。
+ パブリッシャーは、レプリケーション接続の IAM 認証をサポートする必要があります。
+ IAM 認証トークンは、デフォルトで 15 分後に期限切れになります。トークンの有効期限が切れる前に、長時間実行されるレプリケーション接続を更新する必要がある場合があります。