Amazon RDS for Db2 DB インスタンスの Kerberos 認証を設定する
AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) を使用して、RDS for Db2 DB インスタンスの Kerberos 認証を設定します。Kerberos 認証を設定するには、次の手順に従います。
トピック
ステップ 1: AWS Managed Microsoft AD を使用してディレクトリを作成する
AWS Directory Service は、Active Directory でフルマネージド AWS クラウド を作成します。AWS Managed Microsoft AD ディレクトリを作成すると、AWS Directory Service が 2 つのドメインコントローラーと DNS サーバーを作成します。ディレクトリサーバーは、VPC 内の異なるサブネットで作成されます。この冗長性により、障害が発生してもディレクトリがアクセスできるようになります。
AWS Managed Microsoft AD ディレクトリを作成すると、AWS Directory Service がユーザーに代わって自動的に以下のタスクを実行します。
-
VPC 内で Active Directory を設定します。
-
ユーザー名
Admin
と指定されたパスワードで、ディレクトリ管理者アカウントを作成します。このアカウントを使用してディレクトリを管理します。重要
このパスワードは必ず保管してください。AWS 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 のごみ箱から元に戻す。
-
AWS Directory Service で Windows PowerShell 向けの Active Directory およびドメインネームサービス (DNS) モジュールを実行する。
Admin
アカウントには、ドメイン全体に関係するアクティビティを実行する権限もあります。
-
DNS 設定 (レコード、ゾーン、フォワーダーの追加、削除、または更新) を管理する。
-
DNS イベントログを参照する。
-
セキュリティイベントログを参照する。
AWS Managed Microsoft AD でディレクトリを作成するには
AWS Management Console にサインインし、AWS Directory Service コンソール (https://console.aws.amazon.com/directoryservicev2/
)を開きます。 -
[ディレクトリの設定] を選択します。
-
[AWS Managed Microsoft AD] を選択します。現在、Amazon RDS での使用がサポートされているのは AWS Managed Microsoft AD のオプションのみです。
-
[Next] を選択します。
-
[ディレクトリ情報の入力] ページに、以下の情報を指定します。
-
エディション - 目的の要件を満たすエディションを選択します。
-
ディレクトリ DNS 名 - ディレクトリの完全修飾名 (例:
corp.example.com
)。 -
ディレクトリ NetBIOS 名 - (オプション) ディレクトリの短縮名 (例:
CORP
)。 -
ディレクトリの説明 - (オプション) ディレクトリの説明。
-
管理者パスワード – ディレクトリ管理者のパスワード。ディレクトリの作成プロセスでは、ユーザー名
Admin
とこのパスワードを使用して管理者アカウントが作成されます。ディレクトリ管理者のパスワードには、「admin」の単語を含めることはできません。パスワードは大文字と小文字を区別し、8-64 文字にします。また、以下の 4 つのカテゴリうち 3 つから少なくとも 1 文字を含める必要があります。
-
小文字 (a~z)
-
大文字 (A~Z)
-
数字 (0~9)
-
英数字以外の文字 (~!@#$%^&*_-+=`|\(){}[]:;"'<>,.?/)
-
パスワードの確認 - 管理者パスワードを再入力します。
重要
このパスワードは必ず保管してください。AWS Directory Service にはこのパスワードは保存されず、復元やリセットもできません。
-
-
-
[Next] を選択します。
-
[VPC とサブネットの選択] ページで、以下の情報を指定します。
-
VPC - ディレクトリの VPC を選択します。RDS for Db2 DB インスタンスは、この同じ VPC または別の VPC で作成できます。
-
サブネット - ディレクトリサーバーのサブネットを選択します。2 つのサブネットは、異なるアベイラビリティーゾーンに存在している必要があります。
-
-
[Next] を選択します。
-
ディレクトリの情報を確認します。変更が必要な場合は、[戻る] を選択し、変更を行います。情報が正しい場合は、[Create directory (ディレクトリの作成)] を選択します。
ディレクトリが作成されるまで、数分かかります。正常に作成されると、[Status] 値が [Active] に変わります。
ディレクトリに関する情報を表示するには、[ディレクトリ ID] で、ディレクトリ ID を選択します。ディレクトリ ID 値を書き留めます。RDS for Db2 DB インスタンスを作成または変更する際に、この値が必要です。
ステップ 2: Amazon RDS が AWS Directory Service にアクセスするための IAM ロールを作成する
Amazon RDS が AWS Directory Service を呼び出すには、AWS アカウント にマネージド IAM ポリシー AmazonRDSDirectoryServiceAccess
を使用する IAM ロールが必要です。このロールにより、Amazon RDS は AWS Directory Service への呼び出しを行うことができます。
AWS Management Console を使用して DB インスタンスを作成し、コンソールユーザーが iam:CreateRole
アクセス許可を持っている場合、コンソールは必要な IAM ロールを自動的に作成します。この場合、ロール名は rds-directoryservice-kerberos-access-role
です。それ以外の場合は、IAM ロールを手動で作成する必要があります。IAM ロールを作成する場合、[Directory Service
] を選択し、それに AWS マネージドポリシー AmazonRDSDirectoryServiceAccess
をアタッチします。
サービス用の IAM ロールを作成する方法の詳細については、「IAM ユーザーガイド」の「AWS のサービスにアクセス許可を委任するロールの作成」を参照してください。
注記
RDS for Microsoft SQL Server の Windows 認証に使用される IAM ロールは、RDS for Db2 では使用できません。
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": "*" } ] }
ステップ 3: ユーザーを作成して設定する
Active Directory Users and Computers ツールを使用してユーザーを作成できます。これは、Active Directory Domain Services および Active Directory Lightweight Directory Services ツールのいずれかです。詳細については、Microsoft ドキュメントの「Active Directory ドメインにユーザーとコンピューターを追加する
AWS Directory Service ディレクトリにユーザーを作成するには、AWS Directory Service ディレクトリのメンバーである Windows ベースの Amazon EC2 インスタンスに接続している必要があります。同時に、ユーザーを作成する権限を持つユーザーとしてサインインしていなければなりません。詳細については、AWS Directory Service 管理ガイドの「ユーザーの作成」を参照してください。
ステップ 4: AWS Managed Microsoft AD で RDS for Db2 管理者グループを作成する
RDS for Db2 は、マスターユーザー、または 2 つの Amazon RDS 予約ユーザー rdsdb
と rdsadmin
の Kerberos 認証をサポートしていません。代わりに、AWS Managed Microsoft AD で masterdba
という名前の新しいグループを作成する必要があります。詳細については、Microsoft ドキュメントの「Create a Group Account in Active Directory
Kerberos 認証を有効にすると、マスターユーザーは masterdba
ロールを失います。その結果、Kerberos 認証を無効にしない限り、マスターユーザーはインスタンスのローカルユーザーグループのメンバーシップにアクセスできなくなります。パスワードログインでマスターユーザーを引き続き使用するには、マスターユーザーと同じ名前のユーザーを AWS Managed Microsoft AD に作成します。続いて、ユーザーをグループ masterdba
に追加します。
ステップ 5: RDS for Db2 DB インスタンスを作成または変更する
ディレクトリで使用する RDS for Db2 DB インスタンスを作成または変更します。AWS Management Console、AWS CLI、または RDS API を使用して DB インスタンスとディレクトリを関連付けることができます。これには以下の 2 つの方法があります。
-
コンソール、create-db-instance コマンド、または CreateDBInstance API オペレーションを使用して新しい RDS for Db2 DB インスタンスを作成します。手順については、Amazon RDS DB インスタンスの作成 を参照してください。
-
コンソール、modify-db-instance コマンド、または ModifyDBInstance API オペレーションを使用して、既存の RDS for Db2 DB インスタンスを変更します。手順については、Amazon RDS DB インスタンスを変更する を参照してください。
-
コンソール、restore-db-instance-from-db-snapshot コマンド、または RestoreDBInstanceFromDBSnapshot API オペレーションを使用して、DB スナップショットから RDS for Db2 DB インスタンスを復元します。手順については、DB インスタンスへの復元 を参照してください。
-
コンソール、restore-db-instance-to-point-in-time コマンド、または RestoreDBInstanceToPointInTime API オペレーションを使用して、RDS for Db2 DB インスタンスを特定時点に復元します。手順については、Amazon RDS の DB インスタンスを特定の時点に復元する を参照してください。
Kerberos 認証は、VPC 内の RDS for Db2 DB インスタンスでのみサポートされています。DB インスタンスは、ディレクトリと同じ VPC または異なる VPC 内にあります。DB インスタンスがディレクトリと通信できるように、ディレクトリの VPC 内の出力を許可するセキュリティグループを使用する必要があります。
DB インスタンスを作成、変更、復元するためにコンソールを使用する場合は、[データベース認証] セクションの [パスワードと Kerberos 認証] を選択します。次に、[ディレクトリのブラウジング] を選択します。Directory Service を使用するには、ディレクトリを選択するか、[ディレクトリを作成] を選択します。
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-namerole_name
重要
Kerberos 認証を有効化するために DB インスタンスを変更する場合は、変更後に DB インスタンスを再起動します。
ステップ 6: Db2 クライアントを設定する
Db2 クライアントを設定するには
-
ドメインを指す /etc/krb5.conf ファイル (または同等) を作成します。
注記
Windows オペレーティングシステムの場合は、C:\windows\krb5.ini ファイルを作成します。
-
クライアントホストと AWS Directory Service 間でトラフィックが流れることを確認します。以下のタスクには、Netcat などのネットワークユーティリティを使用します。
-
ポート 53 の DNS 経由のトラフィックを確認します。
-
ポート 53 および Kerberos の TCP/UDP 上のトラフィックを確認します。これには、AWS Directory Service の場合ポート 88 および 464 が含まれます。
-
-
データベースポートを介してクライアントホストと 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