セルフマネージド Active Directory の設定 - Amazon Relational Database Service

セルフマネージド Active Directory の設定

セルフマネージド AD を設定するには、次の手順を実行してください。

ステップ 1: AD に組織単位を作成する

重要

セルフマネージド AD ドメインに参加した RDS for SQL Server DB インスタンスを所有する AWS アカウントに、専用の OU とその OU を対象とするサービス認証情報を作成することをお勧めします。OU とサービス認証情報を専用にすることで、アクセス許可の競合を回避し、最小特権の原則に従うことができます。

AD に OU を作成するには
  1. ドメイン管理者として AD ドメインに接続します。

  2. [Active Directory ユーザーとコンピューター] を開き、OU を作成するドメインを選択します。

  3. ドメインを右クリックして、[新規] を選択し、次に [組織単位] を選択します。

  4. OU の名前を入力します。

  5. [コンテナを誤って削除しないように保護する] ボックスはオンのままにしてください。

  6. [OK] をクリックします。新しい OU がドメインの下に表示されます。

ステップ 2: AD に AD ドメインユーザーを作成する

ドメインユーザーの認証情報は AWS Secrets Manager のシークレットに使用されます。

AD に AD ドメインユーザーを作成するには
  1. [Active Directory ユーザーとコンピューター] を開き、ユーザーを作成するドメインと OU を選択します。

  2. [ユーザー] オブジェクトを右クリックして、[新規] を選択し、[ユーザー] を選択します。

  3. ユーザーの名、姓、およびログオン名を入力します。[次へ] をクリックします。

  4. ユーザーのパスワードを入力します。[ユーザーは次回のログイン時にパスワードを変更する必要がある] を選択しないでください。[アカウントは無効です] を選択しないでください。[次へ] をクリックします。

  5. [OK] をクリックします。新しいユーザーがドメインの下に表示されます。

ステップ 3: AD ユーザーに制御を委任する

ドメイン内の AD ドメインユーザーに制御を委任するには
  1. [Active Directory ユーザーとコンピューター] MMC スナップインを開き、ユーザーを作成するドメインを選択します。

  2. 前に作成した OU を右クリックして、[制御を委任] を選択します。

  3. [コントロールウィザードの委任] で、[次へ] を選択します。

  4. [ユーザーまたはグループ] セクションで、[追加] をクリックします。

  5. [ユーザー、コンピューター、またはグループの選択] セクションで、作成した AD ユーザーを入力し、[ 名前の確認] をクリックします。AD ユーザーのチェックが成功したら、[OK] をクリックします。

  6. [ユーザーまたはグループ] セクションで、AD ユーザーが追加されたことを確認し、[次へ] をクリックします。

  7. [委任するタスク] セクションで、[委任するカスタムタスクを作成] を選択し、[次へ] をクリックします。

  8. [Active Directory オブジェクトタイプ] セクションで:

    1. [フォルダ内の次のオブジェクトのみ] を選択します。

    2. [コンピュータオブジェクト] を選択します。

    3. [このフォルダに選択したオブジェクトを作成] を選択します。

    4. [このフォルダ内の選択したオブジェクトを削除] を選択し、[次へ] をクリックします。

  9. [アクセス許可] セクションで:

    1. [全般] を選択したままにします。

    2. [DNS ホスト名への検証済み書き込み] を選択します。

    3. [サービスプリンシパル名への検証済み書き込み] を選択し、[次へ] をクリックします。

  10. [コントロールウィザードの委任の完了] で設定を確認し、[完了] をクリックします。

ステップ 4: AWS KMS キーを作成する

KMS キーは、AWS シークレットの暗号化に使用されます。

AWS KMS キーを作成するには
注記

[暗号化キー] として、AWS デフォルトの KMS キーを使用しないでください。AWS KMS キーは、セルフマネージド AD に参加させる RDS for SQL Server DB インスタンスを含んでいるのと同じ AWS アカウントに作成してください。

  1. AWS KMS コンソールで、[キーの作成] を選択します。

  2. [キーの種類] として、[対称] を選択します。

  3. [キーの使用方法] として、[暗号化と復号化] を選択します。

  4. [Advanced options (詳細オプション)] の場合:

    1. [キーマテリアルのオリジン] として、[KMS] を選択します。

    2. [リージョナリティ] として、[単一リージョンキー] を選択し、[次へ] をクリックします。

  5. [エイリアス] に、KMS キーの名前を指定します。

  6. (オプション) [説明] に、KMS キーの説明を入力します。

  7. (オプション) [タグ] に、KMS キーのタグを指定し、[次へ] をクリックします。

  8. [キー管理者] として、IAM ユーザーの名前を入力して選択します。

  9. [キーの削除] で、[キー管理者にこのキーの削除を許可する] のボックスをオンのままにして、[次へ] をクリックします。

  10. [キーユーザー] として、前のステップと同じ IAM ユーザーを指定して選択します。[次へ] をクリックします。

  11. 設定を確認します。

  12. [キーポリシー] で、以下をポリシー [ステートメント] に含めます。

    { "Sid": "Allow use of the KMS key on behalf of RDS", "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "kms:Decrypt", "Resource": "*" }
  13. [Finish] をクリックします。

ステップ 5: AWS シークレットを作成する

シークレットを作成する
注記

シークレットは、セルフマネージド AD に参加させる RDS for SQL Server DB インスタンスを含んでいるのと同じ AWS アカウントに作成してください。

  1. AWS Secrets Manager で、[新しいシークレットを保存する] を選択します。

  2. [Secret type] (シークレットタイプ) で、[Other type of secret] (他の種類のシークレット) を選択します。

  3. [キーと値のペア] として、次の 2 つのキーを追加します。

    1. 最初のキーには、CUSTOMER_MANAGED_ACTIVE_DIRECTORY_USERNAME と入力します。

    2. 最初のキーの値には、AD ユーザーのユーザー名 (ドメインプレフィックスなし) のみを入力します。ドメイン名を含めないでください。含めると、インスタンスの作成が失敗します。

    3. 2 番目のキーとして、CUSTOMER_MANAGED_ACTIVE_DIRECTORY_PASSWORD と入力します。

    4. 2 番目のキーの値には、ドメインの AD ユーザー用に作成したパスワードを入力します。

  4. [暗号化キー] として、前のステップで作成した KMS キーを入力し、[次へ] をクリックします。

  5. [シークレット名] として、後でシークレットを見つけやすい、わかりやすい名前を入力します。

  6. (オプション) [説明] として、シークレット名の説明を入力します。

  7. [リソースアクセス許可] として、[編集] をクリックします。

  8. 以下のポリシーをアクセス許可ポリシーに追加します。

    注記

    Confused Deputy Problem (混乱した代理の問題) を回避するために、ポリシーの aws:sourceAccount および aws:sourceArn 条件を使用することをお勧めします。aws:sourceAccount の AWS アカウント と aws:sourceArn の RDS for SQL Server DB インスタンス ARN を使用します。詳細については、「サービス間での混乱した代理問題の防止」を参照してください。

    JSON
    { "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:*" } } } ] }
  9. [保存] をクリックし、[次へ] をクリックします。

  10. [ローテーションの設定] は、デフォルト値のままにして、[次へ] を選択します。

  11. シークレットの設定を確認し、[保存] をクリックします。

  12. 作成したシークレットを選択し、[シークレット ARN] の値をコピーします。これを次のステップで使用して、セルフマネージド Active Directory をセットアップします。

ステップ 6: SQL Server DB インスタンスを作成または変更する

コンソール、CLI、または RDS API を使用して、RDS for SQL Server DB インスタンスをセルフマネージド AD ドメインに関連付けることができます。これには以下の 2 つの方法があります。

AWS CLI を使用する場合は、DB インスタンスが、作成したセルフマネージド Active Directory ドメインを使用できるように、以下のパラメータが必要です。

  • --domain-fqdn パラメータには、セルフマネージド Active Directory の完全修飾ドメイン名 (FQDN) を使用してください。

  • --domain-ou パラメータには、セルフマネージド AD で作成した OU を使用します。

  • --domain-auth-secret-arn パラメータには、前のステップで作成した[シークレット ARN] の値を使用します。

  • --domain-dns-ips パラメータには、セルフマネージド AD の DNS サーバーのプライマリ IPv4 アドレスとセカンダリ IPv4 アドレスを使用します。セカンダリ DNS サーバーの IP アドレスがない場合は、プライマリ IP アドレスを 2 回入力します。

次の CLI コマンドの例は、セルフマネージド AD ドメインを使用して RDS for SQL Server DB インスタンスを作成、変更、削除する方法を示しています。

重要

DB インスタンスを変更してセルフマネージド AD ドメインに参加させたり、削除したりする場合、変更を有効にするには DB インスタンスを再起動する必要があります。変更をすぐに適用するか、次のメンテナンスウィンドウまで待つかを選択できます。[すぐに適用] オプションを選択すると、シングル AZ DB インスタンスのダウンタイムが発生します。マルチ AZ DB インスタンスは、再起動を完了する前にフェイルオーバーを実行します。詳細については、「スケジュール変更設定の使用」を参照してください。

次の CLI コマンドは、新しい RDS for SQL Server DB インスタンスを作成し、それをセルフマネージド AD ドメインに参加させます。

Linux、macOS、Unix の場合:

aws rds create-db-instance \ --db-instance-identifier my-DB-instance \ --db-instance-class db.m5.xlarge \ --allocated-storage 50 \ --engine sqlserver-se \ --engine-version 15.00.4043.16.v1 \ --license-model license-included \ --master-username my-master-username \ --master-user-password my-master-password \ --domain-fqdn my_AD_domain.my_AD.my_domain \ --domain-ou OU=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-identifier my-DB-instance ^ --db-instance-class db.m5.xlarge ^ --allocated-storage 50 ^ --engine sqlserver-se ^ --engine-version 15.00.4043.16.v1 ^ --license-model license-included ^ --master-username my-master-username ^ --master-user-password my-master-password ^ --domain-fqdn my-AD-test.my-AD.mydomain ^ --domain-ou OU=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"

次の CLI コマンドは、セルフマネージド Active Directory ドメインを使用するように既存の RDS for SQL Server DB インスタンスを変更します。

Linux、macOS、Unix の場合:

aws rds modify-db-instance \ --db-instance-identifier my-DB-instance \ --domain-fqdn my_AD_domain.my_AD.my_domain \ --domain-ou OU=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 modify-db-instance ^ --db-instance-identifier my-DBinstance ^ --domain-fqdn my_AD_domain.my_AD.my_domain ^ --domain-ou OU=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"

次の CLI コマンドは、セルフマネージド Active Directory ドメインから RDS for SQL Server DB インスタンスを削除します。

Linux、macOS、Unix の場合:

aws rds modify-db-instance \ --db-instance-identifier my-DB-instance \ --disable-domain

Windows の場合:

aws rds modify-db-instance ^ --db-instance-identifier my-DB-instance ^ --disable-domain

ステップ 7: Windows 認証 SQL Server ログインを作成する

Amazon RDS マスターユーザーの認証情報を使用して、他の DB インスタンスと同じように SQL Server DB インスタンスに接続します。DB インスタンスはセルフマネージド AD ドメインに参加しているため、SQL Server のログインとユーザーをプロビジョニングできます。これは、セルフマネージド AD ドメインの AD ユーザーとグループユーティリティから行います。データベースへのアクセス許可は、これらの Windows ログインに付与され無効化されている標準の SQL サーバーのアクセス許可によって管理されています。

セルフマネージド AD ユーザーが SQL Server に認証するには、セルフマネージド AD ユーザー、またはそのユーザーが属するセルフマネージド Active Directory グループに、SQL Server Windows ログインが存在する必要があります。これらの SQL Server ログインでアクセスを許可したり取り消したりして、細分化されたアクセスコントロールを処理します。SQL Server ログインを持たないか、またはそのようなログインを持つセルフマネージド AD グループに属していないセルフマネージド AD ユーザーは、SQL Server DB インスタンスにアクセスできません。

セルフマネージド AD SQL Server ログインを作成するには、ALTER ANY LOGIN アクセス許可が必要です。このアクセス許可を持つログインをまだ作成していない場合は、SQL Server 認証を使用して DB インスタンスのマスターユーザーとして接続し、マスターユーザーのコンテキストでセルフマネージド AD SQL Server ログインを作成してください。

次の例のようなデータ定義言語 (DDL) コマンドを実行して、セルフマネージド AD ユーザーまたはグループへの SQL Server ログインを作成できます。

注記

my_AD_domain\my_AD_domain_user の形式で Windows 2000 以前のログイン名を使用して、ユーザーまたはグループを指定します。ユーザープリンシパル名 (UPN) を my_AD_domain_user @ my_AD_domain の形式で使用することはできません。

USE [master] GO CREATE LOGIN [my_AD_domain\my_AD_domain_user] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english]; GO

詳細については、Microsoft Developer Network ドキュメントの「ログインの作成 (Transact-SQL)」を参照してください。

ドメインのユーザー (人およびアプリケーション) は、Windows 認証を使用して、セルフマネージド AD ドメインに参加したクライアントマシンから RDS for SQL Server インスタンスに接続できるようになりました。