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) をサポートしていません。

サービスアカウント

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

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

  • コンピュータをドメインに結合する - シームレスなドメイン結合と を使用する場合にのみ必要です WorkSpaces

  • コンピュータオブジェクトの作成 - シームレスなドメイン結合と を使用する場合にのみ必要です 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。

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

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「 Identity Center の前提条件」を参照してください。

Multi-Factor·Authentication の前提条件

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

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

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

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

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

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

で AD Connector を使用する方法の詳細については、MFA「」を参照してくださいAD Connector のMulti-Factor Authenticationを有効にする

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

既存のディレクトリに接続するには、特定の権限が委任されている既存のディレクトリの 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] (次へ) をクリックします。

    注記

    シームレスドメイン結合または を使用する場合は 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 で指定する各サブネットからアクセスできる必要があります。これらのサーバーは AWS、指定されたサブネットとDNSサーバーの IP アドレスの間にネットワーク接続がある限り、 の外部に配置できます。

    [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 を作成すると、 は Elastic Network Interface (ENI) AWS Directory Service を自動的に作成し、各 AD Connector インスタンスに関連付けます。これらはそれぞれENIs、 VPCと AWS Directory Service AD Connector 間の接続に不可欠であり、削除しないでください。で使用するために予約されているすべてのネットワークインターフェイスは、「ディレクトリ directory-id 用にAWS 作成されたネットワークインターフェイス」という説明 AWS Directory Service で識別できます。詳細については、「Amazon EC2ユーザーガイド」の「Elastic Network Interfaces」を参照してください。

注記

AD Connector インスタンスは、デフォルトでリージョン内の 2 つのアベイラビリティーゾーンにデプロイされ、Amazon Virtual Private Cloud () に接続されますVPC。失敗した AD Connector インスタンスは、同じ IP アドレスを使用して同じアベイラビリティーゾーンで自動的に置き換えられます。

AD Connector (AWS IAM Identity Center 付属) と統合された AWS アプリケーションまたはサービスにサインインすると、アプリケーションまたはサービスは認証リクエストを AD Connector に転送し、AD Connector は自己管理型 Active Directory のドメインコントローラーにリクエストを転送して認証を行います。自己管理型 AD への認証が成功すると、Active Directory AD Connector はアプリケーションまたはサービスに認証トークンを返します (Kerberos トークンと同様)。この時点で、 AWS アプリまたはサービスにアクセスできるようになりました。