AD Connector の開始 - AWS Directory Service

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

AD Connector の開始

AD Connector を使用すると、既存のエンタープライズ AWS Directory Service に接続できます。Active Directory。 既存のディレクトリに接続すると、すべてのディレクトリデータがドメインコントローラーに残ります。 AWS Directory Service はディレクトリデータをレプリケートしません。

AD Connector の前提条件

AD Connector を使用して既存のディレクトリに接続するには、以下が必要です。

Amazon VPC

以下VPCを使用して を設定します。

  • 少なくとも 2 つのサブネット。各サブネットはそれぞれ異なるアベイラビリティーゾーンにある必要があります。

  • は、仮想プライベートネットワーク (VPN) 接続または を介して既存のネットワークに接続VPCする必要があります AWS Direct Connect。

  • にはデフォルトのハードウェアテナンシーVPCが必要です。

AWS Directory Service は 2 つのVPC構造を使用します。ディレクトリを構成するEC2インスタンスは、 AWS アカウント外で実行され、 によって管理されます AWS。これらには、2 つのネットワークアダプタ (ETH0 および ETH1) があります。ETH0 は管理アダプタで、アカウント外部に存在します。ETH1 はアカウント内で作成されます。

ディレクトリのETH0ネットワークの管理 IP 範囲は、ディレクトリがデプロイVPCされている と競合しないようにプログラムで選択されます。この IP 範囲は、(ディレクトリが 2 つのサブネットで実行されるため) 次のいずれかのペアになります。

  • 10.0.1.0/24 と 10.0.2.0/24

  • 169.254.0.0/16

  • 192.168.1.0/24 と 192.168.2.0/24

の最初のオクテットをチェックすることで、競合を回避できますETH1CIDR。10 で始まる場合は、192.168.0.0/16 と VPC 192.168.1.0/24 および 192.168.2.0/24 サブネットを選択します。最初のオクテットが 10 以外の場合は、10.0.1.0/24 および 10.0.2.0/24 サブネットVPCを持つ 10.0.0.0/16 を選択します。

選択アルゴリズムには、 上のルートは含まれませんVPC。そのため、このシナリオから IP ルーティングの競合が発生する可能性があります。

詳細については、Amazon VPCユーザーガイドの以下のトピックを参照してください。

の詳細については AWS Direct Connect、AWS Direct Connect 「 ユーザーガイド」を参照してください。

既存の Active Directory

を使用して既存のネットワークに接続する必要があります。Active Directory ドメイン。

注記

AD Connector は、単一ラベルのドメインをサポートしていません。

このの機能レベル Active Directory ドメインは Windows Server 2003 以上である必要があります。AD Connector は、Amazon EC2インスタンスでホストされているドメインへの接続もサポートしています。

注記

AD Connector は、Amazon ドメイン結合機能と組み合わせて使用する場合、読み取り専用EC2ドメインコントローラー (RODC) をサポートしていません。

サービスアカウント

次の権限が委任されている既存のディレクトリのサービスアカウントの認証情報が必要です。

  • ユーザーおよびグループの読み取り - 必須

  • コンピュータをドメインに結合する - Seamless Domain Join と を使用する場合にのみ必要です WorkSpaces

  • コンピュータオブジェクトの作成 - Seamless Domain Join と を使用する場合にのみ必要です WorkSpaces

  • サービスアカウントのパスワードは、パスワード要件に準拠 AWS している必要があります。 AWS パスワードは次のようになります。

    • 8~128 文字の長さ。

    • 次の 4 つのカテゴリのうち 3 つから少なくとも 1 つの文字を含めます。

      • 小文字 a〜z

      • 大文字 A〜Z

      • 数字 (0〜9)

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

詳細については、「権限をサービスアカウントに委任する」を参照してください。

注記

AD Connector は、 AWS アプリケーションの認証と認可に Kerberos を使用します。LDAP は、ユーザーおよびグループオブジェクトのルックアップ (読み取りオペレーション) にのみ使用されます。LDAP トランザクションでは、何も変更されず、認証情報はクリアテキストで渡されません。認証は、Kerberos チケットを使用してユーザーとしてLDAPオペレーションを実行する AWS 内部サービスによって処理されます。

ユーザーアクセス許可

すべての Active Directory ユーザーは、各ユーザー独自の属性を読み取るアクセス許可を持っている必要があります。具体的には次の属性があります。

  • GivenName

  • SurName

  • Mail

  • SamAccountName

  • UserPrincipalName

  • UserAccountControl

  • MemberOf

デフォルトでは、Active Directory ユーザーには、これらの属性に対する読み取りアクセス許可があります。ただし、時間の経過に伴い管理者がこれらのアクセス許可を変更する可能性があるため、AD Connector を初めて設定する前に、ユーザーがこれらの読み取りアクセス許可を持っているかどうか確認することをお勧めします。

IP アドレス

既存のディレクトリにある 2 つのDNSサーバーまたはドメインコントローラーの IP アドレスを取得します。

AD Connector は、ディレクトリに接続するときにこれらのサーバーから _ldap._tcp.<DnsDomainName>および _kerberos._tcp.<DnsDomainName>SRVレコードを取得するため、これらのサーバーにはこれらのSRVレコードが含まれている必要があります。AD Connector は、 LDAPと Kerberos の両方のサービスを提供する共通のドメインコントローラーを見つけようとするため、これらのSRVレコードには少なくとも 1 つの共通ドメインコントローラーが含まれている必要があります。SRV レコードの詳細については、Microsoft のSRVリソースレコードを参照してください TechNet。

サブネット用のポート

AD Connector がディレクトリリクエストを既存の にリダイレクトする場合 Active Directory ドメインコントローラー、既存のネットワークのファイアウォールでは、Amazon 内の両方のサブネットCIDRsに対して次のポートが に開かれている必要がありますVPC。

  • TCP/UDP 53 - DNS

  • TCP/UDP 88 - Kerberos 認証

  • TCP/UDP 389 - LDAP

これらは、AD Connector をディレクトリに接続する前に必要な最小限のポートです。固有の設定によっては、追加ポートが開かれていることが必要です。

AD Connector と Amazon を使用する場合は WorkSpaces、ドメインコントローラーの DisableVLVSupportLDAP 属性を 0 に設定する必要があります。これはドメインコントローラーのデフォルト設定です。DisableVLVSupportLDAP 属性が有効になっている場合、AD Connector はディレクトリ内のユーザーをクエリできません。これにより、AD Connector が を操作することが防止されます Amazon WorkSpaces。

注記

既存の のDNSサーバーまたはドメインコントローラーサーバー Active Directory ドメインは 内にあります。これらのサーバーに関連付けられたセキュリティグループはVPC、 内の両方のサブネットCIDRsに対して上記のポートを に開放する必要がありますVPC。

その他のポート要件については、「」の「AD および AD DS ポート要件」を参照してください。Microsoft ドキュメント内) を参照してください。

Kerberos 事前認証

ユーザーアカウントの Kerberos 事前認証を有効にしておく必要があります。この設定を有効にする方法の詳細については、「Kerberos の事前認証が有効化されていることを確認する」を参照してください。この設定に関する一般的な情報については、 の認証前を参照してください。Microsoft TechNet.

暗号化タイプ

AD Connector は、Active Directory ドメインコントローラーへの Kerberos を介した認証時に、次のタイプの暗号化をサポートしています。

  • AES-256-HMAC

  • AES-128-HMAC

  • RC4-HMAC

AWS IAM Identity Center 前提条件

AD Connector で IAM Identity Center を使用する予定の場合は、次の点に当てはまることを確認する必要があります。

  • AD Connector は AWS 、組織の管理アカウントに設定されます。

  • IAM Identity Center のインスタンスは、AD Connector が設定されているのと同じリージョンにあります。

詳細については、 AWS IAM Identity Center 「 ユーザーガイド」のIAM「アイデンティティセンターの前提条件」を参照してください。

Multi-Factor·Authentication の前提条件

AD Connector ディレクトリで Multi-Factor·Authentication をサポートするには、以下が必要です。

  • 2 つのクライアントエンドポイントを持つ既存のネットワーク内のリモート認証ダイヤルインユーザーサービス (RADIUS) サーバー。RADIUS クライアントエンドポイントには以下の要件があります。

    • エンドポイントを作成するには、 AWS Directory Service サーバーの IP アドレスが必要です。これらの IP アドレスは、ディレクトリの詳細の [Directory IP Address] (ディレクトリの IP アドレス) フィールドから取得できます。

    • 両方のRADIUSエンドポイントで同じ共有シークレットコードを使用する必要があります。

  • 既存のネットワークでは、 AWS Directory Service サーバーからのデフォルトのRADIUSサーバーポート (1812) を介したインバウンドトラフィックを許可する必要があります。

  • RADIUS サーバーと既存のディレクトリ間のユーザー名は同じである必要があります。

で AD Connector を使用する方法の詳細についてはMFA、「」を参照してくださいAD Connector の多要素認証の有効化

権限をサービスアカウントに委任する

既存のディレクトリに接続するには、特定の権限が委任されている既存のディレクトリの AD Connector サービスアカウントの認証情報が必要です。[Domain Admins] (ドメインの管理者) グループのメンバーにはディレクトリに接続するために十分な権限がありますが、ベストプラクティスとして、そのディレクトリへの接続に必要な最小限の権限が付与されたサービスアカウントを使用することをお勧めします。次の手順では、 という新しいグループを作成しConnectors、このグループ AWS Directory Service への接続に必要な権限を委任してから、このグループに新しいサービスアカウントを追加する方法を示します。

この手順は、ディレクトリに結合され、Active Directory ユーザーとコンピュータのMMCスナップインがインストールされているマシンで実行する必要があります。また、ドメイン管理者としてログインする必要があります。

権限をサービスアカウントに委任するには
  1. [Active Directory User and Computers] (Active Directory ユーザーとコンピュータ) を開き、ナビゲーションツリーのドメインルートを選択します。

  2. 左のペインのリストで、[Users] (ユーザー) を右クリックし、[New] (新規) を選択して、[Group] (グループ) を選択します。

  3. [New Object - Group] (新しいオブジェクト - グループ) ダイアログボックスで次のように入力し、[OK] をクリックします。

    フィールド 値/選択
    グループ名 Connectors
    グループのスコープ グローバル
    グループのタイプ セキュリティ
  4. Active Directory ユーザーとコンピュータのナビゲーションツリーで、コンピュータアカウントを作成する組織単位 (OU) を特定するを選択します。メニューで [Action] (アクション) を選択し、[Delegate Control] (制御を委任する) を選択します。子 に伝達されるアクセス許可として、ドメインまでの親 OU を選択できますOUs。AD Connector が AWS Managed Microsoft AD に接続されている場合、ドメインルートレベルでコントロールを委任するアクセス権限はありません。この場合、制御を委任するには、コンピュータオブジェクトが作成されるディレクトリ OU で OU を選択します。

  5. [Delegation of Control Wizard] (制御の委任ウィザード) ページで [Next] (次へ) をクリックし、[Add] (追加) をクリックします。

  6. [Select Users, Computers, or Groups] (ユーザー、コンピュータ、またはグループの選択) ダイアログボックスで「Connectors」と入力し、[OK] をクリックします。複数のオブジェクトがある場合は、上記で作成した Connectors グループを選択します。[Next] (次へ) をクリックします。

  7. [Tasks to Delegate] (委任するためのタスク) ページで、[Create a custom task to delegate] (委任するためのカスタムタスクを作成) を選択し、[Next] (次へ) をクリックします。

  8. [Only the following objects in the folder] (フォルダ内の次のオブジェクトのみ) を選択してから、[Computer objects] (コンピュータオブジェクト) と [User objects] (ユーザーオブジェクト) を選択します。

  9. [Create selected objects in this folder] (選択したオブジェクトをこのフォルダに作成) を選択し、[Delete selected objects in this folder] (このフォルダ内の選択したオブジェクトを削除) を選択します。続いて、[Next] (次へ) をクリックします。

    制御の委任ウィザード-[フォルダ内の次のオブジェクト]、[ユーザーオブジェクト]、[このフォルダ内の選択したオブジェクトの作成]、[このフォルダ内の選択したオブジェクトの削除] オプションのみが選択されます。
  10. [Read] (読み取り) を選択し、[Next] (次へ) をクリックします。

    注記

    Seamless Domain Join または を使用する場合は WorkSpaces、Active Directory がコンピュータオブジェクトを作成できるように、書き込みアクセス許可も有効にする必要があります。

    制御の委任ウィザード-[表示] で、[一般]、[プロパティ固有]、および [読み取り] を選択します。
  11. [Completing the Delegation of Control Wizard] (制御の委任の完了ウィザード) ページの情報を確認し、[Finish] (完了) をクリックします。

  12. 強力なパスワードでユーザーアカウントを作成し、そのユーザーを Connectors グループに追加します。このユーザーは AD Connector サービスアカウントと呼ばれ、Connectorsグループのメンバーになったため、 ディレクトリ AWS Directory Service に接続するための十分な権限が付与されました。

AD Connector をテストする

AD Connector が既存のディレクトリに接続するには、既存のネットワークのファイアウォールで、 内の両方のサブネットCIDRsに対して特定のポートが に開かれている必要がありますVPC。これらの要件が満たされるかどうかをテストするには、次の手順に従います。

接続をテストするには
  1. で Windows インスタンスを起動VPCし、 経由で接続しますRDP。インスタンスは、既存のドメインのメンバーである必要があります。残りのステップは、このVPCインスタンスで実行されます。

  2. DirectoryServicePortTest テストアプリケーションをダウンロードして解凍します。ソースコードと Visual Studio プロジェクトファイルが含まれており、必要に応じてテストアプリケーションを変更できます。

    注記

    このスクリプトは Windows Server 2003 以前のオペレーティングシステムではサポートされていません。

  3. Windows のコマンドプロンプトで、次のオプションを指定して DirectoryServicePortTest テストアプリケーションを実行します。

    注記

    DirectoryServicePortTest テストアプリケーションは、ドメインとフォレストの機能レベルが Windows Server 2012 R2 以下に設定されている場合にのみ使用できます。

    DirectoryServicePortTest.exe -d <domain_name> -ip <server_IP_address> -tcp "53,88,389" -udp "53,88,389"
    <domain_name>

    完全修飾ドメイン名。これは、フォレストとドメインの機能レベルをテストするために使用されます。ドメイン名を除外した場合、機能レベルはテストされません。

    <server_IP_address>

    既存のドメインのドメインコントローラーの IP アドレス。ポートはこの IP アドレスに対してテストされます。IP アドレスを除外した場合、ポートはテストされません。

    このテストアプリケーションは、必要なポートが からドメインVPCに開いているかどうかを判断し、最小フォレストとドメインの機能レベルも検証します。

    出力は次のようになります。

    Testing forest functional level. Forest Functional Level = Windows2008R2Forest : PASSED Testing domain functional level. Domain Functional Level = Windows2008R2Domain : PASSED Testing required TCP ports to <server_IP_address>: Checking TCP port 53: PASSED Checking TCP port 88: PASSED Checking TCP port 389: PASSED Testing required UDP ports to <server_IP_address>: Checking UDP port 53: PASSED Checking UDP port 88: PASSED Checking UDP port 389: PASSED

DirectoryServicePortTest アプリケーションのソースコードは次のとおりです。

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; using System.DirectoryServices.ActiveDirectory; using System.Threading; using System.DirectoryServices.AccountManagement; using System.DirectoryServices; using System.Security.Authentication; using System.Security.AccessControl; using System.Security.Principal; namespace DirectoryServicePortTest { class Program { private static List<int> _tcpPorts; private static List<int> _udpPorts; private static string _domain = ""; private static IPAddress _ipAddr = null; static void Main(string[] args) { if (ParseArgs(args)) { try { if (_domain.Length > 0) { try { TestForestFunctionalLevel(); TestDomainFunctionalLevel(); } catch (ActiveDirectoryObjectNotFoundException) { Console.WriteLine("The domain {0} could not be found.\n", _domain); } } if (null != _ipAddr) { if (_tcpPorts.Count > 0) { TestTcpPorts(_tcpPorts); } if (_udpPorts.Count > 0) { TestUdpPorts(_udpPorts); } } } catch (AuthenticationException ex) { Console.WriteLine(ex.Message); } } else { PrintUsage(); } Console.Write("Press <enter> to continue."); Console.ReadLine(); } static void PrintUsage() { string currentApp = Path.GetFileName(System.Reflection.Assembly.GetExecutingAssembly().Location); Console.WriteLine("Usage: {0} \n-d <domain> \n-ip \"<server IP address>\" \n[-tcp \"<tcp_port1>,<tcp_port2>,etc\"] \n[-udp \"<udp_port1>,<udp_port2>,etc\"]", currentApp); } static bool ParseArgs(string[] args) { bool fReturn = false; string ipAddress = ""; try { _tcpPorts = new List<int>(); _udpPorts = new List<int>(); for (int i = 0; i < args.Length; i++) { string arg = args[i]; if ("-tcp" == arg | "/tcp" == arg) { i++; string portList = args[i]; _tcpPorts = ParsePortList(portList); } if ("-udp" == arg | "/udp" == arg) { i++; string portList = args[i]; _udpPorts = ParsePortList(portList); } if ("-d" == arg | "/d" == arg) { i++; _domain = args[i]; } if ("-ip" == arg | "/ip" == arg) { i++; ipAddress = args[i]; } } } catch (ArgumentOutOfRangeException) { return false; } if (_domain.Length > 0 || ipAddress.Length > 0) { fReturn = true; } if (ipAddress.Length > 0) { _ipAddr = IPAddress.Parse(ipAddress); } return fReturn; } static List<int> ParsePortList(string portList) { List<int> ports = new List<int>(); char[] separators = {',', ';', ':'}; string[] portStrings = portList.Split(separators); foreach (string portString in portStrings) { try { ports.Add(Convert.ToInt32(portString)); } catch (FormatException) { } } return ports; } static void TestForestFunctionalLevel() { Console.WriteLine("Testing forest functional level."); DirectoryContext dirContext = new DirectoryContext(DirectoryContextType.Forest, _domain, null, null); Forest forestContext = Forest.GetForest(dirContext); Console.Write("Forest Functional Level = {0} : ", forestContext.ForestMode); if (forestContext.ForestMode >= ForestMode.Windows2003Forest) { Console.WriteLine("PASSED"); } else { Console.WriteLine("FAILED"); } Console.WriteLine(); } static void TestDomainFunctionalLevel() { Console.WriteLine("Testing domain functional level."); DirectoryContext dirContext = new DirectoryContext(DirectoryContextType.Domain, _domain, null, null); Domain domainObject = Domain.GetDomain(dirContext); Console.Write("Domain Functional Level = {0} : ", domainObject.DomainMode); if (domainObject.DomainMode >= DomainMode.Windows2003Domain) { Console.WriteLine("PASSED"); } else { Console.WriteLine("FAILED"); } Console.WriteLine(); } static List<int> TestTcpPorts(List<int> portList) { Console.WriteLine("Testing TCP ports to {0}:", _ipAddr.ToString()); List<int> failedPorts = new List<int>(); foreach (int port in portList) { Console.Write("Checking TCP port {0}: ", port); TcpClient tcpClient = new TcpClient(); try { tcpClient.Connect(_ipAddr, port); tcpClient.Close(); Console.WriteLine("PASSED"); } catch (SocketException) { failedPorts.Add(port); Console.WriteLine("FAILED"); } } Console.WriteLine(); return failedPorts; } static List<int> TestUdpPorts(List<int> portList) { Console.WriteLine("Testing UDP ports to {0}:", _ipAddr.ToString()); List<int> failedPorts = new List<int>(); foreach (int port in portList) { Console.Write("Checking UDP port {0}: ", port); UdpClient udpClient = new UdpClient(); try { udpClient.Connect(_ipAddr, port); udpClient.Close(); Console.WriteLine("PASSED"); } catch (SocketException) { failedPorts.Add(port); Console.WriteLine("FAILED"); } } Console.WriteLine(); return failedPorts; } } }

AD Connector を作成する

既存のディレクトリを AD Connector に接続するには、次の手順を実行します。この手順を開始する前に、AD Connector の前提条件 で定義されている前提条件を満たしていることを確認します。

注記

Cloud Formation テンプレートを使用して AD Connector を作成することはできません。

AD Connector に接続するには
  1. AWS Directory Service コンソールのナビゲーションペインで、[Directories] (ディレクトリ)、[Set up directory] (ディレクトリの設定) の順に選択します。

  2. [Select directory type] (ディレクトリタイプの選択) ページで [AD Connector] を選択してから、[Next] (次へ) をクリックします。

  3. [Enter AD Connector information] (AD Connector 情報の入力) ページで、次の情報を指定します。

    [Directory size] (ディレクトリのサイズ)

    [Small] (スモール) または [Large] (ラージ) サイズオプションのどちらかを選択します。サイズの詳細については、「AD Connector」を参照してください。

    [Directory description] (ディレクトリの説明)

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

  4. VPC とサブネットの選択ページで、次の情報を指定し、次へ を選択します。

    VPC

    ディレクトリVPCの 。

    [Subnets] (サブネット)

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

  5. [Connect to AD] (AD への接続) ページで、次の情報を指定します。

    ディレクトリDNS名

    既存のディレクトリの完全修飾名 (例: corp.example.com)。

    ディレクトリのネットBIOS名

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

    DNS IP アドレス

    既存のディレクトリ内の少なくとも 1 つのDNSサーバーの IP アドレス。これらのサーバーは、ステップ 4 で指定する各サブネットからアクセスできる必要があります。これらのサーバーは、指定されたサブネットとDNSサーバーの IP アドレスの間にネットワーク接続がある限り AWS、 の外部に配置することができます。

    [Service account username] (サービスアカウントのユーザー名)

    既存のディレクトリのユーザーのユーザー名。このアカウントの詳細については、「AD Connector の前提条件」を参照してください。

    [Service account password] (サービスアカウントのパスワード)

    既存のユーザーアカウントのパスワード。このパスワードは大文字と小文字が区別され、8 文字以上 128 文字以下の長さにする必要があります。また、次の 4 つのカテゴリうち 3 つから少なくとも 1 文字を含める必要があります。

    • 小文字 (a〜z)

    • 大文字 A〜Z

    • 数字 (0〜9)

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

    [Confirm password] (パスワードを確認)

    既存のユーザーアカウントのパスワードを再入力します。

  6. [Review & create] (確認と作成) ページでディレクトリ情報を確認し、必要に応じて変更を加えます。情報が正しい場合は、[Create directory] (ディレクトリの作成) を選択します。ディレクトリが作成されるまで、数分かかります。作成が完了すると、[Status] (ステータス) 値が [Active] (アクティブ) に変わります。

AD Connector で作成される内容の詳細については、「」を参照してくださいAD Connector で作成されるもの