

# Amazon RDS for Db2 DB インスタンスの Kerberos 認証を設定する
<a name="db2-kerberos-setting-up"></a>

AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) を使用して、RDS for Db2 DB インスタンスの Kerberos 認証を設定します。Kerberos 認証を設定するには、次の手順に従います。

**Topics**
+ [ステップ 1: AWS Managed Microsoft AD を使用してディレクトリを作成する](#db2-kerberos-setting-up.create-directory)
+ [ステップ 2: 信頼関係を作成する](#db2-kerberos-setting-up-create-forest-trust)
+ [ステップ 3: Amazon RDS が Directory Service にアクセスするための IAM ロールを作成する](#db2-kerberos-setting-up-create-iam-role)
+ [ステップ 4: ユーザーを作成して設定する](#db2-kerberos-setting-up.create-users)
+ [ステップ 5: AWS Managed Microsoft AD で RDS for Db2 管理者グループを作成する](#db2-kerberos-setting-up-vpc-peering)
+ [ステップ 6: DB パラメータを変更する](#db2-kerberos-setting-up-modify-db-parameter)
+ [ステップ 7: RDS for Db2 DB インスタンスを作成または変更する](#db2-kerberos-setting-up-create-modify)
+ [ステップ 8: PowerShell で Active Directory グループ SID を取得する](#db2-kerberos-setting-up-retrieve-ad-group-sid)
+ [ステップ 9: RDS for Db2 DB インスタンスに SID と GroupName のマッピングを追加する](#db2-kerberos-setting-up-add-sid-group-mapping)
+ [ステップ 10: Db2 クライアントを設定する](#db2-kerberos-setting-up-create-logins)

## ステップ 1: AWS Managed Microsoft AD を使用してディレクトリを作成する
<a name="db2-kerberos-setting-up.create-directory"></a>

Directory Service は、Active Directory でフルマネージド AWS クラウド を作成します。AWS Managed Microsoft AD ディレクトリを作成すると、Directory Service が 2 つのドメインコントローラーと DNS サーバーを作成します。ディレクトリサーバーは、VPC 内の異なるサブネットで作成されます。この冗長性により、障害が発生してもディレクトリがアクセスできるようになります。

 AWS Managed Microsoft AD ディレクトリを作成すると、Directory Service がユーザーに代わって自動的に以下のタスクを実行します。
+ VPC 内で Active Directory を設定します。
+ ユーザー名 `Admin` と指定されたパスワードで、ディレクトリ管理者アカウントを作成します。このアカウントを使用してディレクトリを管理します。
**重要**  
このパスワードは必ず保管してください。Directory Service にはこのパスワードは保存されず、復元やリセットもできません。
+ ディレクトリコントローラー用セキュリティグループを作成します。セキュリティグループは、RDS for Db2 DB インスタンスとの通信を許可する必要があります。

AWS Directory Service for Microsoft Active Directory を起動すると、AWS は組織単位 (OU) を作成します。OU にはディレクトリのオブジェクトがすべて含まれています。この OU はドメインルートにあります。OU にはディレクトリを作成する際に入力した NetBIOS 名があります。ドメインルートは AWS が所有し、管理します。

`Admin` ディレクトリに作成された AWS Managed Microsoft AD アカウントには、OU に対して頻繁に実行される管理行為の権限が含まれています。
+ ユーザーを作成、更新、削除する。
+ ファイルやプリントサーバーなどのドメインにリソースを追加して、追加したリソースへのアクセス許可を OU のユーザーとグループに割り当てる。
+ 追加の OU やコンテナを作成する。
+ 権限を委譲する。
+ 削除したオブジェクトを Active Directory のごみ箱から元に戻す。
+ Directory Service で Windows PowerShell 向けの Active Directory およびドメインネームサービス (DNS) モジュールを実行する。

`Admin` アカウントには、ドメイン全体に関係するアクティビティを実行する権限もあります。
+ DNS 設定 (レコード、ゾーン、フォワーダーの追加、削除、または更新) を管理する。
+ DNS イベントログを参照する。
+ セキュリティイベントログを参照する。

**AWS Managed Microsoft AD でディレクトリを作成するには**

1. AWS マネジメントコンソール にサインインし、Directory Service コンソール ([https://console.aws.amazon.com/directoryservicev2/](https://console.aws.amazon.com/directoryservicev2/))を開きます。

1. **[ディレクトリの設定]** を選択します。

1. **[AWS Managed Microsoft AD]** を選択します。現在、Amazon RDS での使用がサポートされているのは AWS Managed Microsoft AD のオプションのみです。

1. ******[次へ]****** を選択します。

1. ******[ディレクトリ情報の入力]****** ページに、以下の情報を指定します。
   + **エディション** - 目的の要件を満たすエディションを選択します。
   + **ディレクトリ DNS 名**** **- ディレクトリの完全修飾名 (例: `corp.example.com`)。
   + **ディレクトリ NetBIOS 名**** **- (オプション) ディレクトリの短縮名 (例: `CORP`)。
   + **ディレクトリの説明** - (オプション) ディレクトリの説明。
   + **管理者パスワード**** **– ディレクトリ管理者のパスワード。ディレクトリの作成プロセスでは、ユーザー名 `Admin` とこのパスワードを使用して管理者アカウントが作成されます。

     ディレクトリ管理者のパスワードには、「admin」の単語を含めることはできません。パスワードは大文字と小文字を区別し、8-64 文字にします。また、以下の 4 つのカテゴリうち 3 つから少なくとも 1 文字を含める必要があります。
     + 小文字 (a～z) 
     + 大文字 (A～Z) 
     + 数字 (0～9) 
     + 英数字以外の文字 (\~\!@\#$%^&\*\_-\+=`\|\\(){}[]:;"'<>,.?/) 
     + パスワードの確認 - 管理者パスワードを再入力します。
**重要**  
このパスワードは必ず保管してください。Directory Service にはこのパスワードは保存されず、復元やリセットもできません。

1. [**Next (次へ)**] を選択します。

1. [**VPC とサブネットの選択**] ページで、以下の情報を指定します。
   + **VPC** - ディレクトリの VPC を選択します。RDS for Db2 DB インスタンスは、この同じ VPC または別の VPC で作成できます。
   + **サブネット** - ディレクトリサーバーのサブネットを選択します。2 つのサブネットは、異なるアベイラビリティーゾーンに存在している必要があります。

1. [**Next (次へ)**] を選択します。

1. ディレクトリの情報を確認します。変更が必要な場合は、[**戻る**] を選択し、変更を行います。情報が正しい場合は、[**Create directory (ディレクトリの作成)**] を選択します。  
![Directory Service コンソールでのディレクトリ作成時の [確認と作成] ウィンドウ。](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/db2-create-ADS-directory.png)

ディレクトリが作成されるまで、数分かかります。正常に作成されると、[**Status**] 値が [**Active**] に変わります。

ディレクトリに関する情報を表示するには、**[ディレクトリ ID]** で、ディレクトリ ID を選択します。**ディレクトリ ID** 値を書き留めます。RDS for Db2 DB インスタンスを作成または変更する際に、この値が必要です。

![Directory Service コンソールの [ディレクトリの詳細] セクションと [ディレクトリ ID]。](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/db2-ADS-directory-details.png)


## ステップ 2: 信頼関係を作成する
<a name="db2-kerberos-setting-up-create-forest-trust"></a>

AWS Managed Microsoft AD のみを使用する予定の場合は、「[ステップ 3: Amazon RDS が Directory Service にアクセスするための IAM ロールを作成する](#db2-kerberos-setting-up-create-iam-role)」に進みます。

セルフマネージド Active Directory を使用して Kerberos 認証を有効にするには、セルフマネージド Active Directory との間にフォレストの信頼関係を作成する必要があります。フォレストの信頼とは、Microsoft AD およびセルフマネージド Active Directory と、前のステップで作成した AWS Managed Microsoft AD との間の信頼関係です。信頼は、両方の Active Directory が相互に信頼する双方向にすることもできます。Directory Service を使用してフォレストの信頼を設定する方法の詳細については、「*AWS Directory Service Administration Guide*」の「[When to create a trust relationship](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_setup_trust.html)」を参照してください。

## ステップ 3: Amazon RDS が Directory Service にアクセスするための IAM ロールを作成する
<a name="db2-kerberos-setting-up-create-iam-role"></a>

Amazon RDS が Directory Service を呼び出すには、AWS アカウント にマネージド IAM ポリシー `AmazonRDSDirectoryServiceAccess` を使用する IAM ロールが必要です。このロールにより、Amazon RDS は Directory Service への呼び出しを行うことができます。

AWS マネジメントコンソール を使用して DB インスタンスを作成し、コンソールユーザーが `iam:CreateRole` アクセス許可を持っている場合、コンソールは必要な IAM ロールを自動的に作成します。この場合、ロール名は `rds-directoryservice-kerberos-access-role` です。それ以外の場合は、IAM ロールを手動で作成する必要があります。IAM ロールを作成する場合、[`Directory Service`] を選択し、それに AWS マネージドポリシー `AmazonRDSDirectoryServiceAccess` をアタッチします。

サービス用の IAM ロールを作成する方法の詳細については、「*IAM ユーザーガイド*」の「[AWS のサービスにアクセス許可を委任するロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)」を参照してください。

**注記**  
RDS for Microsoft SQL Server の Windows 認証に使用される IAM ロールは、RDS for Db2 では使用できません。

`AmazonRDSDirectoryServiceAccess` マネージドポリシーを使用する代わりに、必要なアクセス許可を使用してポリシーを作成することもできます。これを行うには、IAM ロールに次の IAM 信頼ポリシーが必要です。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "directoryservice.rds.amazonaws.com",
          "rds.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

また、ロールには、以下の IAM ロールポリシーも必要です。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "ds:DescribeDirectories",
        "ds:AuthorizeApplication",
        "ds:UnauthorizeApplication",
        "ds:GetAuthorizedApplicationDetails"
      ],
    "Effect": "Allow",
    "Resource": "*"
    }
  ]
}
```

------

## ステップ 4: ユーザーを作成して設定する
<a name="db2-kerberos-setting-up.create-users"></a>

Active Directory Users and Computers ツールを使用してユーザーを作成できます。これは、Active Directory Domain Services および Active Directory Lightweight Directory Services ツールのいずれかです。詳細については、Microsoft ドキュメントの「[Active Directory ドメインにユーザーとコンピューターを追加する](https://learn.microsoft.com/en-us/troubleshoot/windows-server/identity/create-an-active-directory-server#add-users-and-computers-to-the-active-directory-domain)」を参照してください。この場合、ユーザーは個人またはその他のエンティティです。例えば、ドメインの一部であり、その ID がディレクトリで管理されているコンピュータなどです。

Directory Service ディレクトリにユーザーを作成するには、Directory Service ディレクトリのメンバーである Windows ベースの Amazon EC2 インスタンスに接続している必要があります。同時に、ユーザーを作成する権限を持つユーザーとしてサインインしていなければなりません。詳細については、*AWS Directory Service 管理ガイド*の「[ユーザーの作成](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups_create_user.html)」を参照してください。

## ステップ 5: AWS Managed Microsoft AD で RDS for Db2 管理者グループを作成する
<a name="db2-kerberos-setting-up-vpc-peering"></a>

RDS for Db2 は、マスターユーザー、または 2 つの Amazon RDS 予約ユーザー `rdsdb` と `rdsadmin` の Kerberos 認証をサポートしていません。代わりに、AWS Managed Microsoft AD で `masterdba` という名前の新しいグループを作成する必要があります。詳細については、Microsoft ドキュメントの「[Create a Group Account in Active Directory](https://learn.microsoft.com/en-us/windows/security/operating-system-security/network-security/windows-firewall/create-a-group-account-in-active-directory)」を参照してください。このグループに追加するユーザーには、マスターユーザー権限があります。

Kerberos 認証を有効にすると、マスターユーザーは `masterdba` ロールを失います。その結果、Kerberos 認証を無効にしない限り、マスターユーザーはインスタンスのローカルユーザーグループのメンバーシップにアクセスできなくなります。パスワードログインでマスターユーザーを引き続き使用するには、マスターユーザーと同じ名前のユーザーを AWS Managed Microsoft AD に作成します。続いて、ユーザーをグループ `masterdba` に追加します。

## ステップ 6: DB パラメータを変更する
<a name="db2-kerberos-setting-up-modify-db-parameter"></a>

AWS Managed Microsoft AD のみを使用する予定の場合は、「[ステップ 7: RDS for Db2 DB インスタンスを作成または変更するステップ 7: DB インスタンスを作成または変更する](#db2-kerberos-setting-up-create-modify)」に進みます。

セルフマネージド Active Directory を使用して Kerberos 認証を有効にするには、パラメータグループのパラメータ `rds.active_directory_configuration` を `AWS_MANAGED_AD_WITH_TRUST` に設定する必要があります。デフォルトでは、このパラメータは AWS Managed Microsoft AD を使用する場合にのみ `AWS_MANAGED_AD` に設定されます。

DB パラメータの変更については、「[パラメータグループのパラメータの変更](db2-supported-parameters.md#db2-modifying-parameter-group-parameters)」を参照してください。

## ステップ 7: RDS for Db2 DB インスタンスを作成または変更する
<a name="db2-kerberos-setting-up-create-modify"></a>

ディレクトリで使用する RDS for Db2 DB インスタンスを作成または変更します。AWS マネジメントコンソール、AWS CLI、または RDS API を使用して DB インスタンスとディレクトリを関連付けることができます。これは、次のいずれかの方法で行うことができます。
+ コンソール、[https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) コマンド、または [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) API オペレーションを使用して新しい RDS for Db2 DB インスタンスを作成します。手順については、「[Amazon RDS DB インスタンスの作成](USER_CreateDBInstance.md)」を参照してください。
+ コンソール、[https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) コマンド、または [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) API オペレーションを使用して、既存の RDS for Db2 DB インスタンスを変更します。手順については、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。
+ コンソール、[https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) コマンド、または [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html) API オペレーションを使用して、DB スナップショットから RDS for Db2 DB インスタンスを復元します。手順については、「[DB インスタンスへの復元](USER_RestoreFromSnapshot.md)」を参照してください。
+ コンソール、[https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) コマンド、または [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) API オペレーションを使用して、RDS for Db2 DB インスタンスを特定時点に復元します。手順については、「[Amazon RDS の DB インスタンスを特定の時点に復元する](USER_PIT.md)」を参照してください。

Kerberos 認証は、VPC 内の RDS for Db2 DB インスタンスでのみサポートされています。DB インスタンスは、ディレクトリと同じ VPC または異なる VPC 内にあります。DB インスタンスがディレクトリと通信できるように、ディレクトリの VPC 内の出力を許可するセキュリティグループを使用する必要があります。

### コンソール
<a name="db2-kerberos-setting-up-create-modify-console"></a>

DB インスタンスを作成、変更、復元するためにコンソールを使用する場合は、**[データベース認証]** セクションの **[パスワードと Kerberos 認証]** を選択します。次に、[**ディレクトリのブラウジング**] を選択します。Directory Service を使用するには、ディレクトリを選択するか、**[ディレクトリを作成]** を選択します。

![Amazon RDS コンソールの [データベース認証] セクション。[パスワードと Kerberos 認証] が選択されています。](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/db2-database-authentication-directory.png)


### AWS CLI
<a name="db2-kerberos-setting-up-create-modify-cli"></a>

AWS CLI を使用する場合は、DB インスタンスが、作成したディレクトリを使用できるように、以下のパラメータが必要です。
+ `--domain` パラメータには、ディレクトリの作成時に生成されたドメイン識別子 ("`d-*`" 識別子) を使用します。
+ `--domain-iam-role-name` パラメータには、マネージド IAM ポリシー `AmazonRDSDirectoryServiceAccess` を使用する作成済みのロールを使用します。

以下の例では、ディレクトリを使用するように DB インスタンスを変更します。例の、以下のプレースホルダをユーザー自身の値に置き換えます。
+ {{db\_instance\_name}} - RDS for Db2 DB インスタンスの名前。
+ {{directory\_id}} - 作成した AWS Directory Service for Microsoft Active Directory ディレクトリの ID。
+ {{role\_name}} - 作成した IAM ロールの名前。

```
aws rds modify-db-instance --db-instance-identifier {{db_instance_name}} --domain d-{{directory_id}} --domain-iam-role-name {{role_name}} 
```

**重要**  
Kerberos 認証を有効化するために DB インスタンスを変更する場合は、変更後に DB インスタンスを再起動します。

## ステップ 8: PowerShell で Active Directory グループ SID を取得する
<a name="db2-kerberos-setting-up-retrieve-ad-group-sid"></a>

セキュリティ ID (SID) は、セキュリティプリンシパルまたはセキュリティグループを一意に識別します。セキュリティグループまたはアカウントを Active Directory で作成すると、Active Directory は SID をグループに割り当てます。Active Directory から AD セキュリティグループの SID を取得するには、Active Directory ドメインの一部である Windows クライアントマシンで `Get-ADGroup` コマンドレットを使用します。`Identity` パラメータは、SID を取得する対象である Active Directory グループの名前を指定します。

次の例では、Active Directory グループ `adgroup1` の SID を返します。

```
C:\Users\Admin> Get-ADGroup -Identity adgroup1 | select SID

             SID
-----------------------------------------------
S-1-5-21-3168537779-1985441202-1799118680-1612
```

データベースに関連するすべてのグループに対して、このマッピングを生成する必要があります。

## ステップ 9: RDS for Db2 DB インスタンスに SID と GroupName のマッピングを追加する
<a name="db2-kerberos-setting-up-add-sid-group-mapping"></a>

前のステップで作成した SID と GroupName のマッピングを RDS for Db2 DB インスタンスに追加する必要があります。マッピングごとに、次のストアドプロシージャを呼び出します。{{SID}} と {{group\_name}} を独自の情報に置き換えます。

```
db2 connect to rdsadmin
db2 "call rdsadmin.set_sid_group_mapping(?, '{{SID}}','{{group_name}}')"
```

詳細については、「[rdsadmin.set\_sid\_group\_mapping](db2-sp-granting-revoking-privileges.md#db2-sp-set-sid-group-mapping)」を参照してください。

タスクのステータスを確認する方法については、「[rdsadmin.get\_task\_status](db2-user-defined-functions.md#db2-udf-get-task-status)」を参照してください。

## ステップ 10: Db2 クライアントを設定する
<a name="db2-kerberos-setting-up-create-logins"></a>

**Db2 クライアントを設定するには**

1. ドメインを指す **/etc/krb5.conf** ファイル (または同等) を作成します。
**注記**  
Windows オペレーティングシステムの場合は、**C:\\windows\\krb5.ini** ファイルを作成します。

1. クライアントホストと Directory Service 間でトラフィックが流れることを確認します。以下のタスクには、Netcat などのネットワークユーティリティを使用します。

   1. ポート 53 の DNS 経由のトラフィックを確認します。

   1. ポート 53 および Kerberos の TCP/UDP 上のトラフィックを確認します。これには、Directory Service の場合ポート 88 および 464 が含まれます。

1. データベースポートを介してクライアントホストと DB インスタンス間でトラフィックが流れることを確認します。コマンド `db2` を使用して、データベースに接続してアクセスできます。

次の例は、AWS Managed Microsoft AD の /etc/krb5.conf ファイルの内容です。

```
[libdefaults]
default_realm = EXAMPLE.COM
[realms]
EXAMPLE.COM = {
kdc = example.com
admin_server = example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
```