AWS Managed Microsoft Active Directory で Amazon RDS for SQL Server の Windows 認証に関する問題をトラブルシューティングするにはどうすればよいですか?

最終更新日: 2021 年 2 月 10 日

AWS アカウント用に設定された Microsoft Active Directory (Microsoft AD) 用の AWS Directory Service を利用しています。しかし、SQL Server を実行する Amazon Relational Database Service (Amazon RDS) DB インスタンスを作成しようとすると、次のいずれかの問題が発生します。

  • Active Directory を利用できない。
  • 「ホストをドメインに参加させることができませんでした」というエラーが表示されるか、RDS コンソールの Directory Status に「失敗」と表示されます。
  • Windows 認証を使用して DB インスタンスにログインできない

AWS Managed Microsoft AD を使用してこれらの問題をトラブルシューティングするにはどうすればよいですか?

簡単な説明

SQL Server を実行する Amazon RDS DB インスタンスの Windows 認証が、複数の AWS アカウントと Amazon VPC でサポートされるようになりました。単一の AWS Managed Microsoft AD を複数の AWS アカウントと VPC で共有し、ディレクトリ対応のデータベースワークロードを簡単に管理できます。ただし、これは、RDS SQL Server DB インスタンスが AWS Managed Microsoft AD と同じ AWS リージョンにある場合にのみ当てはまります。

解決方法

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

DB インスタンスを作成するときに Active Directory がリストに表示されない、または Active Directory を使用できない

重要: Amazon RDS コンソールに Active Directory を一覧表示するには、管理対象のドメインの種類が AWS Managed Active Directory である必要があります。

AWS Managed Directory Service が DB インスタンスとは異なる AWS リージョンにある場合、DB インスタンスを作成または変更するときに、そのディレクトリは表示されません。この問題を解決するには、DB インスタンスが Directory Service と同じ AWS リージョンにあることを確認してください。

RDS DB インスタンスと Directory Services が同じリージョンにあるかどうかを確認します。

  1. Amazon RDS コンソールを開き、ナビゲーションペインから [Databases] (データベース) を選択します。
  2. ディレクトリに接続したい DB インスタンスを選択します。
  3. [Summary] (概要) セクションで、DB インスタンスに関連付けられているリージョンを確認します。
  4. Directory Service コンソールをチェックして、Directory Service が DB インスタンスと同じ AWS リージョンにあることを確認します。

AWS Managed Directory Service が DB インスタンスとは別の AWS アカウントにある場合は、AWS Directory Service を AWS アカウントと共有します。その後、DB インスタンスの作成または変更中に Directory Service を一覧表示できます。

  1. DB インスタンスの作成先となる AWS アカウントとのディレクトリの共有を開始します。AWS Directory Service 管理ガイドの「AWS Managed Microsoft AD ディレクトリを共有してシームレスに EC2 ドメインに参加する」の手順に従います。
  2. DB インスタンスのアカウントを使用して AWS Directory Service コンソールにサインインします。続行する前に、ドメインのステータスが [SHARED] (共有) になっていることを確認してください。
  3. Directory ID の値ではなく、DB インスタンスのアカウントを使用して AWS Directory Service コンソールにサインインします。このディレクトリ ID を使用して、DB インスタンスをドメインに参加させます。

RDS コンソールで DB インスタンスをドメインまたは Directory Status に参加させようとすると「失敗」というエラーが表示される

DB インスタンスをドメインに参加させようとすると、次のエラーメッセージが表示されるか、 Directory Status が [Failed] (失敗) と表示されることがあります。

「ホストをドメインに参加させることができませんでした。インスタンス XXXXXXX のドメインメンバーシップのステータスが失敗に設定されています」

AWS Managed Directory Service が同じアカウントで異なる VPC、または DB インスタンスとは異なる AWS アカウントにある場合は、AWS Managed Directory Service VPC と DB インスタンス VPC 間のクロスVPC トラフィックを有効にします。これを行うには、VPC ピアリングまたは AWS Transit Gateway を使用します。クロス VPC トラフィックフローを正常に有効にするために必要な送信先ルートが VPC ルートテーブルにあることを確認します。

セキュリティグループのインバウンドルールとアウトバウンドルールで、DB インスタンスが Active Directory と通信できるように設定されていることを確認します。その後、以下の手順に従って、DB インスタンスをドメインに再度参加させます。

  1. Amazon RDS コンソールを開き、ナビゲーションペインから [Databases] (データベース) を選択します。
  2. ドメインへの参加に失敗した DB インスタンスを選択してから、[Modify] (変更) を選択します。
  3. [Microsoft SQL Server Windows Authentication] (Microsoft SQL Server Windows 認証) セクションの [Directory] (ディレクトリ) で、[None] (なし) を選択します。
  4. [Apply immediately] (すぐに適用) を選択します。変更が完了すると、DB インスタンスが自動的に再起動されます。
  5. ディレクトリに再度参加させるには、ナビゲーションペインから [Databases] (データベース) を選択してください。
  6. DB インスタンスを選択し、[Modify] (変更) を選択します。
  7. [Microsoft SQL Server Windows Authentication] (Microsoft SQL Server Windows 認証) セクションの [Directory] (ディレクトリ) で、リストからディレクトリを選択します。
  8. [Apply immediately] (すぐに適用) を選択します。変更が完了すると、DB インスタンスがまた再起動されます。

ModifyDBInstance オペレーションを呼び出すときにエラーが発生しました (InvalidParameterCombination): 提供された IAM ロールが有効ではありません。ロールが存在し、正しいポリシーがあることを確認してください

AWS CLI を使用して DB インスタンスに Directory Service をアタッチする場合は、デフォルトの IAM ロールである rds-directoryservice-access-role を使用します。カスタム IAM ロールを使用している場合は、デフォルトのポリシーである AmazonRDSDirectoryServiceAccess をカスタム IAM ロールにアタッチして、「提供された IAM ロールが有効ではありません」というエラーを解決します。

Windows 認証を使用して DB インスタンスにログインできない

Windows 認証を使用してログインするには、DB インスタンスのプライマリユーザーの認証情報を使用して、Active Directory ユーザーまたはグループの DB インスタンスで SQL ログイン情報を作成します。オンプレミスの Active Directory でグループまたはユーザーを使用している場合は、信頼関係を作成する必要があります。

  1. SQL Server Management Studio (SSMS) を使用して、プライマリユーザーを使用して DB インスタンスにログインします。

  2. T-SQL を使用して Windows 認証ログイン情報を作成します。

CREATE LOGIN [<Domain Name>\<user or group>] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english];

注: RDS SQL Server での Windows 認証ログイン情報の作成は、T-SQL のみを使用してサポートされています。SQL Server Management Studio では、GUI を使用してログイン情報を作成することはできません。

  • Windows 認証を使用して DB インスタンスに接続します。