Aurora MySQL DB クラスターの Kerberos 認証の設定 - Amazon Aurora

Aurora MySQL DB クラスターの Kerberos 認証の設定

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

ステップ 1: AWS Managed Microsoft AD を使用してディレクトリを作成する

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

AWS Managed Microsoft AD ディレクトリを作成すると、AWS Directory Service がユーザーに代わって自動的に以下のタスクを実行します。

  • VPC 内に Active Directory を設定します。

  • ユーザー名 Admin と指定されたパスワードで、ディレクトリ管理者アカウントを作成します。このアカウントはディレクトリの管理に使用します。

    注記

    このパスワードは必ず保存してください。AWS 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 Management Console にサインインし、AWS Directory Service コンソール (https://console.aws.amazon.com/directoryservicev2/)を開きます。

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

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

  4. 次の情報を入力します。

    ディレクトリの DNS 名

    ディレクトリの完全修飾名 (例: corp.example.com)。

    [Directory NetBIOS name] (ディレクトリの NetBIOS 名)

    ディレクトリの短縮名 (例: CORP)。

    ディレクトリの説明

    (オプション) ディレクトリの説明。

    Admin パスワード

    ディレクトリ管理者のパスワードです。ディレクトリの作成プロセスでは、ユーザー名 Admin とこのパスワードで管理者アカウントが作成されます。

    ディレクトリ管理者のパスワードに「admin」の単語を含めることはできません。パスワードは大文字と小文字を区別し、8-64 文字にします。また、以下の 4 つのカテゴリうち 3 つから少なくとも 1 文字を含める必要があります。

    • 小文字 (a~z)

    • 大文字 (A~Z)

    • 数字 (0~9)

    • アルファベット以外の文字 (~!@#$%^&*_-+=`|\(){}[]:;"'<>,.?/)

    [Confirm password] (パスワードを確認)

    管理者パスワードが再入力されました。

  5. [次へ] をクリックします。

  6. [Networking ] セクションに次の情報を入力し、[Next] を選択します。

    VPC

    ディレクトリ用の VPC。この同じ VPC に Aurora MySQL DB クラスターを作成します。

    サブネット

    ディレクトリサーバーのサブネット。2 つのサブネットは、異なるアベイラビリティーゾーンに存在している必要があります。

  7. ディレクトリ情報を確認し、必要な変更を加えます。情報が正しい場合は、[Create directory (ディレクトリの作成)] を選択します。

    作成中のディレクトリ詳細ページ

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

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

[ディレクトリの詳細] ページのディレクトリ ID

ステップ 2: (オプション) オンプレミスの Active Directory の信頼を作成する

独自のオンプレミスの Microsoft Active Directory を使用する予定がない場合は、ステップ 3: Amazon Aurora 用の IAM ロールを作成する に進みます。

オンプレミスの Active Directory を使用して Kerberos 認証を取得するには、オンプレミスの Microsoft Active Directory と (AWS Managed Microsoft AD で作成された) ステップ 1: AWS Managed Microsoft AD を使用してディレクトリを作成する ディレクトリとの間に、フォレストの信頼を使用して、信頼するドメイン関係を作成する必要があります。信頼は一方向にすることができます。この場合、AWS Managed Microsoft AD ディレクトリはオンプレミスの Microsoft Active Directory を信頼します。信頼は、両方の Active Directory が相互に信頼する双方向にすることもできます。AWS Directory Service を使用して信頼関係を設定する方法の詳細については、AWS Directory Service 管理ガイドの「信頼関係を作成する場合」を参照してください。

注記

オンプレミスの Microsoft Active Directory を使用している場合:

  • Windows クライアントは、rds.amazonaws.com ではなく、エンドポイントの AWS Directory Service のドメイン名を使用して接続する必要があります。詳細については、「Kerberos 認証を使用した Aurora MySQL への接続」を参照してください。

  • Windows クライアントは、Aurora カスタムエンドポイントを使用すると接続できません。詳細については、「Amazon Aurora 接続管理」を参照してください。

  • グローバルデータベースの場合:

    • Windows クライアントは、グローバルデータベースのプライマリ AWS リージョン リージョンにあるインスタンスエンドポイントまたはクラスターエンドポイントを使用する場合に限り接続できます。

    • Windows クライアントは、セカンダリ AWS リージョン のクラスターエンドポイントを使用して接続できません。

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

作成された信頼に対応している DNS ルーティング

ステップ 3: Amazon Aurora 用の IAM ロールを作成する

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

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

サービス用の IAM ロールを作成する方法の詳細については、IAM ユーザーガイドの「AWS のサービスにアクセス許可を委任するロールの作成」を参照してください。

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

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

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

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

ステップ 4: ユーザーを作成して設定する

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

AWS Directory Service ディレクトリにユーザーを作成するには、AWS Directory Service ディレクトリに接続している Microsoft Windows ベースのオンプレミスまたは Amazon EC2 インスタンスを使用します。ユーザーを作成する権限を持つユーザーとして、インスタンスにログインする必要があります。詳細については、AWS Managed Microsoft AD Directory Service 管理ガイドAWS のユーザーとグループの管理を参照してください。

ステップ 5: Aurora MySQL DB クラスターを作成または変更する

ディレクトリ用の Aurora MySQL DB クラスターを作成または変更します。コンソール、AWS CLI、RDS API を使用して DB クラスターとディレクトリを関連付けることができます。このタスクを実行するには、以下の 2 つの方法があります。

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

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

DB クラスター作成時の Kerberos 認証設定

コンソール、AWS CLI、RDS API を使用する場合は、DB クラスターとディレクトリを関連付けます。作成したドメインディレクトリを使用するには、DB クラスターに以下のパラメータが必要です。

  • --domain パラメータには、ディレクトリの作成時に生成されたドメイン識別子 ("d-*" 識別子) を使用します。

  • --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 ユーザーを作成する

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_name をドメインディレクトリの領域名に置き換えます。領域名は、通常 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 ログインの変更

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

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

ステップ 7: MySQL クライアントを設定する

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

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

  2. クライアントホストと AWS Directory Service 間でトラフィックが流れることを確認します。次の目的で Netcat などのネットワークユーティリティを使用します。

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

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

  3. データベースポートを介してクライアントホストと 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.cn = EXAMPLE.COM .amazon.com = EXAMPLE.COM

ステップ 8: (オプション) 大文字と小文字を区別しないユーザー名比較の設定

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

大文字と小文字を区別しないユーザー名比較を使用するには
  1. カスタム DB クラスターのパラメータグループを作成します。「DB クラスターのパラメータグループの作成」の手順に従います。

  2. 新しいパラメータグループを編集して、authentication_kerberos_caseins_cmp の値を true に設定します。「DB クラスターパラメータグループのパラメータの変更」の手順に従います。

  3. DB クラスターパラメータグループを Aurora MySQL DB クラスターに関連付けます。「DB クラスターパラメータグループと DB クラスターの関連付け」の手順に従います。

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