Amazon RDS for SQL Server DB インスタンスでの Windows 認証の使用 - Amazon Relational Database Service

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

Amazon RDS for SQL Server DB インスタンスでの Windows 認証の使用

ユーザーが Amazon RDS for Microsoft SQL Server の DB インスタンスに接続する際、Microsoft Windows 認証を使用してユーザーを認証できます。DB インスタンスは、Windows 認証を有効にするために Microsoft Active Directory (Enterprise Edition) 用の AWS Directory Service (AWS Managed Microsoft AD とも呼ばれます) を使用します。ユーザーが、信頼性の高いドメインに接続された SQL Server DB インスタンスを使用して認証を実行すると、AWS Directory Service を使用して作成したドメインディレクトリに認証リクエストが転送されます。

Amazon RDS では、すべての AWS リージョンで Windows Authentication for SQL Server がサポートされています。

Amazon RDS は Windows 認証にミックスモードを使用します。この方法では、マスターユーザー (SQL Server DB インスタンスの作成に使用された名前とパスワード) が SQL 認証を使用します。マスターユーザーアカウントは特権を持つ認証情報のため、このアカウントへのアクセスを制限する必要があります。

オンプレミスまたはセルフホスト型の Microsoft Active Directory を使用して Windows 認証を取得するには、フォレストの信頼関係を確立します。信頼は、一方向または双方向にすることができます。AWS Directory Service を使用してフォレストの信頼関係を設定する手順については、AWS Directory Service Administration Guideの「信頼関係を作成する場合」を参照してください。

SQL Server DB インスタンスの Windows 認証を設定するには、次のステップに従います。詳細については、「SQL Server DB インスタンスの Windows 認証のセットアップ」を参照してください。

  1. AWS マネジメントコンソール または AWS Directory Service API のいずれかから AWS Managed Microsoft AD を使用して、AWS Managed Microsoft AD ディレクトリを作成します。

  2. AWS CLI または Amazon RDS API を使用して SQL Server DB インスタンスを作成する場合は、AWS Identity and Access Management (IAM) ロールを作成します。このロールはマネージド IAM ポリシー AmazonRDSDirectoryServiceAccess を使用し、Amazon RDS によるディレクトリへの呼び出しを許可します。SQL Server DB インスタンスの作成にコンソールを使用している場合、AWS は IAM ロールを作成します。

    ロールによるアクセスを許可するには、AWS Security Token Service (AWS STS) エンドポイントを AWS アカウントの AWS リージョンでアクティベートする必要があります。AWS STS エンドポイントはすべての AWS リージョンでデフォルトでアクティブになっているため、他のアクションを実行することなくエンドポイントを使用することができます。詳細については、IAM ユーザーガイドの「AWS リージョンでの AWS STS の管理」を参照してください。

  3. Microsoft Active Directory のツールを使用して、AWS Managed Microsoft AD ディレクトリでユーザーとグループを作成して設定します。Active Directory でユーザーとグループを作成する方法の詳細については、AWS Directory Service Administration Guideの「AWS Managed Microsoft AD のユーザーとグループを管理する」を参照してください。

  4. ディレクトリと DB インスタンスを異なる VPC に配置する場合は、クロス VPC トラフィックを有効にします。

  5. Amazon RDS を使用して、コンソール、AWS CLI、または Amazon RDS API のいずれかのものから 新しい SQL Server DB インスタンスを作成します。作成リクエストで、ディレクトリの作成時に生成されたドメイン識別子 (「d-*」識別子) と、作成したロールの名称を指定します。DB インスタンスのドメインおよび IAM ロールパラメータを設定して、既存の SQL Server DB インスタンスを Windows 認証を使用するように変更することもできます。

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

Kerberos 認証のエンドポイントの作成

Kerberos に基づく認証では、エンドポイントは「お客様が指定したホスト名、ピリオド、省略なしのドメイン名 (FQDN)」の形式である必要があります。次の例は、Kerberos に基づく認証で使用できるエンドポイントの例です。この例では、SQL Server DB インスタンスのホスト名は ad-test、ドメイン名は corp-ad.company.com です。

ad-test.corp-ad.company.com

接続で Kerberos が使用されていることを確認するには、次のクエリを実行します。

SELECT net_transport, auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID;

SQL Server DB インスタンスの Windows 認証のセットアップ

SQL Server DB インスタンスの Windows 認証をセットアップするには、Microsoft Active Directory (Enterprise Edition) 用の AWS Directory Service (AWS Managed Microsoft AD とも呼ばれます) を使用します。Windows 認証を設定するには、次の手順を実行します。

ステップ 1: Microsoft Active Directory (Enterprise Edition) 用の AWS Directory Service を使用してディレクトリを作成する

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 には保存されず、復元やリセットもできません。

  • ディレクトリコントローラー用セキュリティグループを作成します。

Microsoft Active Directory (Enterprise Edition) 用の AWS Directory Service を立ち上げると、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 でディレクトリを作成するには

  1. AWS Directory Service コンソールのナビゲーションペインで、[ディレクトリ]、[ディレクトリの設定] の順に選択します。

  2. [AWS Managed Microsoft AD] を選択します。これは Amazon RDS 用に現在サポートされている唯一のオプションです。

  3. [Next] を選択します。

  4. [ディレクトリ情報の入力] ページに、以下の情報を指定します。

    エディション

    目的の要件を満たすエディションを選択します。

    ディレクトリの DNS 名

    ディレクトリの完全修飾名。例: corp.example.com。47 文字を超える名前は SQL Server でサポートされていません。

    ディレクトリの NetBIOS 名

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

    ディレクトリの説明

    必要に応じて、ディレクトリの説明。

    Admin パスワード

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

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

    • 小文字 (a〜z)

    • 大文字 (A〜Z)

    • 番号 (0〜9)

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

    パスワードを確認

    管理者のパスワードをもう一度入力します。

  5. [Next] を選択します。

  6. [VPC とサブネットの選択] ページで、以下の情報を指定します。

    VPC

    ディレクトリ用の VPC を選択します。

    注記

    ディレクトリと DB インスタンスは異なる VPC に配置できますが、その場合、必ずクロス VPC トラフィックを有効にしてください。詳細については、「ステップ 4: ディレクトリと DB インスタンス間のクロス VPC トラフィックを有効にする」を参照してください。

    Subnets

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

  7. [Next] を選択します。

  8. ディレクトリの情報を確認します。変更が必要な場合は、[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 へのアクセスを提供します。

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

このポリシーを使用して 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 Administration Guideの「ユーザーとグループを追加する (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 トラフィックを有効にするには

  1. 適切な VPC ルーティングを設定し、ネットワークトラフィックが双方向にフローするようにします。

  2. DB インスタンスのセキュリティグループが、ディレクトリのセキュリティグループからのインバウンドトラフィックを受信できることを確認します。

  3. トラフィックをブロックするネットワークのアクセスコントロールリスト (ACL) ルールがないことを確認します。

別の AWS アカウントがディレクトリを所有している場合は、ディレクトリを共有する必要があります。

AWS アカウント間でディレクトリを共有するには

  1. AWS Directory Service 管理ガイドの「チュートリアル: AWS Managed Microsoft AD ディレクトリを共有して、シームレスに EC2 ドメインを結合する」の手順を実行して、DB インスタンスを作成する AWS アカウントとディレクトリの共有を開始します。

  2. DB インスタンスのアカウントを使用して、AWS Directory Service コンソールにサインインし、続行する前にドメインが必ず SHARED ステータスであることを確認します。

  3. DB インスタンスのアカウントを使用して AWS Directory Service コンソールにサインインしている間に、[ディレクトリ ID] の値を書き留めておきます。このディレクトリ ID は、DB インスタンスをドメインに結合するために使用します。

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

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

Windows 認証は、VPC 内の SQL Server DB インスタンスにのみサポートされています。

DB インスタンスが、作成したドメインディレクトリを使用できるようにするには、次が必要です。

  • [ディレクトリ] では、ディレクトリの作成時に生成されたドメイン識別子 (d-ID) を選択する必要があります。

  • VPC セキュリティグループに、ディレクトリとの通信を DB インスタンスに許可するアウトバウンドルールがあることを確認します。


					Microsoft SQL Server の Windows 認証ディレクトリ

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-name role-name

Windows の場合:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --domain d-ID ^ --domain-iam-role-name role-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 ログインを作成します。

注記

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

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 SQL Server インスタンスに接続できるようになりました。

ドメインの DB インスタンスの管理

コンソール、AWS CLI、または Amazon RDS API を使用して、DB インスタンスとドメインの関係を管理できます。たとえば、DB インスタンスをドメイン内、ドメイン外、またはドメイン間で移動させることができます。

たとえば、Amazon RDS API を使用して次を実行できます。

  • 失敗したメンバーシップのドメイン参加を再試行するには、ModifyDBInstance API オペレーションを使用して、現在のメンバーシップのディレクトリ ID を指定します。

  • メンバーシップの IAM ロール名を更新するには、ModifyDBInstance API オペレーションを使用し、現在のメンバーシップのディレクトリ ID と新しい IAM ロールを指定します。

  • ドメインから DB インスタンスを削除するには、ModifyDBInstance API オペレーションを使用し、ドメインパラメータとして none を指定します。

  • ドメイン間で DB インスタンスを移動するには、ModifyDBInstance API オペレーションを使用し、新しいドメインのドメイン識別子をドメインパラメータとして指定します。

  • 各 DB インスタンスのメンバーシップを一覧表示するには、DescribeDBInstances API オペレーションを使用します。

ドメインのメンバーシップを理解する

DB インスタンスを作成または変更した後、そのインスタンスは、ドメインのメンバーになります。AWS コンソールは、DB インスタンスのドメインメンバーシップのステータスを示します。DB インスタンスのステータスは、以下のいずれかです。

  • joined (参加済み) – インスタンスはドメインのメンバーになっています。

  • joining (参加中) – インスタンスは、ドメインのメンバーになる途中です。

  • pending-join (参加保留中) – インスタンスのメンバーシップは保留中です。

  • pending-maintenance-join (メンテナンスまで参加保留中) – AWS は次に予定されているメンテナンスウィンドウ中に、ドメインへのインスタンスの参加を試みます。

  • pending-removal (削除保留中) – ドメインからのインスタンス削除は保留中です。

  • pending-maintenance-removal (メンテナンスまで削除保留中) – AWS は次に予定されているメンテナンスウィンドウ中に、ドメインからのインスタンス削除を試みます。

  • failed (失敗) – 設定の問題により、インスタンスはドメインに参加できませんでした。インスタンスの変更コマンドを再発行する前に、設定を確認して修正してください。

  • removing (削除中) – インスタンスをドメインから削除しています。

ドメインのメンバーになるリクエストは、ネットワーク接続の問題や正しくない IAM ロールが原因で失敗する場合があります。たとえば、DB インスタンスを作成した、または既存のインスタンスを変更したが、DB インスタンスをドメインに参加させられない場合があります。この場合、コマンドを再発行して DB インスタンスを作成または変更するか、新しく作成されたインスタンスを変更してドメインに参加させます。

Windows 認証を使用して SQL Server に接続する

Windows 認証を使用して SQL Server に接続するには、ドメインのユーザーとしてドメイン結合されたコンピュータにログインしている必要があります。SQL Server Management Studio の起動後、認証タイプとして Windows 認証を選択します (以下参照)。


				SQL Server 2012 への接続

SQL Server DB インスタンスを復元してドメインに追加する

SQL Server DB インスタンスの DB スナップショットまたはポイントインタイムリカバリ (PITR) を復元し、ドメインに追加できます。DB インスタンスが復元されたら、「ステップ 5: SQL Server DB インスタンスを作成または変更する」で説明している手順に従ってインスタンスを変更し、DB インスタンスをドメインに追加します。