セルフマネージド Active Directory の設定
セルフマネージド AD を設定するには、次の手順を実行してください。
トピック
ステップ 1: AD に組織単位を作成する
重要
セルフマネージド AD ドメインに参加した RDS for Db2 DB インスタンスを所有する AWS アカウントに、専用の OU とその OU を対象とするサービス認証情報を作成することをお勧めします。OU とサービス認証情報を専用にすることで、アクセス許可の競合を回避し、最小特権の原則に従うことができます。
AD に OU を作成するには
-
ドメイン管理者として AD ドメインに接続します。
-
[Active Directory ユーザーとコンピューター] を開き、OU を作成するドメインを選択します。
-
ドメインのコンテキストメニューを開き、[新規] を選択し、[組織単位] を選択します。
-
OU の名前を入力します。
-
[コンテナを誤って削除しないように保護する] ボックスはオンのままにしてください。
-
[OK] を選択してください。新しい OU がドメインの下に表示されます。
ステップ 2: AD に AD ドメインサービスアカウントを作成する
ドメインサービスアカウントの認証情報は AWS Secrets Manager のシークレットに使用されます。
AD に AD ドメインサービスアカウントを作成するには
-
[Active Directory ユーザーとコンピューター] を開き、ユーザーを作成するドメインと OU を選択します。
-
[ユーザー] のコンテキストメニューを開き、[新規]、[ユーザー] の順に選択します。
-
ユーザーの名、姓、およびログオン名を入力します。[次へ] を選択します。
-
ユーザーのパスワードを入力します。[ユーザーは次回のログイン時にパスワードを変更する必要がある] を選択しないでください。[アカウントは無効です] を選択しないでください。[次へ] を選択します。
-
[OK] を選択してください。新しいユーザーがドメインの下に表示されます。
ステップ 3: AD ドメインサービスアカウントに制御を委任する
パート A: コントロールの委任ウィザードを使用してアクセス許可を委任する
ドメイン内の AD ドメインサービスアカウントに制御を委任するには
-
[Active Directory ユーザーとコンピュータ] Microsoft 管理コンソール (MMC) スナップインを開き、ユーザーを作成するドメインを選択します。
-
前に作成した OU のコンテキストメニューを開き、[コントロールの委任] を選択します。
-
[コントロールの委任ウィザード] で、[次へ] を選択します。
-
[ユーザーまたはグループ] セクションで、[追加] を選択します。
-
[ユーザー、コンピュータ、またはグループの選択] セクションで、作成した AD ドメインサービスアカウントを入力し、[名前を確認] を選択します。AD ドメインサービスアカウントのチェックが成功したら、[OK] を選択します。
-
[ユーザーまたはグループ] セクションで、AD ドメインサービスアカウントが追加されたことを確認し、[次へ] を選択します。
-
[委任するタスク] セクションで、[委任するカスタムタスクを作成] を選択し、[次へ] を選択します。
-
[Active Directory オブジェクトタイプ] セクションで:
-
[フォルダ内の次のオブジェクトのみ] を選択します。
-
[ユーザーオブジェクト] を選択します。
-
[このフォルダに選択したオブジェクトを作成] を選択します。
-
[このフォルダ内の選択したオブジェクトを削除] を選択し、[次へ] を選択します。
-
-
[アクセス許可] セクションで:
-
[全般] を選択したままにします。
-
[プロパティ固有] を選択します。
-
[特定の子オブジェクトの作成/削除] を選択します。
-
[パスワードのリセット] を選択します。
-
[msDS-SupportedEncryptionTypes の読み取り] を選択します。
-
[msDS-SupportedEncryptionTypes の書き込み] を選択します。
-
-
[コントロールの委任ウィザードの完了] で設定を確認し、[完了] を選択します。
パート B: PowerShell を使用して servicePrincipalName アクセス許可を委任する
コントロールの委任ウィザードは、ユーザーオブジェクトの servicePrincipalName プロパティを公開しません。ドメインコントローラーで次の PowerShell スクリプトを実行し、AD ドメインサービスアカウントに OU のユーザーオブジェクトの servicePrincipalName に対する読み取りおよび書き込みアクセスを許可します。
service-account をステップ 2 で作成した AD ドメインサービスアカウントの名前に置き換え、ステップ 1 で作成した OU と一致するように OU 識別名を更新します。
$ou = "OU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain" $user = Get-ADUser "service-account" $acl = Get-Acl "AD:\$ou" $schemaPath = (Get-ADRootDSE).schemaNamingContext $spnSchema = Get-ADObject -SearchBase $schemaPath -Filter {lDAPDisplayName -eq "servicePrincipalName"} -Properties schemaIDGUID $spnGuid = New-Object Guid (,$spnSchema.schemaIDGUID) $userGuid = New-Object Guid "bf967aba-0de6-11d0-a285-00aa003049e2" $ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule( $user.SID, "ReadProperty,WriteProperty", "Allow", $spnGuid, "Descendents", $userGuid ) $acl.AddAccessRule($ace) Set-Acl "AD:\$ou" $acl
アクセス許可が正しく適用されていることを確認するには、次の PowerShell スクリプトを実行します。
$acl = Get-Acl "AD:\$ou" $acl.Access | Where-Object { $_.IdentityReference -like "*service-account*" } | Format-List
ステップ 4: AWS KMS キーを作成する
KMS キーは、AWS シークレットを暗号化します。
注記
[暗号化キー] として、AWS デフォルトの KMS キーを使用しないでください。AWS KMS キーは、セルフマネージド AD に参加させる RDS for Db2 DB インスタンスを含んでいるのと同じ AWS アカウントに作成してください。
AWS KMS キーを作成するには
-
https://console.aws.amazon.com/kms/
で AWS KMS コンソールを開きます。[Create key] (キーの作成) を選択します。 -
[キーの種類] として、[対称] を選択します。
-
[キーの使用方法] として、[暗号化と復号化] を選択します。
-
[Advanced options (詳細オプション)] の場合:
-
[キーマテリアルのオリジン] として、[KMS] を選択します。
-
[リージョナリティ] では、[単一リージョンキー] を選択し、[次へ] を選択します。
-
-
[エイリアス] に、KMS キーの名前を指定します。
-
(オプション) [説明] に、KMS キーの説明を入力します。
-
(オプション) タグで、KMS キーのタグを指定し、次へを選択します。
-
[キー管理者] として、IAM ユーザーの名前を入力して選択します。
-
[キーの削除] で、[キー管理者にこのキーの削除を許可する] のボックスをオンのままにして、[次へ] を選択します。
-
[キーユーザー] として、前のステップと同じ IAM ユーザーを指定して選択します。[次へ] を選択します。
-
設定を確認します。
-
[キーポリシー] で、以下をポリシー [ステートメント] に含めます。
{ "Sid": "Allow use of the KMS key on behalf of RDS", "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "kms:Decrypt", "Resource": "*" } -
[Finish] を選択してください。
ステップ 5: AWS シークレットを作成する
注記
シークレットは、セルフマネージド AD に参加させる RDS for Db2 DB インスタンスを含んでいるのと同じ AWS アカウントに作成してください。
シークレットを作成する
-
https://console.aws.amazon.com/secretsmanager/
から AWS Secrets Manager コンソールを開きます。新しいシークレットを保存 を選択します。 -
[Secret type] (シークレットタイプ) で、[Other type of secret] (他の種類のシークレット) を選択します。
-
[キーと値のペア] として、次の 2 つのキーを追加します。
-
最初のキーには、
SELF_MANAGED_ACTIVE_DIRECTORY_USERNAMEと入力します。 -
最初のキーの値には、AD ユーザーのユーザー名 (ドメインプレフィックスなし) のみを入力します。ドメイン名を含めないでください。含めると、インスタンスの作成が失敗します。
-
2 番目のキーとして、
SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORDと入力します。 -
2 番目のキーの値には、ドメインの AD ユーザー用に作成したパスワードを入力します。
-
-
[暗号化キー] で、前のステップで作成した KMS キーを入力し、[次へ] を選択します。
-
[シークレット名] として、後でシークレットを見つけやすい、わかりやすい名前を入力します。
-
(オプション) [説明] として、シークレット名の説明を入力します。
-
リソース権限については、編集を選択します。
-
以下のポリシーをアクセス許可ポリシーに追加します。
注記
Confused Deputy Problem (混乱した代理の問題) を回避するために、ポリシーの
aws:sourceAccountおよびaws:sourceArn条件を使用することをお勧めします。aws:sourceAccountの AWS アカウントとaws:sourceArnの RDS for Db2 DB インスタンス ARN を使用します。詳細については、「サービス間での混乱した代理問題の防止」を参照してください。{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*", "Condition": { "StringEquals": { "aws:sourceAccount": "123456789012" }, "ArnLike": { "aws:sourceArn": "arn:aws:rds:us-west-2:123456789012:db:*" } } } ] } -
[保存]、[次へ] の順に選択します。
-
[ローテーションの設定] は、デフォルト値のままにして、[次へ] を選択します。
-
シークレットの設定を確認し、[保存] を選択します。
-
作成したシークレットを選択し、[シークレット ARN] の値をコピーします。この値を次のステップで使用して、セルフマネージド Active Directory をセットアップします。
ステップ 6: Db2 DB インスタンスを作成または変更する
AWS CLI を使用して、RDS for Db2 DB インスタンスをセルフマネージド AD ドメインに関連付けることができます。これは、次のいずれかの方法で行うことができます。
-
create-db-instance CLI コマンドを使用して、新しい Db2 DB インスタンスを作成します。手順については、「Amazon RDS DB インスタンスの作成」を参照してください。
-
modify-db-instance CLI コマンドを使用して、既存の Db2 DB インスタンスを変更します。手順については、「Amazon RDS DB インスタンスを変更する」を参照してください。
AWS CLI を使用する場合は、DB インスタンスが、作成したセルフマネージド AD ドメインを使用できるように、以下のパラメータが必要です。
-
--domain-fqdnパラメータには、セルフマネージド AD の完全修飾ドメイン名 (FQDN) を使用します。 -
--domain-ouパラメータには、セルフマネージド AD で作成した OU を使用します。 -
--domain-auth-secret-arnパラメータには、前のステップで作成したシークレット ARN の値を使用します。 -
--domain-dns-ipsパラメータには、セルフマネージド AD の DNS サーバーのプライマリ IPv4 アドレスとセカンダリ IPv4 アドレスを使用します。セカンダリ DNS サーバーの IP アドレスがない場合は、プライマリ IP アドレスを 2 回入力します。
次の CLI コマンドは、新しい RDS for Db2 DB インスタンスを作成し、それをセルフマネージド AD ドメインに参加させます。
Linux、macOS、Unix の場合:
aws rds create-db-instance \ --db-instance-identifiermy-DB-instance\ --db-instance-class db.m6i.large \ --allocated-storage 50 \ --engine db2-se \ --engine-version 11.5 \ --master-usernamemy-master-username\ --master-user-passwordmy-master-password\ --domain-fqdnmy_AD_domain.my_AD.my_domain\ --domain-ouOU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain\ --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:my-AD-test-secret-123456" \ --domain-dns-ips "10.11.12.13" "10.11.12.14"
Windows の場合:
aws rds create-db-instance ^ --db-instance-identifiermy-DB-instance^ --db-instance-class db.m6i.large ^ --allocated-storage 50 ^ --engine db2-se ^ --engine-version 11.5 ^ --master-usernamemy-master-username^ --master-user-passwordmy-master-password^ --domain-fqdnmy_AD_domain.my_AD.my_domain^ --domain-ouOU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain^ --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:my-AD-test-secret-123456" ^ --domain-dns-ips "10.11.12.13" "10.11.12.14"