

# Aurora MySQL での Kerberos 認証の使用
<a name="aurora-mysql-kerberos"></a>

Aurora MySQL DB クラスターに接続するユーザーを Kerberos 認証を使用して認証できるようになりました。そのためには、Kerberos 認証に AWS Directory Service for Microsoft Active Directory を使用するように DB クラスターを設定します。AWS Directory Service for Microsoft Active Directory は AWS Managed Microsoft AD とも呼ばれます。これは、Directory Service で利用できる機能です。詳細については、「*AWS Directory Service 管理ガイド*」の「[Directory Service とは](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html)」を参照してください。

まず、ユーザー認証情報を格納する AWS Managed Microsoft AD ディレクトリを作成します。次に、Active Directory のドメインおよびその他の情報を Aurora MySQL DB クラスターに提供します。ユーザーが Aurora MySQL クラスターを使用して認証を実行すると、認証要求は AWS Managed Microsoft AD ディレクトリに転送されます。

同じディレクトリにすべての認証情報を保持することで時間と労力を節約できます。この方法により、複数の DB クラスターの認証情報を一元的に保存および管理できます。また、ディレクトリを使用することで、セキュリティプロファイル全体を向上できます。

また、独自のオンプレミスの Microsoft Active Directory から認証情報にアクセスできます。そのためには、信頼するドメイン関係を作成して、AWS Managed Microsoft AD ディレクトリがオンプレミスの Microsoft Active Directory を信頼するようにします。これにより、ユーザーは、オンプレミスネットワークのワークロードにアクセスするときと同じ Windows シングルサインオン (SSO) の使い方で、Aurora MySQL クラスターにアクセスできます。

データベースは Kerberos、AWS Identity and Access Management (IAM)、または Kerberos 認証と IAM 認証の両方。ただし、Kerberos 認証と IAM 認証では異なる認証方法が提供されるため、特定のユーザーは、どちらか一方の認証方法のみを使用してデータベースにログインできますが、両方を使用することはできません。IAM 認証の詳細については、「[ の IAM データベース認証](UsingWithRDS.IAMDBAuth.md)」を参照してください。

**Contents**
+ [

## Aurora MySQL DB クラスターの Kerberos 認証の概要
](#aurora-mysql-kerberos-setting-up-overview)
+ [

## Aurora MySQL の Kerberos 認証の制限事項
](#aurora-mysql-kerberos.limitations)
+ [

# Aurora MySQL DB クラスターの Kerberos 認証の設定
](aurora-mysql-kerberos-setting-up.md)
  + [

## ステップ 1: AWS Managed Microsoft AD を使用してディレクトリを作成する
](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-directory)
  + [

## ステップ 2: (オプション) オンプレミスの Active Directory の信頼を作成する
](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-trust)
  + [

## ステップ 3: Amazon Aurora 用の IAM ロールを作成する
](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.CreateIAMRole)
  + [

## ステップ 4: ユーザーを作成して設定する
](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-users)
  + [

## ステップ 5: Aurora MySQL DB クラスターを作成または変更する
](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-modify)
  + [

## ステップ 6: Kerberos 認証を使用する Aurora MySQL ユーザーを作成する
](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-logins)
    + [

### 既存の Aurora MySQL ログインの変更
](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos.modify-login)
  + [

## ステップ 7: MySQL クライアントを設定する
](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.configure-client)
  + [

## ステップ 8: (オプション) 大文字と小文字を区別しないユーザー名比較の設定
](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.case-insensitive)
+ [

# Kerberos 認証を使用した Aurora MySQL への接続
](aurora-mysql-kerberos-connecting.md)
  + [

## Aurora MySQL Kerberos ログインを使用して DB クラスターに接続する
](aurora-mysql-kerberos-connecting.md#aurora-mysql-kerberos-connecting.login)
  + [

## Aurora グローバルデータベースで Kerberos 認証を使用する
](aurora-mysql-kerberos-connecting.md#aurora-mysql-kerberos-connecting.global)
  + [

## RDS for MySQL から Aurora MySQL への移行
](aurora-mysql-kerberos-connecting.md#aurora-mysql-kerberos-connecting.rds)
  + [

## チケットキャッシュの防止
](aurora-mysql-kerberos-connecting.md#aurora-mysql-kerberos.destroy-tickets)
  + [

## Kerberos 認証用のログ記録
](aurora-mysql-kerberos-connecting.md#aurora-mysql-kerberos.logging)
+ [

# ドメイン内の DB クラスターの管理
](aurora-mysql-kerberos-managing.md)
  + [

## ドメインのメンバーシップを理解する
](aurora-mysql-kerberos-managing.md#aurora-mysql-kerberos-managing.understanding)

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

Aurora MySQL DB クラスターに Kerberos 認証を設定するには、以下の一般的なステップを完了します。これらのステップについては、後で詳細を説明します。

1. AWS Managed Microsoft AD を使用して AWS Managed Microsoft AD ディレクトリを作成します。AWS マネジメントコンソール、AWS CLI、Directory Service を使用して、ディレクトリを作成できます。詳しい手順については、AWS Directory Service 管理ガイドの「[AWS Managed Microsoft AD ディレクトリの作成](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started_create_directory.html)」を参照してください。

1. マネージド IAM ポリシー `AmazonRDSDirectoryServiceAccess` を使用する AWS Identity and Access Management (IAM) ロールの作成 このロールにより Amazon Aurora はディレクトリを呼び出すことができます。

   ロールによるアクセスを許可するには、AWS Security Token Service (AWS STS) エンドポイントを AWS アカウントの AWS リージョン でアクティベートする必要があります。AWS STS エンドポイントは、すべての AWS リージョン でデフォルトでアクティブになっているため、他のアクションを実行せずに、エンドポイントを使用することができます。詳細については、*IAM ユーザーガイド*の「[AWS リージョン でのアクティブ化と非アクティブ化](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html#sts-regions-activate-deactivate)」を参照してください。

1. Microsoft Active Directory のツールを使用して、AWS Managed Microsoft AD ディレクトリでユーザーとグループを作成し、設定します。Active Directory にユーザーを作成する方法の詳細については、*AWS 管理ガイド*の「[AWS Directory Service マネージド Microsoft AD でユーザーとグループを管理する](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups.html)」を参照してください。

1. Aurora MySQL DB クラスターを作成または変更する 作成リクエストで CLI または RDS API を使用する場合は、`Domain` パラメータでドメイン識別子を指定します。ディレクトリの作成時に生成された `d-*` 識別子と、作成した IAM ロールの名前を使用します。

   既存の Aurora MySQL DB クラスターを変更して Kerberos 認証を使用する場合は、DB クラスターのドメインパラメータと IAM ロールパラメータを設定します。ドメインディレクトリと同じ VPC で DB クラスターを見つけます。

1. Amazon RDS プライマリユーザー認証情報を使用して、Aurora MySQL DB クラスターに接続します。[ステップ 6: Kerberos 認証を使用する Aurora MySQL ユーザーを作成する](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-logins) の手順に従って、Aurora MySQL でデータベースユーザーを作成します。

   この方法で作成したユーザーは、Kerberos 認証を使用して Aurora MySQL DB クラスターにログインできます。詳細については、「[Kerberos 認証を使用した Aurora MySQL への接続](aurora-mysql-kerberos-connecting.md)」を参照してください。

オンプレミスまたはセルフホスト型の Microsoft Active Directory を使用して Kerberos 認証を取得するには、*フォレストの信頼関係*を確立する必要があります。フォレストの信頼関係とは、2 つのドメイングループ間の信頼関係です。信頼は、一方向または双方向にすることができます。Directory Service を使用してフォレストの信頼関係を設定する方法の詳細については、*AWS Directory Service 管理ガイド*の「[信頼関係を作成する場合](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_setup_trust.html)」を参照してください。

## Aurora MySQL の Kerberos 認証の制限事項
<a name="aurora-mysql-kerberos.limitations"></a>

Aurora MySQL の Kerberos 認証には、以下の制限が適用されます。
+ Kerberos 認証は、Aurora MySQL バージョン 3.03 以降でサポートされています。

  AWS リージョン でのサポートの詳細については、「[Aurora MySQL で Kerberos 認証を使用する](Concepts.Aurora_Fea_Regions_DB-eng.Feature.KerberosAuthentication.md#Concepts.Aurora_Fea_Regions_DB-eng.Feature.KerberosAuthentication.amy)」を参照してください。
+ Aurora MySQL で Kerberos 認証を使用するには、MySQL クライアントまたはコネクタが Unix プラットフォームではバージョン 8.0.26 以上、Windows では 8.0.27 以降を使用する必要があります。それ以外の場合は、クライアント側の `authentication_kerberos_client` プラグインが利用できず、認証できません。
+ AWS Managed Microsoft AD は、Aurora MySQL でのみサポートされています。ただし、同じ AWS リージョン の異なるアカウントによって所有されている共有の Managed Microsoft AD ドメインに、Aurora MySQL DB クラスターを接続できます。

  また、独自のオンプレミスの Active Directory を使用できます。詳細については、「[ステップ 2: (オプション) オンプレミスの Active Directory の信頼を作成する](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-trust)」を参照してください。
+ MySQL クライアントから、または Windows オペレーティングシステムのドライバーから Aurora MySQL クラスターに接続するユーザーを Kerberos を使用して 認証する場合、デフォルトでは、データベースユーザー名の大文字と小文字は Active Directory のユーザーのものと一致する必要があります。例えば、Active Directory のユーザーが `Admin` として表示されている場合、データベースユーザー名は `Admin` である必要があります。

  ただし、`authentication_kerberos` プラグインでは、大文字と小文字を区別しないユーザー名の比較が可能になりました。詳細については、「[ステップ 8: (オプション) 大文字と小文字を区別しないユーザー名比較の設定](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.case-insensitive)」を参照してください。
+ `authentication_kerberos` プラグインをインストールする機能を有効にした後は、リーダー DB インスタンスを再起動する必要があります。
+ `authentication_kerberos` プラグインをサポートしていない DB インスタンスに複製すると、複製が失敗する可能性があります。
+ Aurora グローバルデータベースで Kerberos 認証を使用するには、グローバルデータベース内のすべての DB クラスターに認証を設定する必要があります。
+ ドメイン名は 62 文字未満にする必要があります。
+ Kerberos 認証を有効にした後は、DB クラスターポートを変更しないでください。ポートを変更すると、Kerberos 認証が機能しなくなります。

# 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.ca.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 クラスターを再起動します。

# Kerberos 認証を使用した Aurora MySQL への接続
<a name="aurora-mysql-kerberos-connecting"></a>

エラーを回避するため、Unix プラットフォームではバージョン 8.0.26 以降、Windows では 8.0.27 以降の MySQL クライアントを使用してください。

## Aurora MySQL Kerberos ログインを使用して DB クラスターに接続する
<a name="aurora-mysql-kerberos-connecting.login"></a>

Kerberos 認証で Aurora MySQL に接続するには、[ステップ 6: Kerberos 認証を使用する Aurora MySQL ユーザーを作成する](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-logins) の手順に従って作成したデータベースユーザーとしてログインします。

コマンドプロンプトで、Aurora MySQL DB クラスターに関連付けられているエンドポイントの 1 つに接続します。パスワードの入力を求められたら、そのユーザー名に関連付けられている Kerberos パスワードを入力します。

Kerberos で認証すると、*ticket-granting ticket* (TGT) がまだ存在しない場合は、TGT が生成されます。`authentication_kerberos` プラグインによって TGT を使用して*サービスチケット*を取得し、そのチケットが Aurora MySQL データベースサーバーに提示されます。

MySQL クライアントを使用すると、Windows または Unix を使用して Kerberos 認証によって Aurora MySQL に接続できます。

### Unix
<a name="aurora-mysql-kerberos-connecting.login.unix"></a>

接続するには、次のいずれかの方法を使用します。
+ TGT を手動で入手します。この場合、MySQL クライアントにパスワードを指定する必要はありません。
+ Active Directory ログイン用のパスワードを MySQL クライアントに直接指定します。

クライアント側のプラグインは、Unix プラットフォームでは MySQL クライアントバージョン 8.0.26 以降でサポートされています。

**TGT を手動で取得して接続するには**

1. コマンドラインインターフェイスで、次のコマンドを使用して TGT を取得します。

   ```
   kinit user_name
   ```

1. 次の `mysql` コマンドを使用して、DB クラスターの DB インスタンスエンドポイントにログインします。

   ```
   mysql -h DB_instance_endpoint -P 3306 -u user_name -p
   ```
**注記**  
DB インスタンスでキータブがローテーションされると、認証が失敗する可能性があります。この場合は、`kinit` を再実行して新しい TGT を取得します。

**直接接続するには**

1. コマンドラインインターフェイスで、次の `mysql` コマンドを使用して、DB クラスターの DB インスタンスエンドポイントにログインします。

   ```
   mysql -h DB_instance_endpoint -P 3306 -u user_name -p
   ```

1. Active Directory ユーザーのパスワードを入力します。

### Windows
<a name="aurora-mysql-kerberos-connecting.login.win"></a>

Windows では、通常、認証はログイン時に行われるため、Aurora MySQL DB クラスターに接続するために TGT を手動で取得する必要はありません。データベースユーザー名の大文字と小文字は、Active Directory のユーザーのものと一致する必要があります。例えば、Active Directory のユーザーが `Admin` として表示されている場合、データベースユーザー名は `Admin` である必要があります。

クライアント側のプラグインは、Windows では MySQL クライアントバージョン 8.0.27 以降でサポートされています。

**直接接続するには**
+ コマンドラインインターフェイスで、次の `mysql` コマンドを使用して、DB クラスターの DB インスタンスエンドポイントにログインします。

  ```
  mysql -h DB_instance_endpoint -P 3306 -u user_name
  ```

## Aurora グローバルデータベースで Kerberos 認証を使用する
<a name="aurora-mysql-kerberos-connecting.global"></a>

Aurora MySQL の Kerberos 認証は、Aurora グローバルデータベースでサポートされています。プライマリ DB クラスターの Active Directory を使用してセカンダリ DB クラスターのユーザーを認証するには、Active Directory をセカンダリ AWS リージョン に複製します。プライマリクラスターと同じドメイン ID を使用して、セカンダリクラスターの Kerberos 認証を有効にします。AWS Managed Microsoft AD レプリケーションは、エンタープライズバージョンの Active Directory でのみサポートされます。詳細については、*AWS Directory Service 管理ガイド*の「[マルチリージョンレプリケーション](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_configure_multi_region_replication.html)」を参照してください。

## RDS for MySQL から Aurora MySQL への移行
<a name="aurora-mysql-kerberos-connecting.rds"></a>

Kerberos 認証を有効にした RDS for MySQL から Aurora MySQL への移行後、`auth_pam` プラグインで作成されたユーザーを `authentication_kerberos` プラグインを使用するように変更します。例:

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

## チケットキャッシュの防止
<a name="aurora-mysql-kerberos.destroy-tickets"></a>

MySQL クライアントアプリケーションの起動時に有効な TGT が存在しない場合、アプリケーションは TGT を取得してキャッシュできます。TGT がキャッシュされないようにするには、`/etc/krb5.conf` ファイルに設定パラメータを設定します。

**注記**  
この設定は UNIX を実行しているクライアントホストにのみ適用され、Windows には適用されません。

**TGT キャッシュを防止するには**
+ 次のように、`/etc/krb5.conf` に `[appdefaults]` セクションを追加します。

  ```
  [appdefaults]
    mysql = {
      destroy_tickets = true
    }
  ```

## Kerberos 認証用のログ記録
<a name="aurora-mysql-kerberos.logging"></a>

`AUTHENTICATION_KERBEROS_CLIENT_LOG` 環境変数によって、Kerberos 認証のログ記録レベルを設定します。ログはクライアント側のデバッグに使用できます。

指定できる値は 1～5 です。ログメッセージは、標準エラー出力に書き込まれます。次の表に各ログ記録レベルの説明を示します。


| Logging level | 説明 | 
| --- | --- | 
| 1 または未設定 | ログ記録なし | 
| 2 | エラーメッセージ | 
| 3 | エラーと警告メッセージ | 
| 4 | エラー、警告、情報メッセージ | 
| 5 | エラー、警告、情報メッセージ、デバッグメッセージ | 

# ドメイン内の DB クラスターの管理
<a name="aurora-mysql-kerberos-managing"></a>

AWS CLI または RDS API を使用して、DB クラスターとマネージド Active Directory との関係を管理できます。例えば、Kerberos 認証用に Active Directory を関連付けたり、Active Directory の関連付けを解除して Kerberos 認証を有効にしたりできます。さらに、DB クラスターを外部認証する Active Directory を別の Active Directory に変更することもできます。

例えば、Amazon RDS API を使用して次を実行できます。
+ メンバーシップが失敗した Kerberos 認証を再度有効化するには、`ModifyDBInstance` API オペレーションを使用し、現在のメンバーシップのディレクトリ ID を指定します。
+ メンバーシップの IAM ロール名を更新するには、`ModifyDBInstance` API オペレーションを使用し、現在のメンバーシップのディレクトリ ID と新しい IAM ロールを指定します。
+ DB クラスターの Kerberos 認証を無効にするには、`ModifyDBInstance` API オペレーションを使用し、ドメインパラメータとして `none` を指定します。
+ ドメイン間で DB クラスターを移動するには、`ModifyDBInstance` API オペレーションを使用し、新しいドメインのドメイン識別子をドメインパラメータとして指定します。
+ 各 DB クラスターのメンバーシップを一覧表示するには、`DescribeDBInstances` API オペレーションを使用します。

## ドメインのメンバーシップを理解する
<a name="aurora-mysql-kerberos-managing.understanding"></a>

DB クラスターを作成または変更すると、そのインスタンスはドメインのメンバーになります。DB クラスターのドメインメンバーシップのステータスを表示するには、[describe-db-clusters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html) CLI コマンドを実行します。DB クラスターのステータスは、次のいずれかです。
+ `kerberos-enabled` — DB クラスターでは Kerberos 認証が有効になっています。
+  `enabling-kerberos` — AWS は、この DB クラスターで Kerberos 認証を有効化中です。
+ `pending-enable-kerberos` — この DB クラスターでは、Kerberos 認証の有効化が保留になっています。
+ `pending-maintenance-enable-kerberos` - AWS は、次に予定されているメンテナンス期間で、DB クラスターの Kerberos 認証の有効化を試みます。
+ `pending-disable-kerberos` — この DB クラスターでは、Kerberos 認証の無効化が保留になっています。
+ `pending-maintenance-disable-kerberos` - AWS は、次に予定されているメンテナンス期間で、DB クラスターの Kerberos 認証の無効化を試みます。
+ `enable-kerberos-failed` - 設定の問題により、AWS は DB クラスター上の Kerberos 認証を有効化できませんでした。DB クラスターの変更コマンドを再発行する前に、設定を確認して修正してください。
+ `disabling-kerberos` — AWS は、この DB クラスターで Kerberos 認証を無効化中です。

ネットワーク接続の問題や正しくない IAM ロールのために、Kerberos 認証を有効化するリクエストは失敗する可能性があります。例えば、DB クラスターを作成するか、既存の DB クラスターを変更し、Kerberos 認証を有効化しようとして失敗したとします。この場合は、変更コマンドを再発行するか、新しく作成した DB クラスターを変更してドメインに参加させます。