Azure Resource Graph とは

Azure Resource Graph は Azure サービスであり、Azure Resource Management を拡張するよう設計されています。特定のサブスクリプションのセット全体で大規模なクエリを実行する機能を使用して、効率的でパフォーマンスの高いリソース探索を提供することで、環境を効果的に管理できます。 これらのクエリでは、次の機能を提供します。

  • 複雑なフィルター処理、グループ化、およびリソースのプロパティでの並べ替えによりリソースのクエリを行う機能。
  • ガバナンスの要件に基づいてリソースを繰り返し探索する機能。
  • 広大なクラウド環境にポリシーを適用することの影響を評価する機能。
  • リソースのプロパティに行われた変更のクエリを実行する機能 (プレビュー)。

このドキュメントでは、それぞれの機能について詳しく見ていきます。

注意

Azure Resource Graph は、Azure portal の検索バー、新しい "すべてのリソース" 参照エクスペリエンス、Azure Policy の変更履歴の "差分表示" を強化します。 大規模な環境を管理するお客様をサポートするために設計されています。

注意

このサービスは Azure Lighthouse をサポートしているため、サービス プロバイダーは各自のテナントにサインインして、顧客から委任されたサブスクリプションやリソース グループを管理することができます。

Resource Graph が Azure Resource Manager をどのように補完するか

Azure Resource Manager は現在、基本的なリソース フィールドのクエリをサポートしています。具体的には次のとおりです。

  • リソース名
  • id
  • Type
  • リソース グループ
  • サブスクリプション
  • 場所

Azure Resource Manager には、一度に 1 つのリソースについて詳細なプロパティを得るために、個別のリソース プロバイダーを呼び出す機能も用意されています。

Azure Resource Graph を使用することにより、各リソースプロバイダーへの個別の呼び出しを行う必要なく、リソースプロバイダーが返すこれらのプロパティにアクセスすることができます。 サポートされるリソースの種類の一覧については、テーブルとリソースの種類のリファレンスに関するページを確認してください。 サポートされるリソースの種類は、Azure Resource Graph エクスプローラーのスキーマ ブラウザーを使用して確認することもできます。

Azure Resource Graph では、次のことができます。

  • 各リソース プロバイダーへの個別の呼び出しを行う必要なく、リソース プロバイダーから返されるプロパティにアクセスする。
  • 過去 7 日間のリソースの変更を表示して、どのプロパティがいつ変更されたかを確認する。 (プレビュー)

注意

"プレビュー" 機能として、一部の オブジェクトは、Resource Manager 以外の追加のプロパティを備えています。 詳細については、「拡張プロパティ」を参照してください。

Resource Graph が最新の状態に保たれるしくみ

Azure リソースが更新されると、Resource Manager から Resource Graph に変更の通知が届きます。 その後、Resource Graph によってそのデータベースが更新されます。 Resource Graph では、定期的な "フル スキャン" も行われます。 このスキャンにより、通知が届かなかった場合、またはリソースが Resource Manager の外部で更新されたときにも、Resource Graph が最新の状態に維持されます。

注意

Resource Graph では、各リソースプロバイダーの最新の非プレビュー API に対して GET を使用して、プロパティと値を収集します。 その結果、想定されるプロパティを取得できない場合があります。 場合によっては、使用される API バージョンがオーバーライドされ、最新のプロパティまたは広く使用されているプロパティが結果に提供されます。 ご使用の環境での完全な一覧については、各リソースの種類の API バージョンを表示する方法に関するサンプルを参照してください。

クエリ言語

これで Azure Resource Graph についてはよく理解したので、クエリを作成する方法に進みましょう。

Azure Resource Graph のクエリ言語が Azure Data Explorer で使用される Kusto 照会言語 (KQL) に基づくことを理解することが重要です。

最初に、Azure Resource Graph と共に使用することができる操作および機能の詳細については、Resource Graph のクエリ言語を参照してください。 リソースをブラウズするためには、リソースを探索するを参照してください。

Azure Resource Graph でのアクセス許可

Resource Graph を使用するためには、最低限、クエリを実行するリソースに対する読み取りアクセスを可能にする適切な権限が、Azure ロール ベースのアクセス制御 (Azure RBAC) を通じて付与されている必要があります。 Azure のオブジェクトまたはオブジェクト グループに対する read 以上のアクセス許可がないと、結果は返されません。

注意

Resource Graph では、プリンシパルがログイン中に利用できるサブスクリプションが使用されます。 アクティブなセッション中に追加された新しいサブスクリプションのリソースを表示するには、プリンシパルがコンテキストを更新する必要があります。 ログアウトしてから再度ログインすると、このアクションが自動的に実行されます。

Azure CLI と Azure PowerShell はユーザーがアクセスできるサブスクリプションを使用します。 REST API を直接使用すると、サブスクリプションの一覧がユーザーごとに提供されます。 一覧内のいずれかのサブスクリプションにユーザーがアクセスできる場合は、ユーザーがアクセス権を持っているサブスクリプションに対するクエリ結果が返されます。 この動作は、Resource Groups - 一覧を呼び出す場合と同じです。つまり、アクセス権を持っているリソース グループが取得されますが、この結果が部分的である可能性は示されません。 ユーザーに適切な権限があるサブスクリプションがサブスクリプション一覧にない場合の応答は、403 (禁止) です。

注意

プレビュー REST API バージョン 2020-04-01-preview では、サブスクリプションのリストが省略されている場合があります。 subscriptionsmanagementGroupId の両方のプロパティが要求で定義されていない場合、"subscriptions" はテナントに設定されます。 詳しくは、クエリのスコープに関するページを参照してください。

Throttling

無料サービスとして、すべてのお客様に最適なエクスペリエンスと応答時間が提供されるよう、Resource Graph へのクエリはスロットルされます。 お客様の組織が大規模かつ頻繁なクエリに Resource Graph API を使用したい場合、 Resource Graph ポータル ページからポータルの "フィードバック" を使用してください。 ビジネス ケースを明記し、チームが連絡できるように [Microsoft からフィードバックについてメールをお送りする場合があります] チェック ボックスをオンにしてください。

Resource Graph では、ユーザー レベルでクエリのスロットルが行われます。 サービスの応答には、次の HTTP ヘッダーが含まれています。

  • x-ms-user-quota-remaining (int):ユーザーの残りリソース クォータ。 この値はクエリ カウントにマップされます。
  • x-ms-user-quota-resets-after (hh:mm:ss):ユーザーのクォータ消費量がリセットされるまでの期間

詳細については、調整された要求に関するガイダンスのページを参照してください。

最初のクエリを送信する

Azure Resource Graph エクスプローラーは Azure portal に組み込まれており、Resource Graph クエリを Azure portal 内から直接実行できます。 その結果を動的なグラフとしてピン留めすれば、ポータルのワークフローから動的な情報をリアルタイムで得ることができます。 詳細については、Azure Resource Graph エクスプローラーを使った初めてのクエリに関するページを参照してください。

Resource Graph は、Azure CLI、Azure PowerShell、Azure SDK for Python などをサポートします。 どの言語も、クエリの構造は同じです。 以下、Resource Graph を有効にする方法を手段ごとに示します。

次のステップ