

# PostgreSQL を Kerberos 認証と接続する
<a name="postgresql-kerberos-connecting"></a>

pgAdmin インターフェイスまたは psql などのコマンドラインインターフェイスを使用して、Kerberos 認証で PostgreSQL に接続できます。接続の詳細については、「[PostgreSQL データベースエンジンを実行する DB インスタンスへの接続](USER_ConnectToPostgreSQLInstance.md) 」を参照してください。エンドポイント、ポート番号、および接続に必要なその他の詳細情報を取得する方法について詳細は、「[PostgreSQL DB インスタンスへの接続](CHAP_GettingStarted.CreatingConnecting.PostgreSQL.md#CHAP_GettingStarted.Connecting.PostgreSQL)」を参照してください。

**注記**  
PostgreSQL の GSSAPI 認証と暗号化は、Kerberos ライブラリ `libkrb5.so` によって実装されます。`postgres_fdw` や `dblink` などの機能は、Kerberos 認証または暗号化によるアウトバウンド接続についても同じライブラリに依存します。

## pgAdmin
<a name="collapsible-section-pgAdmin"></a>

pgAdmin を使用して、PostgreSQL を Kerberos 認証に接続するには、以下のステップを実行します。

1. クライアントコンピュータの pgAdmin アプリケーションを起動します。

1. [**Dashboard**] (ダッシュボード) タブで、[**Add New Server**] (新しいサーバーの追加) を選択します。

1. [**Create - Server (作成 - サーバー)**] ダイアログボックスで、[**General (全般)**] タブに名前を入力し、pgAdmin のサーバーを特定します。

1. **[Connection]** (接続) タブで、 RDS for PostgreSQL データベースから次の情報を入力します。
   + **[Host]** (ホスト) では、のエンドポイントを入力します。RDS for PostgreSQL DB インスタンス。エンドポイントは次のようになります。

     ```
     RDS-DB-instance.111122223333.aws-region.rds.amazonaws.com
     ```

     Windows クライアントからオンプレミスの Microsoft Active Directory に接続するには、ホストエンドポイントで `rds.amazonaws.com` の代わりに AWS Managed Active Directory のドメイン名を使用します。例えば、AWS Managed Active Directory のドメイン名が `corp.example.com` であるとします。この場合、**[Host]** (ホスト) では、エンドポイントは次のように指定されます。

     ```
     RDS-DB-instance.111122223333.aws-region.corp.example.com
     ```
   + [**Port (ポート)**] に、割り当てられたポートを入力します。
   + [**Maintenance database (メンテナンスデータベース)**] に、クライアントが接続する初期データベースの名前を入力します。
   + [**ユーザーネーム**] に、「[ステップ 7: Kerberos プリンシパル用の PostgreSQL ユーザーを作成する](postgresql-kerberos-setting-up.md#postgresql-kerberos-setting-up.create-logins)」で Kerberos 認証用に入力したユーザーネームを入力します。

1. [**保存**] を選択します。

## Psql
<a name="collapsible-section-psql"></a>

psql を使用して、PostgreSQL を Kerberos 認証に接続するには、以下のステップを実行します。

1. コマンドプロンプトで、次のコマンドを実行します。

   ```
   kinit username                
   ```

   *`username`* をユーザー名で置き換えます。プロンプトで Microsoft Active Directory に保存されているユーザーのパスワードを入力します。

1. PostgreSQL DB インスタンスがパブリックにアクセス可能な VPC を使用している場合は、EC2 クライアントの `/etc/hosts` ファイルに、DB インスタンスエンドポイントの IP アドレスを記述します。例えば、次のコマンドは IP アドレスを取得し、それを `/etc/hosts` ファイルに入れます。

   ```
   % dig +short PostgreSQL-endpoint.AWS-Region.rds.amazonaws.com  
   ;; Truncated, retrying in TCP mode.
   ec2-34-210-197-118.AWS-Region.compute.amazonaws.com.
   34.210.197.118 
   
   % echo " 34.210.197.118  PostgreSQL-endpoint.AWS-Region.rds.amazonaws.com" >> /etc/hosts
   ```

   Windows クライアントからオンプレミスの Microsoft Active Directory を使用している場合は、特別なエンドポイントを使用して接続する必要があります。ホストエンドポイントで Amazon ドメイン `rds.amazonaws.com` を使用する代わりに、AWS Managed Active Directory のドメイン名を使用します。

   例えば、AWS Managed Active Directory のドメイン名が `corp.example.com` であるとします。次に、エンドポイントの形式 `PostgreSQL-endpoint.AWS-Region.corp.example.com` を使用して、これを `/etc/hosts` ファイルに配置します。

   ```
   % echo " 34.210.197.118  PostgreSQL-endpoint.AWS-Region.corp.example.com" >> /etc/hosts
   ```

1. 次の psql コマンドを使用して、Active Directory と統合されている PostgreSQL DB インスタンスにログインします。

   ```
   psql -U username@CORP.EXAMPLE.COM -p 5432 -h PostgreSQL-endpoint.AWS-Region.rds.amazonaws.com postgres
   ```

   オンプレミスの Active Directory を使用して、Windows クライアントから PostgreSQL DB クラスターにログインするには、前のステップ (`corp.example.com`) のドメイン名を指定して次の psql コマンドを使用します。

   ```
   psql -U username@CORP.EXAMPLE.COM -p 5432 -h PostgreSQL-endpoint.AWS-Region.corp.example.com postgres
   ```