SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

VM Role を Active Directory ドメインに参加

with one comment

Windows Azure Connect を使用することでオンプレミス環境との連携をすることが可能になります。

VM Role (他のロールも該当するようですが) のサービスモデルにいくつか設定をすることで VM Role のインスタンスを Active Directory ドメインに参加させることが可能となりますのでその手順をまとめていきたいと思います。

以下の情報がとても参考になります。
Overview of Windows Azure Connect When Roles Are Joined to a Domain
Troubleshooting Windows Azure Connect
Domain Joining Windows Azure roles
Windows Azure Connect – Domain Join Issue

■Active Directory 側の準備


VM Role を Active Directory ドメインに参加させるにあたって、参加させるドメインのドメインコントローラーに [Windows Azure Connect Endpoint] をインストールしておく必要があります。

現在の Windows Azure Connect Endpoint は英語 OS にしかインストールできませんので、AD DS のサーバーも英語 OS で準備する必要があります。

今回は [vmrole.local] というドメインを作成して、AD DS に Windows Azure Connect Endpoint をインストールしました。
image

インストール直後の状態では、Windows Azure Connect は切断状態になっていますので、Management Portal でグループを作成して接続が可能な状態にしておきます。
# 以下の画像の状態までは持っていけます。
image

■VM Role のインスタンスのデプロイ


次に、ドメインに参加させる設定をしていない通常の VM Role のインスタンスをデプロイして起動しておきたいと思います。

ブログだと、Virtual Network の Group の [Connect to] に登録をするタイミングを明記するのが難しかったもので…。
# Virtual Network の Activated Endpoints にインスタンスが表示されたタイミングで、[Connect to] に指定ができるようになるのですが、手順があちらこちらに行ってしまいそうだったもので。

今回は、通常の Windows Azure Connect で接続ができる状態にしてから、[Upgrade] でドメイン参加させるための設定を追加したパッケージで更新を行い、ドメインに参加させたいと思います。

VM Role のインスタンスと AD DS サーバーが Management Portal の [Activated Endpoints] に表示された事を確認して以下の作業を実施します。
# AD DS のサーバーは FQDN で表示されます。
image

  1. [Virtual Network] をクリックします。
    image
  2. [Groups and Roles] をクリックします。
    image
  3. [Create Group] をクリックします。
    image
  4. [Group name] を入力して、[Connect from] の [Add] をクリックします。
    image
  5. AD DS サーバーを選択して、[OK] をクリックします。
    image
  6. [Connect to] の [Add] をクリックします。
    image
  7. VM Role のグループを選択して、[OK] をクリックします。
    image
  8. [Create] をクリックします。 image
  9. [Close] をクリックします。
    image

これで AD DS サーバーと VM Role が接続できる状態になりました。
以下は AD DS サーバーの画面キャプチャですが、Connect 状態となっているのが確認できます。
image

この状態では VM Role にドメイン参加の設定はしていませんので、ワークグループ環境となっています。
image

 

■AD DS の DNS 要求受付 IP の設定確認


VM Role がドメインに参加する際には通常のドメイン参加と同様 DNS による SRV レコード等の検索が必要となります。
AD DS サーバーで DNS の要求が全 IP アドレスで受け付けられるようになっているかを確認します。
# デフォルトは [All IP addresses]  になっているはずですが。

今回は AD DS サーバーが DNS サーバーの役割も兼任しています。

 

  1. DNS Manager を起動します。
    image
  2. サーバー名を右クリックして [Properties] をクリックします。
    image
  3. [Interfaces] をクリックして [All IP addresses] が選択されていることを確認します。
    image

[2101:~] が [Windows Azure Connect Relay2] で使用されている IPv6 アドレスになります。
image

AD DS のこのインタフェースを介して VM Role はアクセスをしてくると思いますので、DNS の要求をこの IPv6 アドレスで受け付けられる設定にしておく必要があると思います。

 

■VM Role のサービスモデルの設定変更


VM Role を Active Directory ドメインに参加させるためにはサービスモデルの以下の項目を最低限設定する必要があります。
# ソリューション エクスプローラーのロールのプロパティから設定することが可能です。
image

今回は以下のように設定を行っています。
# OU やサイト、Administrators グループに含めるアカウントの指定もできるのですが今回は割愛しています。各設定の詳細は、Overview of Windows Azure Connect When Roles Are Joined to a Domain をご参照ください。

設定項目 設定値
Microsoft.WindowsAzure.Plugins.Connect.EnableDomainJoin true
Microsoft.WindowsAzure.Plugins.Connect.DomainFQDN ドメインの FQDN
vmrole.local
Microsoft.WindowsAzure.Plugins.Connect.DomainControllerFQDN ドメインコントローラーの FQDN
WIN-KNN35CGUAL4.vmrole.local
Microsoft.WindowsAzure.Plugins.Connect.DomainAccountName ドメイン名ユーザー名
vmroleAdministrator
Microsoft.WindowsAzure.Plugins.Connect.DomainPassword 暗号化されたパスワード
Microsoft.WindowsAzure.Plugins.Connect.DNSServers DNS サーバーの FQDN
WIN-KNN35CGUAL4.vmrole.local

これらの設定を行うことで VM Role をドメインに参加させることが可能です。
ドメインに参加させる際のアカウントのパスワードは暗号化する必要があります。

暗号化したパスワードの作成方法は以下の技術情報に記載されているPowerShell で生成することが可能です。
How to Encrypt a Pas
sword

この技術情報に記載されている以下のスクリプトを実行することでパスワードを生成することが可能です。

[Reflection.Assembly]::LoadWithPartialName("System.Security")
$pass = [Text.Encoding]::UTF8.GetBytes("<Password>")
$content = new-object Security.Cryptography.Pkcs.ContentInfo ?argumentList (,$pass)
$env = new-object Security.Cryptography.Pkcs.EnvelopedCms $content
$env.Encrypt((new-object System.Security.Cryptography.Pkcs.CmsRecipient(gi cert:CurrentUserMy<Thumbprint>)))
[Convert]::ToBase64String($env.Encode())

この際に <Thumbprint> 証明書の拇印を指定する必要があります。
この際に使用する証明書ですが、Management Portal の以下の証明書になります。
image

リモートデスクトップの接続にも使っている証明書ですね。
この証明書の Thumbprint を使用することでパスワードを生成することができます。
そのためパスワードを生成する PowerShell を実行する端末にはこの証明書がインストールされている必要があります。
通常であれば、VWD をインストールしている端末で実行するのが手っ取り早いかと。

もし、PowerShell を使うのが苦手という方がいらっしゃいましたら VWD を使うことでもパスワードを生成することが可能です。

ソリューションエクスプローラーからプロジェクトを右クリックして、[発行] をクリックし
image

[リモートデスクトップ接続の構成] をクリックします。
image

この際に入力したパスワードは Management Portal の Hosted Service Certificate で暗号化されます。
image

一度ドメイン参加に使用するアカウントのパスワードを設定して、VM ロールのプロパティから、[Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword] の値を [Microsoft.WindowsAzure.Plugins.Connect.DomainPassword] にコピーすることで VWD で暗号化したパスワードを生成して使うことが可能です。
リモートデスクトップで使用するアカウントのパスワードは[Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword] に保存され、暗号化のルールは [Microsoft.WindowsAzure.Plugins.Connect.DomainPassword]  と同じですので。
image

パスワードの設定が終わったらリモートデスクトップのアカウントパスワードは正規の値を指定しておきます。

以上でサービスモデルの設定変更は終了です。
発行から [サービス パッケージだけを作成] を選択してパッケージを作成します。
image

 

■VM Role の設定変更


作成したパッケージを使用して VM Role の設定変更を行います。
Management Portal の [Hosted Services] から対象の VM Role を選択して [Configure] をクリックします。
image

[Browse] をクリックし、
image

先ほど作成した構成ファイルを選択します。
image

[OK] をクリックして設定を反映させます。
image

1 インスタンスで起動しているので SLA の警告が出ましたが [Yes] をクリックしています。
image

設定が反映されます。image

しばらくすると VM Role の Windows Azure Connect Endpoint で設定が読み込まれ VM Role が再起動 (ドメイン参加時の再起動が自動で実施) します。
# 1 分間隔ぐらいで Azure Connect Endpoint が設定をリフレッシュしているみたいですね。 image

 

インスタンスが起動してきたらリモートデスクトップで確認をしてみます。
image
VM Role のインスタンスがオンプレミス環境のドメインに参加していることが確認できますね。
image

AD DS からもコンピューターアカウントが登録されていることが確認できます。
image

 

■Windows Azure Connect Endpoint のログについて


Windows Azure Connect Endpoint でドメイン参加させる際のログですが以下のログから確認ができます。
[%ProgramFiles%Windows Azure ConnectEndpointLogsIntegrator.log]

今回の検証であれば以下のようなログが出力されていました。

2011/01/12 1:38:37 : AzureAgentIntegratorPlugin: RoleEnvironment_Changing event triggered
2011/01/12 1:38:37 : Starting Directory Download Task…
2011/01/12 1:38:37 : Refresh started
2011/01/12 1:39:07 : Running DomainJoinTask::OnTaskInterval
2011/01/12 1:39:22 : RoleEnvironment_Changed event triggered
2011/01/12 1:39:22 : Microsoft.WindowsAzure.Plugins.Connect.ActivationToken is xxxxxx
2011/01/12 1:39:22 : Microsoft.WindowsAzure.Plugins.Connect.Refresh is
2011/01/12 1:39:22 : Microsoft.WindowsAzure.Plugins.Connect.WaitForConnectivity is
2011/01/12 1:39:22 : Microsoft.WindowsAzure.Plugins.Connect.EnableDomainJoin is true
2011/01/12 1:39:22 : Microsoft.WindowsAzure.Plugins.Connect.DomainFQDN is vmrole.local
2011/01/12 1:39:22 : Microsoft.WindowsAzure.Plugins.Connect.DomainControllerFQDN is WIN-KNN35CGUAL4.vmrole.local
2011/01/12 1:39:22 : Microsoft.WindowsAzure.Plugins.Connect.DomainAccountName is vmroleAdministrator
2011/01/12 1:39:22 : Microsoft.WindowsAzure.Plugins.Connect.DomainOU is
2011/01/12 1:39:22 : Microsoft.WindowsAzure.Plugins.Connect.DNSServers is WIN-KNN35CGUAL4.vmrole.local
2011/01/12 1:39:22 : Microsoft.WindowsAzure.Plugins.Connect.DomainPassword is xxxxxxxx
2011/01/12 1:39:22 : Microsoft.WindowsAzure.Plugins.Connect.Administrators is
2011/01/12 1:39:22 : Microsoft.WindowsAzure.Plugins.Connect.DomainSiteName is
2011/01/12 1:39:22 : Decoding Password
2011/01/12 1:39:22 : Decrypting password
2011/01/12 1:39:22 : DomainJoinPlugin: RoleEnvironment_Changed event triggered
2011/01/12 1:39:22 : Microsoft.WindowsAzure.Plugins.Connect.DNSServers changed
2011/01/12 1:39:22 : Running domainJoinTask
2011/01/12 1:39:22 : Running DomainJoinTask::OnTaskInterval
2011/01/12 1:39:22 : RRAS interface connected
2011/01/12 1:39:22 : DNS server is not configured on RRAS interface
2011/01/12 1:40:22 : Running DomainJoinTask::OnTaskInterval
2011/01/12 1:40:22 : RRAS interface connected
2011/01/12 1:40:22 : DNS server is not configured on RRAS interface
2011/01/12 1:41:22 : Running DomainJoinTask::OnTaskInterval
2011/01/12 1:41:22 : RRAS interface connected
2011/01/12 1:41:22 : DNS server configured on RRAS interface
2011/01/12 1:41:22 : Full Domain name: vmrole.localWIN-KNN35CGUAL4.vmrole.local
2011/01/12 1:41:51 : NetJoinDomain succeeded.
2011/01/12 1:41:51 : Domain join completed successfully
2011/01/12 1:41:51 : Machine is joined to domain VMROLE
2011/01/12 1:41:51 : Machine is joined to domain VMROLE
2011/01/12 1:41:51 : RRAS interface connected
2011/01/12 1:41:51 : DNS server configured on RRAS interface
2011/01/12 1:41:51 : Group: WinNT://WIN-FE13BBILJRL/Administrators,group
2011/01/12 1:41:59 : Command: C:Windowssystem32shutdown.exe -r -t 0 -f

ドメインに参加できない場合はこのログを見てみるとどこでエラーになっているか確認することができます。
私も最初、暗号化に使用する証明書が分からなくて違う証明書で暗号がしていたところエラーになっていたのがこのログからわかりました。

 

VM Role のインスタンスはさほど難しい作業の必要はなく、オンプレミスのドメインに参加せることができるみたいですね。
# ネットワーク的にいろいろと考慮することがありそうですが…。

Written by Masayuki.Ozawa

1月 12th, 2011 at 12:37 am

Posted in Windows Azure

Tagged with ,

One Response to 'VM Role を Active Directory ドメインに参加'

Subscribe to comments with RSS or TrackBack to 'VM Role を Active Directory ドメインに参加'.

  1. […] Windows Azure Connect を使用して、Azure 上のインスタンスをオンプレミスのActive Directory ドメインに参加させる ※本件に関し、小澤さんが素晴らしい記事を書いてくださっています VM Role を Active Directory ドメインに参加 ≪ SE の雑記 […]

Leave a Reply