Instiq
第3章 · Azure セキュリティの実装·v2.0.0·更新 2026/6/16·読了目安 約9分

変更要約: AZ-204 第3章を Associate 級に深掘り(比較表・シナリオ・FAQ・ひっかけ+深掘り段落、図を日本語化)

3.1認証と認可(Entra ID・MSAL)

この節の要点

Microsoft Entra ID によるアプリ認証、MSAL を用いた OAuth2 トークン取得、アプリ登録とスコープ/ロール、API の保護といった認証・認可の実装を理解します。AZ-204 の「Azure セキュリティの実装」の出発点です。

アプリの認証は Microsoft Entra ID に委ね、MSAL(Microsoft Authentication Library)でOAuth2 トークンを取得します。トークンで API を安全に呼びます。

3.1.1トークン取得の流れ

ユーザーやアプリの認証・認可は Microsoft identity platform(Microsoft Entra ID)で行い、OAuth 2.0/OIDC でトークンを取得し Microsoft Graph を呼び出します。アプリ設定や機能フラグ(Feature Manager)は Azure App Configuration に集約し、機密値は Key Vault と併用します。

アプリ(MSAL)がトークンを要求→Microsoft Entra ID(アプリ登録・OAuth2 トークンを発行)→API/リソース(トークンとスコープを検証)という流れを示し、MSAL が Entra ID から OAuth2 トークンを取得し API がトークンとスコープ/ロールを検証する旨を表した図。
Entra ID による認証フロー
  • アプリ登録:Entra ID にアプリを登録し、リダイレクト URI・スコープ・API アクセス許可を構成する。
  • MSAL:対話型/サイレントでトークンを取得し、キャッシュ・更新を扱う。
  • 委任 vs アプリ権限:ユーザーの代理(委任)か、アプリ自身(アプリ権限/クライアント資格情報フロー)かを使い分ける。
  • API 保護:API はトークンの署名・対象・スコープ/ロールを検証してアクセスを認可する。
試験ポイント

「トークン取得=MSAL」「ユーザー代理=委任権限、デーモン/バックグラウンド=アプリ権限(クライアント資格情報)」「API は token のスコープ/ロールを検証」 は AZ-204 で頻出です。SPA は認可コードフロー+PKCE が推奨です。

認証は Microsoft Entra ID に委ね、MSALOAuth2/OIDC トークンを取得します。まず アプリ登録(クライアント ID・リダイレクト URI・公開スコープ・API アクセス許可)を行い、用途でフローを選びます:Web/ネイティブは 認可コードフロー、SPA は 認可コードフロー+PKCE、ユーザー不在のデーモンは クライアント資格情報フロー(アプリ権限)、他 API を代理で呼ぶ場合は On-Behalf-Of。権限は「委任権限(サインインユーザーの代理・実効権限はユーザー∩アプリ)」と「アプリ権限(アプリ自身・管理者同意要)」を使い分けます。受け取る アクセストークン(API 呼び出し用)/ID トークン(認証情報)/更新トークン(再取得)を区別し、保護 API は署名・発行元・対象(audience)・有効期限・スコープ/ロールを検証して認可します。クライアントシークレットより 証明書/フェデレーション資格情報(ワークロード ID) が安全。App Service は Easy Auth でコードなしに認証を追加できます。判断軸は「トークン取得=MSAL」「ユーザー代理=委任」「デーモン=アプリ権限」「SPA=認可コード+PKCE」。

シナリオフロー/権限
Web/ネイティブでユーザーサインイン認可コードフロー(委任権限)
SPA(ブラウザ)認可コードフロー+PKCE
ユーザー不在のデーモン/バッチクライアント資格情報(アプリ権限)
API が別 API を代理呼び出しOn-Behalf-Of フロー

シナリオ:SPA+バックエンド API+夜間バッチ。 SPA は 認可コードフロー+PKCE でトークン取得し API を呼ぶ。API は 委任権限で「サインインユーザーの代理」として動作し、トークンの スコープを検証。夜間バッチはユーザー不在なので クライアント資格情報(アプリ権限)証明書で認証。資格情報は Key Vault/マネージド ID で扱い、シークレット直書きを避けます。

補足

Q. トークン取得は? MSAL。Q. ユーザー代理? 委任権限(認可コードフロー)。Q. デーモン? アプリ権限(クライアント資格情報)。Q. SPA は? 認可コード+PKCE。Q. API の認可検証は? 署名/発行元/audience/スコープ・ロール。Q. シークレットより安全? 証明書/ワークロード ID。

注意

混同に注意:
委任権限(ユーザー代理)とアプリ権限(アプリ自身)は別物——デーモンは委任ではなくアプリ権限。
アクセストークンと ID トークンは用途が違う(API 呼び出し vs 認証情報)——ID トークンで API 認可しない。
③SPA で implicit フローは非推奨——認可コード+PKCE。
④API は audience/発行元も検証(署名だけでは不十分)。

補足

App Service の「組み込み認証(Easy Auth)」を使うと、コードを書かずに Entra ID 等での認証を追加できます。

3.1.2この節のまとめ

  • 認証=Entra ID+MSAL(OAuth2 トークン)
  • 委任/アプリ権限を使い分け、API はスコープ/ロール検証

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. アプリから Microsoft Entra ID の OAuth2 トークンを取得するために使うライブラリはどれですか?

Q2. バックグラウンドのデーモンアプリがユーザー無しで自身としてリソースへアクセスする場合の権限種別はどれですか?

Q3. 保護された API がアクセスを認可するために検証すべきものはどれですか?

理解度を確認第3章「Azure セキュリティの実装」の問題を解く