Skip to content

Azure DNS Zoneの作成と権限の移譲

ここでは、デプロイメントに際しAzure DNS Zoneが必要となる場合のAzure DNS Zoneの作成と権限移譲の方法を解説します。

TIP

本手順は、以下のAzure公式ドキュメントを元に作成しております。 クイック スタート:Azure portal を使用して Azure DNS ゾーンおよびレコードを作成する 手順の実施中に不明な点などがあった場合には併せて参照してください。

Azure ロール 以下のいずれかの組み込みロールが必要となります。

TIP

各ロールの詳細や、ロール割り当ての方法については、以下のAzure公式ドキュメントを参照してください。

TIP

Azure DNS Zoneの作成には Azure用のコマンドラインツールである az を利用します。 az のインストールが完了していない方はAzure CLI をインストールする方法を参考にazのインストールを行なってください。

手順

1.AzureテナントIDの確認

以下の手順でサインインするAzureテナントIDを確認します。

    1. AzurePortalにログイン
    1. Azure Entra ID を選択
    1. メニューから概要を選択し、画面に表示されたテナントIDをコピー

2.Azureテナントへのログイン

  1. 以下のコマンドを実行してAzureテナントにログインします。
bash
export tenant_id=テナントID
bash
az login --tenant ${tenant_id}

ログインが完了するとログインしたテナントとユーザの詳細情報が表示されます。

bash
[
  {
    "cloudName": "AzureCloud",
    "homeTenantId": "テナントID",
    "id": "テナントID",
    "isDefault": true,
    "managedByTenants": [],
    "name": "Microsoft Azure",
    "state": "Enabled",
    "tenantId": "テナントID",
    "user": {
      "name": "ログインしたユーザのID",
      "type": "user"
    }
  }
]

テナントIDが 1.AzureテナントIDの確認 で確認したテナントIDになっていればログインは完了です。

3.Azure DNS Zone の作成と権限の移譲

テナントへのログインができたら Azure DNS Zone を以下の手順で作成します。

  1. 以下のコマンドを実行し、Azure DNS Zone を作成するために必要な情報を格納します。任意の値に置き換えてそれぞれ格納してください。
bash
export CHILD_ZONE_NAME=作成する子DNSゾーンの(移譲先ゾーン)の名前
export CHILD_RG=作成する子DNSゾーン(移譲先ゾーン)を所属させるリソースグループ名称
export PARENT_ZONE_NAME=既にある親DNSゾーン(移譲元DNSゾーン)の名称
export PARENT_RG=移譲元親DNSゾーンが所属しているリソースグループ名称
export CHILD_ZONE_NAME_WITHOUT_PARENT_ZONE=${CHILD_ZONE_NAME%.$PARENT_ZONE_NAME}
  1. 以下のコマンドを実行し、作成する子DNSゾーンの所属するリソースグループを作成します。
  • すでに作成済みのリソースグループに所属させる場合はSkipで構いません。
bash
az group create --name ${CHILD_RG} --location "Japan East"
  1. 委譲先の子ゾーンを作成します。
bash
az network dns zone create --name ${CHILD_ZONE_NAME} --resource-group ${CHILD_RG}
  1. 作成された子ゾーンのネームサーバーを確認します。複数のサーバ名が表示されていれば、正しく作成されています。
bash
az network dns zone show --name ${CHILD_ZONE_NAME} --resource-group ${CHILD_RG} --query 'nameServers' -o tsv
  1. 子ゾーンのネームサーバーを委譲元の親ゾーンに設定します。

    • bash用のコマンド

      bash
      nsservers=$(az network dns zone show --name ${CHILD_ZONE_NAME} --resource-group ${CHILD_RG} --query 'nameServers' -o tsv)
      for nsserver in ${nsservers[@]} ; do az network dns record-set ns add-record --resource-group ${PARENT_RG} --zone-name ${PARENT_ZONE_NAME} --record-set-name ${CHILD_ZONE_NAME_WITHOUT_PARENT_ZONE} --nsdname $nsserver; done;
    • zsh用のコマンド

      bash
      nsservers=$(az network dns zone show --name ${CHILD_ZONE_NAME} --resource-group ${CHILD_RG} --query 'nameServers' -o tsv)
      for nsserver in ${(f)nsservers[@]} ; do az network dns record-set ns add-record --resource-group ${PARENT_RG} --zone-name ${PARENT_ZONE_NAME} --record-set-name ${CHILD_ZONE_NAME_WITHOUT_PARENT_ZONE} --nsdname $nsserver; done;
  2. 正常に設定できたかを確認するため、TXTレコードを設定します。

bash
az network dns record-set txt add-record --record-set-name hello --value "world" --resource-group ${CHILD_RG} --zone-name ${CHILD_ZONE_NAME}
  1. 以下のコマンドを実行し、answerとして ”world” が出力されていれば正しく設定されています。
bash
dig TXT +noall +ans hello.${CHILD_ZONE_NAME}
  1. 確認後、不要なTXTレコードを削除します。
bash
az network dns record-set txt remove-record --record-set-name hello --value "world"  --resource-group ${CHILD_RG} --zone-name ${CHILD_ZONE_NAME}

以上で.Azure DNS Zone の作成と権限の移譲は完了です。