Active Directory Connector(AD Connector)を試してみた – 補足

2019.06.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

しばたです。

前のブログ記事(Active Directory Connector(AD Connector)を試してみた)でAD Connectorを試した際にSSMドキュメントを自作してドメインに参加する例を挙げましたが、SSMには既にドメインに参加するためのドキュメントが提供されていたので本記事で補足します。

AWS-JoinDirectoryServiceDomain

その名もずばりAWS-JoinDirectoryServiceDomainという名前のドキュメントがAWS公式に提供されいてます。

こちらのパラメーターが

  • directoryId : AWS Directory ServiceのディレクトリID
  • directoryName : 参加するドメイン名
  • directoryOU : 参加するOUの識別名
  • dnsIpAddresses : ドメインコントローラーが使用するDNSサーバーのリスト

であり、定義が

{
    "schemaVersion": "1.2",
    "description": "Join your instances to an AWS Directory Service domain.",
    "parameters": {
        "directoryId": {
            "type": "String",
            "description": "(Required) The ID of the AWS Directory Service directory."
        },
        "directoryName": {
            "type": "String",
            "description": "(Required) The name of the directory; for example, test.example.com"
        },
        "directoryOU": {
            "type": "String",
            "default": "",
            "description": "(Optional) The Organizational Unit (OU) and Directory Components (DC) for the directory; for example, OU=test,DC=example,DC=com"
        },
        "dnsIpAddresses": {
            "type": "StringList",
            "default": [],
            "description": "(Optional) The IP addresses of the DNS servers in the directory. Required when DHCP is not configured. Learn more at http://docs.aws.amazon.com/directoryservice/latest/simple-ad/join_get_dns_addresses.html",
            "allowedPattern": "((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
        }
    },
    "runtimeConfig": {
        "aws:domainJoin": {
            "properties": {
                "directoryId": "{{ directoryId }}",
                "directoryName": "{{ directoryName }}",
                "directoryOU": "{{ directoryOU }}",
                "dnsIpAddresses": "{{ dnsIpAddresses }}"
            }
        }
    }
}

と、aws:domainJoinをばっちり使ったものになっています。

SSMを使ってドメインに参加する - 別解

それではAWS-JoinDirectoryServiceDomainを使ったドメイン参加の例を紹介します。 既にドキュメントがありますのでこれをSend-SSMCommandで実行してやるだけでドメインに参加できます。

各パラメーターの値は環境に応じて設定してください。 またEC2インスタンスには適切な権限をもったIAMロールを付与しておいてください。

# 既定のリージョンおよびプロファイルの指定は環境に合わせて行ってください
Set-DefaultAWSRegion -Region ap-northeast-1
Set-AWSCredential -ProfileName your-profile

# AWS-JoinDirectoryServiceDomain ドキュメントを実行
$params = @{
    InstanceId   = '該当インスタンスID';
    DocumentName = 'AWS-JoinDirectoryServiceDomain';
    Parameter    = @{
        directoryId    = 'd-1234567890';
        directoryName  = 'corp.shibata.tech';
        directoryOU    = 'OU=EC2Instances,DC=corp,DC=shibata,DC=tech';
        dnsIpAddresses = @('192.168.9.61', '192.168.9.62');
    };
}
Send-SSMCommand @params

この場合は関連付けではなくRun Commandとしてドメイン参加処理が実行されます。

余談

このAWS-JoinDirectoryServiceDomainドキュメントはEC2のインスタンス結合ディレクトリでも使われている様です。

弊社豊崎による上記ブログ記事のCloudFormationを使った設定にこのドキュメントが登場します。

このため、インスタンス結合ディレクトリはSimple ADやMicrosoft ADだけでなくAD Connectorに登録されているドメインも対象となります。