

# Aurora MySQL DB クラスターの Kerberos 認証の設定
<a name="aurora-mysql-kerberos-setting-up"></a>

AWS Managed Microsoft AD を使用して、Aurora MySQL DB クラスターに Kerberos 認証を設定します。Kerberos 認証をセットアップするには、次のステップに従います。

**Topics**
+ [ステップ 1: AWS Managed Microsoft AD を使用してディレクトリを作成する](#aurora-mysql-kerberos-setting-up.create-directory)
+ [ステップ 2: (オプション) オンプレミスの Active Directory の信頼を作成する](#aurora-mysql-kerberos-setting-up.create-trust)
+ [ステップ 3: Amazon Aurora 用の IAM ロールを作成する](#aurora-mysql-kerberos-setting-up.CreateIAMRole)
+ [ステップ 4: ユーザーを作成して設定する](#aurora-mysql-kerberos-setting-up.create-users)
+ [ステップ 5: Aurora MySQL DB クラスターを作成または変更する](#aurora-mysql-kerberos-setting-up.create-modify)
+ [ステップ 6: Kerberos 認証を使用する Aurora MySQL ユーザーを作成する](#aurora-mysql-kerberos-setting-up.create-logins)
+ [ステップ 7: MySQL クライアントを設定する](#aurora-mysql-kerberos-setting-up.configure-client)
+ [ステップ 8: (オプション) 大文字と小文字を区別しないユーザー名比較の設定](#aurora-mysql-kerberos-setting-up.case-insensitive)

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

Directory Service はフルマネージド型の Active Directory を AWS クラウド内に作成します。AWS Managed Microsoft AD ディレクトリを作成すると、Directory Service がユーザーに代わって 2 つのドメインコントローラーと 2 つのドメインネームシステム (DNS) サーバーを作成します。ディレクトリサーバーは、VPC 内の異なるサブネットで作成されます。この冗長性によって、障害が発生してもディレクトリにアクセス可能な状態を維持できます。

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

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

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

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

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

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

1. ナビゲーションペインで、[**Directories**]、[**Set up Directory**] の順に選択します。

1. [**AWS Managed Microsoft AD**] を選択します。現状では、AWS Managed Microsoft AD が Amazon RDS で使用できる唯一のオプションです。

1. 次の情報を入力します。  
**ディレクトリの DNS 名**  
ディレクトリの完全修飾名 (例: **corp.example.com**)。  
**ディレクトリの NetBIOS 名**  
ディレクトリの短縮名 (例: **CORP**)。  
**ディレクトリの説明**  
(オプション) ディレクトリの説明。  
**Admin パスワード**  
ディレクトリ管理者のパスワードです。ディレクトリの作成プロセスでは、ユーザー名 Admin とこのパスワードで管理者アカウントが作成されます。  
ディレクトリ管理者のパスワードに「admin」の単語を含めることはできません。パスワードは大文字と小文字を区別し、8-64 文字にします。また、以下の 4 つのカテゴリうち 3 つから少なくとも 1 文字を含める必要があります。  
   + 小文字 (a～z)
   + 大文字 (A～Z)
   + 数字 (0～9)
   + アルファベット以外の文字 (\$1\$1@\$1\$1%^&\$1\$1-\$1=`\$1\$1()\$1\$1[]:;"'<>,.?/)  
**[Confirm password] (パスワードを確認)**  
管理者パスワードが再入力されました。

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

1.  [**Networking** ] セクションに次の情報を入力し、[**Next**] を選択します。  
**VPC**  
ディレクトリ用の VPC。この同じ VPC に Aurora MySQL DB クラスターを作成します。  
**サブネット**  
ディレクトリサーバーのサブネット。2 つのサブネットは、異なるアベイラビリティーゾーンに存在している必要があります。

1. ディレクトリ情報を確認し、必要な変更を加えます。情報が正しい場合は、[**Create directory (ディレクトリの作成)**] を選択します。  
![\[作成中のディレクトリ詳細ページ\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/images/WinAuth2.png)

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

ディレクトリに関する情報を表示するには、ディレクトリの一覧で、ディレクトリ名を選択します。**[Directory ID]** の値を書き留めます。この値は、Aurora MySQL DB クラスターを作成または変更するときに必要になります。

![\[[ディレクトリの詳細] ページのディレクトリ ID\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/images/WinAuth3.png)


## ステップ 2: (オプション) オンプレミスの Active Directory の信頼を作成する
<a name="aurora-mysql-kerberos-setting-up.create-trust"></a>

独自のオンプレミスの Microsoft Active Directory を使用する予定がない場合は、[ステップ 3: Amazon Aurora 用の IAM ロールを作成する](#aurora-mysql-kerberos-setting-up.CreateIAMRole) に進みます。

オンプレミスの Active Directory を使用して Kerberos 認証を取得するには、オンプレミスの Microsoft Active Directory と (AWS Managed Microsoft AD で作成された) [ステップ 1: AWS Managed Microsoft AD を使用してディレクトリを作成する](#aurora-mysql-kerberos-setting-up.create-directory) ディレクトリとの間に、フォレストの信頼を使用して、信頼するドメイン関係を作成する必要があります。信頼は一方向にすることができます。この場合、AWS Managed Microsoft AD ディレクトリはオンプレミスの Microsoft Active Directory を信頼します。信頼は、両方の Active Directory が相互に信頼する双方向にすることもできます。Directory Service を使用して信頼関係を設定する方法の詳細については、「*AWS Directory Service 管理ガイド*」の「[信頼関係を作成する場合](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_setup_trust.html)」を参照してください。

**注記**  
オンプレミスの Microsoft Active Directory を使用している場合:  
Windows クライアントは、Aurora カスタムエンドポイントを使用すると接続できません。詳細については[Amazon Aurora エンドポイント接続](Aurora.Overview.Endpoints.md)を参照してください。
[グローバルデータベース](aurora-global-database.md)の場合:  
Windows クライアントは、グローバルデータベースのプライマリ AWS リージョン リージョンにあるインスタンスエンドポイントまたはクラスターエンドポイントを使用する場合に限り接続できます。
Windows クライアントは、セカンダリ AWS リージョン のクラスターエンドポイントを使用して接続できません。

オンプレミスの Microsoft Active Directory ドメイン名に、新しく作成された信頼関係に対応する DNS サフィックスルーティングが含まれていることを確認してください。次のスクリーンショットは、例を示しています。

![\[作成された信頼に対応している DNS ルーティング\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/images/kerberos-auth-trust.png)


## ステップ 3: Amazon Aurora 用の IAM ロールを作成する
<a name="aurora-mysql-kerberos-setting-up.CreateIAMRole"></a>

Amazon Aurora が Directory Service を呼び出すには、マネージド IAM ポリシー `AmazonRDSDirectoryServiceAccess` を使用する AWS Identity and Access Management (IAM) ロールが必要です。このロールにより、Aurora は Directory Service を呼び出すことができます。

AWS マネジメントコンソール を使用して DB クラスターを作成し、`iam:CreateRole` アクセス許可を持っている場合、コンソールではこのロールを自動的に作成します。この場合、ロール名は `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)」を参照してください。

マネージド IAM ポリシー `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="aurora-mysql-kerberos-setting-up.create-users"></a>

Active Directory ユーザーとコンピュータツールを使用してユーザーを作成できます。このツールは、Active Directory Domain Services ツールおよび Active Directory Lightweight Directory Services ツールの一部です。ユーザーとは、ディレクトリにアクセスできる個別の人物、またはエンティティのことです。

Directory Service ディレクトリにユーザーを作成するには、Directory Service ディレクトリに接続している Microsoft Windows ベースのオンプレミスまたは Amazon EC2 インスタンスを使用します。ユーザーを作成する権限を持つユーザーとして、インスタンスにログインする必要があります。詳細については、*AWS Managed Microsoft AD Directory Service 管理ガイド*の[AWS のユーザーとグループの管理](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/creating_ad_users_and_groups.html)を参照してください。

## ステップ 5: Aurora MySQL DB クラスターを作成または変更する
<a name="aurora-mysql-kerberos-setting-up.create-modify"></a>

ディレクトリ用の Aurora MySQL DB クラスターを作成または変更します。コンソール、AWS CLI、RDS API を使用して DB クラスターとディレクトリを関連付けることができます。このタスクを実行するには、以下の 2 つの方法があります。
+ コンソール、[create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) CLI コマンド、または [CreateDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html) RDS API オペレーションを使用して、新しい Aurora MySQL DB クラスターを作成します。

  手順については、「[Amazon Aurora DB クラスターの作成](Aurora.CreateInstance.md)」を参照してください。
+ コンソール、[modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) CLI コマンド、または [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) RDS API オペレーションを使用して、既存の Aurora MySQL DB クラスターを変更します。

  手順については、「[Amazon Aurora DB クラスターの変更](Aurora.Modifying.md)」を参照してください。
+ コンソール、[restore-db-cluster-from-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-from-snapshot.html) CLI コマンド、または [RestoreDBClusterFromSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterFromSnapshot.html) RDS API オペレーションを使用して、DB スナップショットから Aurora MySQL DB クラスターを復元します。

  手順については、「[DB クラスタースナップショットからの復元](aurora-restore-snapshot.md)」を参照してください。
+ コンソール、[restore-db-cluster-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-to-point-in-time.html) CLI コマンド、[RestoreDBClusterToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html) RDS API オペレーションを使用して、Aurora MySQL DB クラスターをポイントインタイムに復元します。

  手順については、「[DB クラスターを指定の時点の状態に復元する](aurora-pitr.md)」を参照してください。

Kerberos 認証は、VPC 内の Aurora MySQL DB クラスターでのみサポートされています。DB クラスターは、ディレクトリと同じ VPC または異なる VPC 内にあります。DB クラスターの VPC には、ディレクトリへのアウトバウンド通信を許可する VPC セキュリティグループが必要です。

### コンソール
<a name="aurora-mysql-kerberos-setting-up.create-modify.CON"></a>

DB クラスターを作成、変更または復元するためにコンソールを使用する場合は、[**データベースの認証**] セクションの [**Kerberos 認証**] を選択します。[**ディレクトリの参照**] を選択してディレクトリを選択するか、[**新しいディレクトリの作成**] を選択します。

![\[DB クラスター作成時の Kerberos 認証設定\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/images/kerberos-auth-create-cluster.png)


### AWS CLI
<a name="aurora-mysql-kerberos-setting-up.create-modify.CLI"></a>

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

例えば、以下の CLI コマンドはディレクトリを使用するように DB クラスターを変更します。

Linux、macOS、Unix の場合:

```
aws rds modify-db-cluster \
    --db-cluster-identifier mydbcluster \
    --domain d-ID \
    --domain-iam-role-name role-name
```

Windows の場合:

```
aws rds modify-db-cluster ^
    --db-cluster-identifier mydbcluster ^
    --domain d-ID ^
    --domain-iam-role-name role-name
```

**重要**  
DB クラスターを変更して Kerberos 認証を有効にした場合、変更後、その DB クラスターを再起動します。

## ステップ 6: Kerberos 認証を使用する Aurora MySQL ユーザーを作成する
<a name="aurora-mysql-kerberos-setting-up.create-logins"></a>

DB クラスターは、AWS Managed Microsoft AD ドメインに接続されています。したがって、このドメインの Active Directory ユーザーから Aurora MySQL ユーザーを作成できます。データベースへのアクセス許可は、これらのユーザーに対して付与および取り消される標準の Aurora MySQL アクセス許可を通じて管理されます。

Active Directory ユーザーに対して Aurora MySQL での認証を許可できます。これを行うには、まず Amazon RDS プライマリユーザーの認証情報を使用して、他の DB クラスターと同様に Aurora MySQL DB クラスターに接続します。ログインしたら、次に示すように、Aurora MySQL で Kerberos 認証された外部認証ユーザーを作成します。

```
CREATE USER user_name@'host_name' IDENTIFIED WITH 'authentication_kerberos' BY 'realm_name';
```
+ `user_name` をユーザー名で置き換えます。ドメインのユーザー (人とアプリケーションの両方) は、Kerberos 認証を使用して、クライアントマシンを結合したドメインから DB クラスターに接続できるようになりました。
+ `host_name` をホスト名に置き換えます。ワイルドカードとして `%` を使用できます。ホスト名には、特定の IP アドレスを使用することもできます。
+ *realm\$1name* をドメインディレクトリの領域名に置き換えます。領域名は、通常 `CORP.EXAMPLE.COM` のように大文字の DNS ドメイン名と同じです。領域とは、同じ Kerberos Key Distribution Center を使用するシステムのグループです。

次の例では、領域名 `MYSQL.LOCAL` の Active Directory に対して認証する名前 `Admin` のデータベースユーザーを作成します。

```
CREATE USER Admin@'%' IDENTIFIED WITH 'authentication_kerberos' BY 'MYSQL.LOCAL';
```

### 既存の Aurora MySQL ログインの変更
<a name="aurora-mysql-kerberos.modify-login"></a>

また、次の構文を使用して、既存の Aurora MySQL ログインを Kerberos 認証を使用するように変更できます。

```
ALTER USER user_name IDENTIFIED WITH 'authentication_kerberos' BY 'realm_name';
```

## ステップ 7: MySQL クライアントを設定する
<a name="aurora-mysql-kerberos-setting-up.configure-client"></a>

MySQL クライアントを設定するには、次のステップを実行します。

1. ドメインを指す `krb5.conf` ファイル (または同等) を作成します。

1. クライアントホストと Directory Service 間でトラフィックが流れることを確認します。次の目的で Netcat などのネットワークユーティリティを使用します。
   + ポート 53 の DNS 経由のトラフィックを確認します。
   + ポート 53 および Kerberos の TCP/UDP 上のトラフィックを確認します。これには、Directory Service の場合ポート 88 および 464 が含まれます。

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

以下は、AWS Managed Microsoft AD の `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
```

以下は、オンプレミスの Microsoft Active Directory 向けの `krb5.conf` の内容のサンプルです。

```
[libdefaults]
 default_realm = EXAMPLE.COM
[realms]
 EXAMPLE.COM = {
  kdc = example.com
  admin_server = example.com
 }
 ONPREM.COM = {
  kdc = onprem.com
  admin_server = onprem.com
 }
[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM
 .onprem.com = ONPREM.COM
 onprem.com = ONPREM.COM  
 .rds.amazonaws.com = EXAMPLE.COM
 .amazonaws.com.rproxy.govskope.us.cn = EXAMPLE.COM
 .amazon.com = EXAMPLE.COM
```

## ステップ 8: (オプション) 大文字と小文字を区別しないユーザー名比較の設定
<a name="aurora-mysql-kerberos-setting-up.case-insensitive"></a>

デフォルトでは、MySQL データベースユーザー名の大文字と小文字は、Active Directory ログインのものと一致する必要があります。ただし、`authentication_kerberos` プラグインでは、大文字と小文字を区別しないユーザー名の比較が可能になりました。そのためには、`authentication_kerberos_caseins_cmp` DB クラスターパラメーターを `true` に設定します。

**大文字と小文字を区別しないユーザー名比較を使用するには**

1. カスタム DB クラスターのパラメータグループを作成します。「[Amazon Aurora での DB クラスターパラメータグループの作成](USER_WorkingWithParamGroups.CreatingCluster.md)」の手順に従います。

1. 新しいパラメータグループを編集して、`authentication_kerberos_caseins_cmp` の値を `true` に設定します。「[Amazon Aurora での DB クラスターパラメータグループのパラメータの変更](USER_WorkingWithParamGroups.ModifyingCluster.md)」の手順に従います。

1. DB クラスターパラメータグループを Aurora MySQL DB クラスターに関連付けます。「[Amazon Aurora での DB クラスターパラメータグループと DB クラスターの関連付け](USER_WorkingWithParamGroups.AssociatingCluster.md)」の手順に従います。

1. DB クラスターを再起動します。