次の方法で共有


Azure Resource Graph のプライベート DNS に関する情報

この記事では、Azure Resource Graph Explorer を使用して、Azure プライベート DNS ゾーンとレコードに関する情報を表示する方法をいくつか説明します。 クエリの例をいくつか示します。

Azure Resource Graph (ARG) は、複雑なフィルター処理、グループ化、並べ替えを使って、Azure リソースに対してクエリを実行できるようにする Azure サービスです。 ARG クエリは、リソースの詳細情報を提供し、いくつかの方法で結果を表示できます。

次のような DNS ゾーンに関する情報を表示できます。

  • 1 つまたはすべてのゾーンのリソース レコードの種類と数
  • リソース レコード名と IP アドレスの一覧
  • 仮想ネットワークのリンク
  • 自動登録されたリソース レコード

これは簡単な一覧です。 その他の多くの詳細にクエリを実行できます。

dnsresources テーブル

Azure portal で Resource Graph を使用するには、検索して Resource Graph Explorer を選択します。 左側のナビゲーション ウィンドウで、[テーブル] タブを選択し、dnsresources テーブルを確認します。 このテーブルは、プライベート DNS ゾーン データにクエリを実行するために使用されます。 このテーブルを使用する場合、パブリック DNS ゾーンにクエリは実行されません。

dnsresources を選択して基本的なクエリを作成してから、[クエリの実行] をクリックして結果を返します。 次の例を参照してください。

基本的な ARG クエリのスクリーンショット。

ID を表示名に置き換え、可能な場合に値をリンクとして表示するには、表示の右上隅で [書式設定された結果][オン] に切り替えます。 レコードの詳細を表示するには、右にスクロールして [詳細の表示] を選択します。 前の例で示した最初の数レコードは PTR レコードです (type = microsoft.network/privatednszones/ptr)。

種類別にリソース レコードをカウントする

次のクエリでは、dnsresources テーブルを使用して、すべてのプライベート ゾーンの種類別のリソース レコードのカウントを提供します。

dnsresources
| summarize count() by recordType = tostring(type)

リソース レコード数のクエリのスクリーンショット。

このクエリは、現在のサブスクリプションに表示アクセス許可があるすべてのレコードをカウントします。 また、[グラフ] タブを選択し、グラフの種類を選択することで、カウントを視覚的に表示することもできます。 以下はドーナツ グラフの例です。

リソース レコード数のクエリのドーナツ グラフのスクリーンショット。

リソース レコードの一覧表示、フィルター、検索、並べ替え

クエリ結果は、ゾーン名、サブスクリプション ID、リソース グループ、レコードの種類などのパラメーターを指定してフィルター処理できます。 たとえば、次の例のクエリは、指定されたサブスクリプションとリソース グループのゾーン private.contoso.com の A レコードまたは CNAME レコードの一覧を返します。 このクエリの出力は、プライベート ゾーンの表示と似ていますが、名前と種類で結果をフィルター処理し、並べ替える機能が追加されています:

dnsresources
| where managedBy == "private.contoso.com"
| where subscriptionId == "<your subscription ID>"
| where resourceGroup == "<your resource group name>"
| where type in (
    "microsoft.network/privatednszones/a",
    "microsoft.network/privatednszones/cname"
)
| project name, type, properties

リソース レコード一覧のクエリのスクリーンショット。

識別可能なレコードの種類は、A、AAAA、CNAME、MX、PTR、SOA、SRV、TXT です。

特定の IP アドレスやアドレス範囲にクエリを実行することもできます。 次のクエリは、特定の IPv4 アドレスに一致するプライベート DNS レコードを返します。

dnsresources
| where properties['records'][0]['ipv4Address'] == "10.10.2.5"
| project name, type, resourceGroup, properties

正規表現

Kusto 照会言語は正規表現もサポートしています。 次のクエリは、正規表現を使用して、指定されたプライベート DNS ゾーンと指定されたサブスクリプション内のすべての IPv4 アドレスに一致し、一覧表示します。

dnsresources
| where subscriptionId == "<your subscription ID>"
| where managedBy == "private.contoso.com"
| where properties matches regex @'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
| extend IP=extract_all(@'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(?:\/\d{1,2}){0,1})',tostring(properties))
| project  name, IP, resourceGroup, properties
| mv-expand IP
| order by name

正規表現クエリのスクリーンショット。

次のクエリは、仮想ネットワーク リンクを持つすべてのプライベート DNS ゾーンを一覧表示し、自動登録状態を表示します。 このクエリは、dnsresources テーブルではなく、汎用 resources テーブルを使用し、privatednszones のみのリソースの種類を指定します。

resources
| where subscriptionId == "<your subscription ID>"
| where ['type'] == "microsoft.network/privatednszones/virtualnetworklinks"
| extend registrationEnabled=(properties.registrationEnabled)
| project name, registrationEnabled, resourceGroup, properties

仮想ネットワーク リンク クエリのスクリーンショット。

自動登録された DNS レコード

次のクエリは、自動登録された IPv4 プライベート DNS レコードを一覧表示します。

dnsresources
| where subscriptionId == "<your subscription ID>"
| where isnull(properties.virtualNetworkId) == false
| extend linkname=(properties.virtualNetworkLinkName)
| extend ipaddress=properties['records'][0]['ipv4Address']
| project name, ipaddress, type, linkname, properties

自動登録クエリのスクリーンショット。

次のステップ

  • DNS ゾーンでレコード セットとレコードを管理する方法についてはこちらをご覧ください。