Azure Active Directory Domain Services を PowerShell で構築する

Azure Active Directory Domain Services (Azure AD DS または AADDS)

AADDSって構築後にDNSの設定をしないとドメイン参加できないので、構築後のAADDSリソースの概要をAzure Portalから見るとDNSを構成するボタンが表示されています。
今回、それをPowerShellでやる場合のメモです。

そもそもとしてのAzure AD DS の構築方法としては以下があります。

  • Azure Portal で構築する
  • Azure PowerShell で構築する
  • Azure Resource Manager (ARM) で構築する

Azure Portal で構築する

docs.microsoft.com

PowerShell での構築方法

docs.microsoft.com

ARM テンプレートでの構築方法

docs.microsoft.com

今回は2つ目のPowerShellで構築していたのですがAADDS構築後に通常だとAzure Portalから操作する部分があり、そこも自動化したくて考慮点を調べました。

考慮点

  • Custom DNS をVNetへ設定しなければならない
  • Network Security Group をSubnetへ設定しなければならない

AADDS構築後に以下の画像のようにDNS構成をするボタンが概要ページに出てきますが、ここでカスタムDNSNSGの設定をしてくれています。 f:id:tsukatoh:20200427174330p:plain

PowerShell での追加設定の仕方

Custmom DNS をVNetへ設定する

  1. 既存の構築用に使ったNew-AzVirtualNetworkの最後尾にDnsServerを追加して適用する。

【構築時のコマンド】

PS> $VNet = New-AzVirtualNetwork `
      -ResourceGroupName <ResourceGroupName> `
      -Location <AzureLocation> `
      -Name <VNetName> `
      -AddressPrefix 0.0.0.0/0 `
      -Subnet <SubnetName>
PS> $VNet | Set-AzVirtualNetwork

【適用するコマンド】

PS> $VNet = New-AzVirtualNetwork `
      -ResourceGroupName <ResourceGroupName> `
      -Location <AzureLocation> `
      -Name <VNetName> `
      -AddressPrefix 0.0.0.0/0 `
      -Subnet <SubnetName> `
      -DnsServer 0.0.0.4,0.0.0.5
PS> $VNet | Set-AzVirtualNetwork

上記設定まで完了すると以下のように変化します。 NSGを設定しろ的な感じですね。 f:id:tsukatoh:20200427174421p:plain

Network Security Group (NSG) をSubnetへ設定する

  • VNetの情報取得
PS> $VNet = Get-AzVirtualNetwork -Name <VNetName> -ResourceGroupName <ResourceGroupName>
  • サブネットの情報取得
PS> $Subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $VNet -Name <SubnetName>
  • Network Security Group (NSG) の情報取得
PS> $Nsg = Get-Az NetworkSecurityGroup -ResourceGroupName <ResourceGroupName> -Name <NSGName>
  • Subnetへ適用するNSGのコンフィグ設定
PS> $Subnet.NetworkSecurityGroup = $Nsg
  • VNetへのコンフィグ適用
PS> Set-AzVirtualNetwork -VirtualNetwork $VNet

まとめると以下になります。

PS> $VNet = Get-AzVirtualNetwork -Name <VNetName> -ResourceGroupName <ResourceGroupName>
PS> $Subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $VNet -Name <SubnetName>
PS> $Nsg = Get-Az NetworkSecurityGroup -ResourceGroupName <ResourceGroupName> -Name <NSGName>
PS> $Subnet.NetworkSecurityGroup = $Nsg
PS> Set-AzVirtualNetwork -VirtualNetwork $VNet

完了するとPortalのボタンで設定したものと同じようになります。 f:id:tsukatoh:20200427174502p:plain

上記で問題なくドメイン参加まで行けましたので、PowerShellで全部組みたい方(少数派デスヨネ)に参考になれば。