Azure の Private Endpoint を利用していると Private DNS Zone Group という名前に出会うことがあります。
この機能は、Azure Private Endpoint を使用する際に、DNS レコードの管理を簡単に管理するための便利な機能です。
本記事では、Private DNS Zone Group の概要と設定手順について解説します。
想定される読者
- Azure を利用しているが、Private DNS Zone Group について詳しく知らない方
- Private Endpoint を使用している、または使用を検討している方
Private DNS Zone Group とは
Private Endpoint や Private DNS Zone を知っていても 「Private DNS Zone Group は聞いたことがない」という方も多いんじゃないでしょうか?
公開情報に少しだけ書かれています
一部抜粋します
プライベート エンドポイントをプライベート DNS ゾーンと統合することを選んだ場合は、プライベート DNS ゾーン グループも作成されます。 DNS ゾーン グループでは、プライベート DNS ゾーンとプライベート エンドポイントの間に強い関連付けがあります。 これは、プライベート エンドポイントが更新されたときに、プライベート DNS ゾーン レコードを管理するのに役立ちます。 たとえば、リージョンを追加または削除すると、プライベート DNS ゾーンは正しいレコード数で自動的に更新されます。
Azure プライベート エンドポイントの DNS 統合 | Microsoft Learn
また、Bicep のサンプルを見るとPrivate Endpoint の子リソースであることがわかります
一部抜粋します
|
|
クイック スタート: プライベート エンドポイントを作成する - Bicep | Microsoft Learn
これを踏まえると以下の関係性があることがわかります
まず、Private Endpoint を何かの PaaS に生やします
---
title: PaaS サービスと Private Endpoint の構成
---
graph TB;
%%グループとサービス
subgraph Vnet["Vnet"]
PE1("Private Endpoint")
end
PaaS1{{"PaaS"}}
%%サービス同士の関係
PE1 <--> PaaS1
%%サブグラフのスタイル
classDef VnetG fill:none,color:#0a0,stroke:#0a0
class Vnet VnetG
%%ノードのスタイル
classDef SCP fill:#e83,color:#fff,stroke:none
class PE1 SCP
classDef PaaSG fill:#46d,color:#fff,stroke:#fff
class PaaS1 PaaSG
名前解決のために、Private DNS Zone と A レコードを用意します
---
title: Private DNS Zone の追加
---
graph TB;
%%グループとサービス
subgraph Vnet["Vnet"]
PE1("Private Endpoint")
end
PaaS1{{"PaaS"}}
subgraph DNS["Private DNS Zone"]
A["A レコード"]
end
%%サービス同士の関係
PE1 <--> PaaS1
DNS --> Vnet
%%サブグラフのスタイル
classDef VnetG fill:none,color:#0a0,stroke:#0a0
class Vnet,DNS,A VnetG
%%ノードのスタイル
classDef SCP fill:#e83,color:#fff,stroke:none
class PE1 SCP
classDef PaaSG fill:#46d,color:#fff,stroke:#fff
class PaaS1 PaaSG
このとき、Private Endpoint を削除しても A レコードがゴミとして残ってしまうことになります
---
title: Private Endpoint の削除
---
graph TB;
%%グループとサービス
subgraph Vnet["Vnet"]
PE1("`Private Endpoint`")
end
PaaS1{{"PaaS"}}
subgraph DNS["Private DNS Zone"]
A["A レコード"]
end
%%サービス同士の関係
PE1 <--> PaaS1
DNS --> Vnet
%%サブグラフのスタイル
classDef VnetG fill:none,color:#0a0,stroke:#0a0
class Vnet,DNS,A VnetG
classDef PaaSG fill:#46d,color:#fff,stroke:#fff
class PaaS1 PaaSG
%% 点線のスタイル
classDef dashed stroke-dasharray:4,4
class PE1 dashed
%% A レコードの強調スタイル
classDef highlight fill:#aaffaa,color:#004400,stroke:#006400,stroke-width:2px
class A highlight
そこで登場するのが Private DNS Zone グループです
これは Private Endpoint と Private DNS Zone の間に位置して管理してくれます
---
title: Private DNS Zone Group の追加
---
graph TB;
%%グループとサービス
subgraph Vnet["Vnet"]
subgraph PE1["Private Endpoint"]
DNSG("Private DNS Zone Group")
end
end
PaaS1{{"PaaS"}}
subgraph DNS["Private DNS Zone"]
A["A レコード"]
end
%%サービス同士の関係
PE1 <--> PaaS1
DNS --> Vnet
DNSG -- 関連付け --> DNS
%%サブグラフのスタイル
classDef VnetG fill:none,color:#0a0,stroke:#0a0
class Vnet,DNS,A VnetG
%%ノードのスタイル
classDef SCP fill:#e83,color:#fff,stroke:none
class PE1 SCP
classDef PaaSG fill:#46d,color:#fff,stroke:#fff
class PaaS1 PaaSG
これにより、Private Endpoint が削除されると A レコードも自動的に削除されます
---
title: Private DNS Zone Group の追加
---
graph TB;
%%グループとサービス
subgraph Vnet["Vnet"]
subgraph PE1["Private Endpoint"]
DNSG("Private DNS Zone Group")
end
end
PaaS1{{"PaaS"}}
subgraph DNS["Private DNS Zone"]
A["A レコード"]
end
%%サービス同士の関係
PE1 <--> PaaS1
DNS --> Vnet
DNSG -- 関連付け --> DNS
%%サブグラフのスタイル
classDef VnetG fill:none,color:#0a0,stroke:#0a0
class Vnet,DNS,A VnetG
%%ノードのスタイル
classDef PaaSG fill:#46d,color:#fff,stroke:#fff
class PaaS1 PaaSG
%% 点線のスタイル
classDef dashed stroke-dasharray:4,4
class PE1,A,DNSG dashed
今回は削除を例に出しましたが、なにか更新があった場合も同様に A レコードの更新を行ってくれます
これにより、DNS レコードの管理が簡素化され、運用負荷が軽減されます。
ざっくり手順
- Azure Portal で Private Endpoint を作成
- Private Endpoint の削除
- アクティビティ ログの確認
1. Azure Portal で Private Endpoint を作成
今回は App Service を例にします
作成が完了した Private Endpoint にアクセスし、[DNS の構成] を見てみると DNS ゾーン グループが表示されています
Private DNS Zone を見ると、A レコードが作成されていることがわかります
2. Private Endpoint の削除
では Private DNS Zone Group の動作を確認するために、Private Endpoint を削除してみます
すると Private DNS Zone の A レコードも削除されていることがわかります
3. アクティビティ ログの確認
Private DNS Zone のアクティビティ ログを確認すると A レコードの削除が実行されたことがわかります
このときに、[イベント開始者] が Azure Traffic Manager and DNS になっています
公開情報にも記載がありますが、Private DNS Zone Group でレコードの削除や更新が行われたときは、この Azure Traffic Manager and DNS というイベント開始者が表示されます
まとめ
Private DNS Zone Group について見てみました
縁の下の力持ち的な存在ですが、Private Endpoint を利用する際には非常に便利な機能です