Skip to main content

Azure — 検出

Azure テナントを接続すると、SecureAI は Azure 上の AI リソースと、Microsoft Entra ID 内のすべての非人間 ID (NHI) を、それぞれが持つロールと権限とともにインベントリ化できます。
この接続は読み取り専用で、プロンプトを送信することはありません。SecureAI の LLM トラフィックを代わりにお客様自身の Foundry リソースで実行するには、Azure AI Foundry — Inference in your account を参照してください。この 2 つは、サービス プリンシパルと権限が異なる独立した接続であり、同じサブスクリプションで両方を使用できます。

SecureAI がインポートするもの

サービス プリンシパルが読み取れるサブスクリプションごとに、次の内容をインポートします。
  • AI リソース: すべての Azure AI Services、Azure OpenAI、その他の Cognitive Services アカウント (Content Safety、Speech、Language、Document Intelligence など)。リージョンと状態も含みます。
  • Azure OpenAI と Foundry のモデルのデプロイ。容量と、直近 30 日間の使用状況 (リクエスト数、入力・出力トークン数。Azure Monitor から取得) を含みます。
  • Foundry のプロジェクトとエージェント: 各プロジェクトの Foundry Agent Service のエージェントと従来のアシスタント、およびそれぞれが使用するモデル。ハブとハブベースのプロジェクト (Azure Machine Learning)、そのオンライン エンドポイントとサーバーレス エンドポイントも対象です。
  • Azure AI Search と Azure Bot Service。
  • 当月のコスト (サービス別、Cost Management)。
  • アクティビティ: 直近 30 日間の Cognitive Services と Machine Learning の管理イベント (アクティビティ ログ)。
  • NHI。NHI インベントリに一覧表示されます。
    • エンタープライズ アプリケーションのサービス プリンシパル。
    • Microsoft Entra のエージェント ID。Foundry がエージェントごとに作成するもので、エージェントとして分類されます。
    • システム割り当てとユーザー割り当てのマネージド ID。
    • アプリの登録のクライアント シークレットと証明書 (有効期限を含む)。
    • フェデレーション資格情報 (ワークロード ID フェデレーション)。たとえば GitHub Actions の OIDC 信頼を設定すると、そのリポジトリはシークレットを一切使わずに、アプリケーションとしてトークンを取得できます。
    • 各アプリケーションの最終サインイン。テナントがそのレポートを公開している場合に限ります。
  • 各 ID の権限: サブスクリプションの任意のスコープ (サブスクリプション、リソース グループ、リソース) での Azure RBAC ロール、Microsoft Graph のアプリケーション権限、Entra のディレクトリ ロール。
  • RBAC ロールの割り当て: 各ロールを名前で表示し、それを持つユーザー、グループ、アプリケーションを併記します。
次のいずれかを持つ ID は特権としてフラグが付けられます。
  • Owner、Contributor、User Access Administrator、Role Based Access Control Administrator のいずれかのロール。
  • Graph の書き込み権限 (Application.ReadWrite.All、Directory.ReadWrite.All、Mail.Send、Files.ReadWrite.All など)。
  • ディレクトリの管理者ロール (Global Administrator、Application Administrator など)。
特権アプリケーションのシークレット、証明書、フェデレーション資格情報にも、特権としてフラグが付けられます。 Microsoft がすべてのテナントに作成する約 130 個のサービス プリンシパル (Azure Portal、Microsoft Graph など) と、ソーシャル サインインの接続はインポートしません。これらはお客様が管理する対象の ID ではありません。

前提条件

クライアント シークレットを持つ Microsoft Entra ID のアプリの登録 (サービス プリンシパル) と、次の権限が必要です。 Graph の権限には管理者の同意が必要です。すべてのサブスクリプションを読み取るには、各サブスクリプションに Reader を割り当てるか、それらを含む管理グループに割り当てます。
Foundry のエージェントは、Azure Resource Manager ではなくプロジェクトのデータ プレーンにあります。Reader だけでは表示できません。Foundry リソースに Cognitive Services Data Reader (または Foundry User) がない場合でも同期は動作しますが、エージェント一覧は空のままとなり、SecureAI はそれをギャップとして報告します。Cognitive Services Data Reader は、これを可能にする最小のロールで、データ プレーンの読み取りのみを許可します。

ステップ 1. サービス プリンシパルを作成する

Azure CLI を使う場合

Azure Cloud Shell または az CLI から実行します。SUB_ID をお使いのサブスクリプションに置き換え、Foundry を使用する場合は MY_RESOURCE と MY_RG をお使いのリソースとリソース グループに置き換えてください。
ステップ 2 で、SecureAI に貼り付ける 3 つの値が出力されます。SecureAI から失効できるようにするには、ステップ 3 で 1bfefb4e-e0b5-418b-a88f-73c46d2cc8e9=Role (Application.ReadWrite.All) も追加し、あらためて同意を付与してください。

Azure portal を使う場合

  1. Azure portal で Microsoft Entra ID → アプリの登録 → 新規登録に移動し、名前 (例: SecureAI Discovery) を付けて登録します。
  2. 概要で、ディレクトリ (テナント) ID とアプリケーション (クライアント) ID をコピーします。
  3. 証明書とシークレット → クライアント シークレット → 新しいクライアント シークレットでシークレットを作成し、その値をコピーします (表示されるのは 1 回だけです)。
  4. API のアクセス許可 → アクセス許可の追加 → Microsoft Graph → アプリケーションのアクセス許可で、Application.Read.All、Directory.Read.All、AuditLog.Read.All を追加します (SecureAI から失効する場合は Application.ReadWrite.All も追加)。続いて管理者の同意を与えますをクリックします。
  5. サブスクリプション → お使いのサブスクリプション → アクセス制御 (IAM) → ロールの割り当ての追加で、アプリケーションに Reader と Cost Management Reader を割り当てます。
  6. お使いの Foundry リソース → アクセス制御 (IAM) で、アプリケーションに Cognitive Services Data Reader を割り当てます。
Azure のロールが反映されるまで最大 5 分、Graph の同意が反映されるまでさらに数分かかることがあります。付与したばかりの権限について最初の同期でギャップが表示された場合は、しばらく待ってからもう一度同期してください。
シークレットはパスワードと同様に扱ってください。SecureAI はシークレットを暗号化して保存し、二度と表示しません。シークレットには有効期限があります (上記のコマンドでは 1 年後)。期限前にローテーションしないと、その日から同期が動作しなくなります。

ステップ 2. SecureAI で Azure を接続する

  1. 管理 → 統合に移動し、Cloud で絞り込んで、Azure — 検出カードの統合を接続をクリックします。
  2. 各フィールドを入力します。
  3. 接続をクリックします。保存する前に、SecureAI は実際の読み取りで資格情報をテストします。シークレットが正しくない場合や、プリンシパルがサブスクリプションを読み取れない場合は何も保存されず、不足している内容がメッセージに表示されます。接続はできても Graph の権限が不足している場合は、通知にその権限名が表示されます。
  4. カードの更新ボタンで同期します。Azure の同期には数分かかることがあります (Azure Resource Manager、Microsoft Graph、Azure Monitor、Cost Management を順に処理するため)。その後は、SecureAI が 6 時間ごとに自動で同期します。

ステップ 3. 確認する

  • Cloud Sensors に、検出されたデプロイ、エージェント、サービスが一覧表示されます。Azure カードをクリックすると Insights が開きます。
    • Usage & Costs: 使用状況とコスト
    • Models & Deployments: デプロイとエージェント
    • Identity & Access: ロールと Privileged フラグ付きの ID、シークレット、証明書、フェデレーション資格情報、メンバー付きの RBAC ロール
    • Audit & Logs: アクティビティ
  • NHI インベントリには、サービス プリンシパル、エージェント ID、マネージド ID、シークレット、証明書、フェデレーション資格情報が、権限と特権かどうかとともに表示されます。
同期が失敗した場合 (たとえばシークレットの期限切れ)、カードにエラーが表示され、SecureAI は最後のインベントリを保持したまま、バックオフを入れて再試行します。

カバレッジのギャップ

SecureAI が読み取れなかったものが黙ってスキップされることはありません。接続時または同期時に、不足している権限が通知に表示されます。 部分的な読み取り (権限の不足、Azure が返さなかったページ、スロットリング) では、インベントリからエージェントが除外されることも ID が削除されることもありません。SecureAI は、その項目が表示されるはずの一覧が完全に返されたときにのみ、削除されたものとして扱います。ロールの割り当てがない場合、ID の権限は「なし」ではなく不明のままです。

失効

NHI インベントリ (南京錠のアイコン) から、Application.ReadWrite.All を使って行います。 保護の仕組み:
  • SecureAI は、自身の接続に使用しているサービス プリンシパルとそのシークレットについては、検出が止まってしまうため、失効を提示しません。これらは Entra ID でローテーションしてください。
  • システム割り当てのマネージド ID は SecureAI から失効しません。そのライフサイクルは Azure リソースに従います。
  • Foundry がエージェントの ID のブループリントに保持しているフェデレーション資格情報も、SecureAI からは失効しません。削除するとエージェントが停止します。
  • NHI の自動ポリシー (経過期間や未使用による失効) は、Azure にはまだ適用されません。失効は手動で行います。

切断

管理 → 統合 → Cloud → Azure — 検出で接続を削除すると、保存されている資格情報が削除されます。Azure 側で SecureAI のアクセスを削除するには、アプリの登録またはそのシークレットを削除してください。

関連