SQL Server DB インスタンスの Windows 認証のセットアップ
SQL Server DB インスタンスの Windows 認証をセットアップするには、AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD とも呼ばれます) を使用します。Windows 認証を設定するには、次の手順を実行します。
ステップ 1: AWS Directory Service for Microsoft Active Directory を使用してディレクトリを作成する
AWS Directory Service は完全マネージド型の Microsoft Active Directory を AWS クラウドに作成します。AWS Managed Microsoft AD ディレクトリを作成すると、AWS Directory Service がユーザーに代わって 2 つのドメインコントローラーと 2 つのドメインネームサービス (DNS) サーバーを作成します。ディレクトリサーバーは、 VPC 内の 2 つの異なるアベイラビリティーゾーンの 2 つのサブネットで作成されています。この冗長性により、障害が発生してもディレクトリがアクセスできるようになります。
AWS Managed Microsoft AD ディレクトリを作成すると、AWS Directory Service がユーザーに代わって自動的に以下のタスクを実行します。
-
VPC 内に Microsoft Active Directory を設定します。
-
「Admin」のユーザー名と指定されたパスワードを使用して、ディレクトリ管理者アカウントを作成します。このアカウントはディレクトリの管理に使用します。
-
ディレクトリコントローラー用のセキュリティグループを作成する。
AWS Directory Service for Microsoft Active Directory を立ち上げると、AWS は組織単位 (OU) を作成します。OU にはディレクトリのオブジェクトがすべて含まれています。この OU はドメインルートにあります。OU にはディレクトリを作成する際に入力した NetBIOS 名があります。ドメインルートは AWS が所有し、管理します。
AWS Managed Microsoft AD ディレクトリに作成された管理者アカウントには、次のような、OU で最も一般的な管理業務用のアクセス権限があります。
-
ユーザー、グループ、およびコンピュータを作成、更新、または削除する
-
ファイルやプリントサーバーなどのドメインにリソースを追加して、追加したリソースへのアクセス許可を OU のユーザーとグループに割り当てる。
-
追加の OU やコンテナを作成する。
-
権限を委譲する。
-
グループポリシーを作成し、リンクする。
-
削除されたオブジェクトを Active Directory のごみ箱から元に戻す。
-
Active Directory Web Service で AD と DNS Windows PowerShell モジュールを実行する。
管理者アカウントには、ドメイン全体に関係するアクティビティを実行する権限もあります。
-
DNS 設定 (レコード、ゾーン、フォワーダーの追加、削除、または更新) を管理する。
-
DNS イベントログを参照する。
-
セキュリティイベントログを参照する。
AWS Managed Microsoft AD でディレクトリを作成するには
-
AWS Directory Service コンソール
のナビゲーションペインで、[ディレクトリ]、[ディレクトリの設定] の順に選択します。 -
AWS Managed Microsoft AD を選択します。これは Amazon RDS 用に現在サポートされている唯一のオプションです。
-
[次へ] を選択します。
-
[ディレクトリ情報の入力] ページに、以下の情報を指定します。
- エディション
-
目的の要件を満たすエディションを選択します。
- ディレクトリの DNS 名
-
ディレクトリの完全修飾名。例:
corp.example.com
。47 文字を超える名前は SQL Server でサポートされていません。 - ディレクトリの NetBIOS 名
-
ディレクトリの短縮名 (例:
CORP
)。 - ディレクトリの説明
-
必要に応じて、ディレクトリの説明。
- 管理者パスワード
-
ディレクトリ管理者のパスワードです。ディレクトリの作成プロセスでは、ユーザー名「Admin」とこのパスワードを使用して管理者アカウントが作成されます。
ディレクトリ管理者のパスワードに「
admin
」の単語を含めることはできません。パスワードは大文字と小文字を区別し、8–64 文字にします。また、以下の 4 つのカテゴリうち 3 つから少なくとも 1 文字を含める必要があります。-
小文字 (a〜z)
-
大文字 A〜Z
-
数字 (0〜9)
-
アルファベットと数字以外の文字 (~!@#$%^&*_-+=`|\(){}[]:;"'<>,.?/)
-
- [Confirm password] (パスワードを確認)
-
管理者のパスワードをもう一度入力します。
-
[次へ] を選択します。
-
[VPC とサブネットの選択] ページで、以下の情報を指定します。
- VPC
-
ディレクトリ用の VPC を選択します。
注記
ディレクトリと DB インスタンスは異なる VPC に配置できますが、その場合、必ずクロス VPC トラフィックを有効にしてください。詳細については、「ステップ 4: ディレクトリと DB インスタンス間のクロス VPC トラフィックを有効にする」を参照してください。
- Subnets
-
ディレクトリサーバーのサブネットを選択します。2 つのサブネットは、異なるアベイラビリティーゾーンに存在している必要があります。
-
[次へ] を選択します。
-
ディレクトリの情報を確認します。変更が必要な場合は、[Previous] を選択します。情報が正しい場合は、[Create directory (ディレクトリの作成)] を選択します。
ディレクトリが作成されるまで、数分かかります。正常に作成されると、[Status] 値が [Active] に変わります。
ディレクトリに関する情報を表示するには、ディレクトリの一覧で、そのディレクトリを選択します。ディレクトリ ID を書き留めます。この値は、SQL Server DB インスタンスを作成または変更するときに必要になります。

ステップ 2: Amazon RDS 用の IAM ロールを作成する
コンソールを使用して SQL Server DB インスタンスを作成する場合、このステップをスキップできます。SQL Server DB インスタンスの作成に CLI または RDS API を使用する場合、AmazonRDSDirectoryServiceAccess
マネージド IAM ポリシーを使用する IAM ロールを作成する必要があります。このロールを使用すると、Amazon RDS で AWS Directory Service への呼び出しを行うことができます。
AWS 管理 AmazonRDSDirectoryServiceAccess
ポリシーではなく、ドメインを結合するためのカスタムポリシーを使用する場合は、ds:GetAuthorizedApplicationDetails
アクションを許可する必要があります。AWS Directory Service API の変更により、この要件は、2019 年 7 月から有効となります。
次の IAM ポリシー AmazonRDSDirectoryServiceAccess
は、AWS Directory Service へのアクセスを提供します。
例 AWS Directory Service へのアクセスを提供する IAM ポリシー
リソースベースの信頼関係では aws:SourceArn
および aws:SourceAccount
のグローバル条件コンテキストキーを使用して、サービスに付与する特定のリソースへのアクセス許可を制限することをお勧めします。これは、混乱した使節の問題に対する最も効果的な保護方法です。
両方のグローバル条件コンテキストキーを使用し、aws:SourceArn
値にアカウント ID を含めます。この場合は、aws:SourceAccount
値と aws:SourceArn
値のアカウントは、同じステートメントで使用する場合、同じアカウント ID を使用する必要があります。
-
単一リソースに対するクロスサービスアクセスが必要な場合は
aws:SourceArn
を使用します。 -
そのアカウント内の任意のリソースをクロスサービス使用に関連付けることを許可する場合、
aws:SourceAccount
を使用します。
信頼関係では、aws:SourceArn
グローバル条件コンテキストキーに、必ず、ロールにアクセスするリソースの完全な Amazon リソースネーム (ARN) を使用します。Windows 認証の場合、次の例に示すように DB インスタンスを含めてください。
例 Windows 認証のグローバル条件コンテキストキーとの信頼関係
この IAM ポリシーと信頼関係を使用して IAM ロールを作成します。IAM ロールの作成の詳細については、IAM ユーザーガイドの「カスタマー管理ポリシーの作成」を参照してください。
ステップ 3: ユーザーとグループを作成して設定する
Active Directory ユーザーとコンピューターツールを使用して、ユーザーとグループを作成できます。このツールは、Active Directory Domain Services ツールおよび Active Directory Lightweight Directory Services ツールの 1 つです。ユーザーは、ディレクトリにアクセスできる個別の人またはエンティティを表します。グループは、個別のユーザーごとに権限を付与するのではなく、ユーザーのグループに権限を付与または拒否するために非常に便利です。
AWS Directory Service ディレクトリにユーザーとグループを作成するには、AWS Directory Service ディレクトリのメンバーである Windows EC2 インスタンスに接続する必要があります。また、ユーザーとグループを作成する権限を持つユーザーとしてログインしている必要があります。詳細については、AWS Directory Service 管理ガイドの「ユーザーとグループを追加する (Simple AD および AWS Managed Microsoft AD)」を参照してください。
ステップ 4: ディレクトリと DB インスタンス間のクロス VPC トラフィックを有効にする
同じ VPC 内にディレクトリおよび DB インスタンスを配置する場合は、このステップをスキップして ステップ 5: SQL Server DB インスタンスを作成または変更する に進みます。
ディレクトリと DB インスタンスを別の VPC に配置する場合は、VPC ピア接続または AWS Transit Gateway を使用してクロス VPC トラフィックを設定します。
次の手順では、VPC ピア接続を使用して VPC 間のトラフィックを有効にします。Amazon Virtual Private Cloud ピアリング接続ガイドの「VPC ピア機能とは」の手順に従います。
VPC ピア接続を使用してクロス VPC トラフィックを有効にするには
-
適切な VPC ルーティングを設定し、ネットワークトラフィックが双方向にフローするようにします。
-
DB インスタンスのセキュリティグループが、ディレクトリのセキュリティグループからのインバウンドトラフィックを受信できることを確認します。
-
トラフィックをブロックするネットワークのアクセスコントロールリスト (ACL) ルールがないことを確認します。
別の AWS アカウントがディレクトリを所有している場合は、ディレクトリを共有する必要があります。
AWS アカウント間でディレクトリを共有するには
-
DB インスタンスを作成する AWS アカウントとの間でディレクトリの共有を開始するには、AWS Managed Microsoft AD 管理ガイドの「チュートリアル: AWS Directory Service ディレクトリを共有して、シームレスに EC2 ドメインを結合する」の手順を実行します。
-
DB インスタンスのアカウントを使用して、AWS Directory Service コンソールにサインインし、続行する前にドメインが必ず
SHARED
ステータスであることを確認します。 -
DB インスタンスのアカウントを使用して AWS Directory Service コンソールにサインインしている間に、[ディレクトリ ID] の値を書き留めておきます。このディレクトリ ID は、DB インスタンスをドメインに結合するために使用します。
ステップ 5: SQL Server DB インスタンスを作成または変更する
ディレクトリで使用する SQL Server DB インスタンスを作成または変更します。コンソール、CLI、RDS API を使用して DB インスタンスとディレクトリを関連付けることができます。これには以下の 2 つの方法があります。
-
コンソール、create-db-instance CLI コマンド、または CreateDBInstance RDS API オペレーションを使用して、新しい SQL Server DB インスタンスを作成します。
手順については、「Amazon RDS DB インスタンスの作成」を参照してください。
-
コンソール、modify-db-instance CLI コマンド、または ModifyDBInstance RDS API オペレーションを使用して、既存の SQL Server DB インスタンスを変更します。
手順については、「Amazon RDS DB インスタンスを変更する」を参照してください。
-
コンソール、restore-db-instance-from-db-snapshot CLI コマンド、または RestoreDBInstanceFromDBSnapshot RDS API オペレーションを使用して、DB スナップショットから SQL Server DB インスタンスを復元します。
手順については、「DB インスタンスへの復元」を参照してください。
-
コンソール、restore-db-instance-to-point-in-time CLI コマンド、または RestoreDBInstanceToPointInTime RDS API オペレーションを使用して、SQL Server DB インスタンスをポイントインタイムに復元します。
手順については、「Amazon RDS の DB インスタンスを特定の時点に復元する」を参照してください。
Windows 認証は、VPC 内の SQL Server DB インスタンスにのみサポートされています。
DB インスタンスが、作成したドメインディレクトリを使用できるようにするには、次が必要です。
-
[ディレクトリ] では、ディレクトリの作成時に生成されたドメイン識別子 (
d-
) を選択する必要があります。ID
-
VPC セキュリティグループに、ディレクトリとの通信を DB インスタンスに許可するアウトバウンドルールがあることを確認します。

AWS CLI を使用する場合は、DB インスタンスが、作成したディレクトリを使用できるように、以下のパラメータが必要です。
-
--domain
パラメータには、ディレクトリの作成時に生成されたドメイン識別子 (d-
) を使用します。ID
-
--domain-iam-role-name
パラメータには、マネージド IAM ポリシーAmazonRDSDirectoryServiceAccess
を使用する作成済みのロールを使用します。
例えば、以下の CLI コマンドはディレクトリを使用するように DB インスタンスを変更します。
Linux、macOS、Unix の場合:
aws rds modify-db-instance \ --db-instance-identifier
mydbinstance
\ --domain d-ID
\ --domain-iam-role-namerole-name
Windows の場合:
aws rds modify-db-instance ^ --db-instance-identifier
mydbinstance
^ --domain d-ID
^ --domain-iam-role-namerole-name
重要
Kerberos 認証を有効化するために DB インスタンスを変更する場合、変更後 DB インスタンスを再起動します。
ステップ 6: Windows 認証の SQL Server ログインを作成する
Amazon RDS マスターユーザーの認証情報を使用して、他の DB インスタンスと同じように SQL Server DB インスタンスに接続します。DB インスタンスは AWS Managed Microsoft AD ドメインに参加しているため、SQL Server のログインとユーザーをプロビジョニングできます。これは、ドメイン内の Active Directory のユーザーとグループから行われます。データベースへのアクセス許可は、これらの Windows ログインに付与され無効化されている標準の SQL サーバーのアクセス許可によって管理されています。
Active Directory のユーザーが SQL Server で認証するには、ユーザー、またはそのユーザーがメンバーとして含まれているグループに、SQL Server の Windows ログインが存在する必要があります。これらの SQL Server ログインでアクセスを許可したり取り消したりして、細分化されたアクセスコントロールを処理します。SQL Server ログインを持たないユーザー、またはそのようなログインを持つグループに属さないユーザーは、SQL Server DB インスタンスにアクセスできません。
Active Directory の SQL Server ログインを作成するには、ALTER ANY LOGIN 許可が必要です。このアクセス許可を持つログインをまだ作成していない場合は、SQL Server 認証を使用して DB インスタンスのマスターユーザーとして接続します。
次の例のようなデータ定義言語 (DDL) コマンドを実行して、Active Directory ユーザーまたはグループへの SQL Server ログインを作成します。
注記
の形式で Windows 2000 以前のログイン名を使用して、ユーザーまたはグループを指定します。ユーザープリンシパル名 (UPN) を domainName
\login_name
login_name
@
の形式で使用することはできません。DomainName
T-SQL ステートメントを使用することによってのみ、RDS for SQL Server インスタンスで Windows 認証ログインを作成することができます。SQL Server Management Studio を使用して Windows 認証ログインを作成することはできません。
USE [master] GO CREATE LOGIN [
mydomain
\myuser
] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english]; GO
詳細については、Microsoft Developer Network ドキュメントの「ログインの作成 (Transact-SQL)
ドメインのユーザー (人およびアプリケーション) が Windows 認証を使用して、クライアントマシンを結合したドメインから RDS for SQL Server インスタンスに接続できるようになりました。