ワークロード ID 用の条件付きアクセス

概要

従来、条件付きアクセス ポリシーは、ユーザーが SharePoint Online などのアプリやサービスにアクセスするときにのみ適用されていました。 現在、組織が所有するサービス プリンシパルに適用される条件付きアクセス ポリシーのサポートを拡張しています。 この機能を、ワークロード ID 用の条件付きアクセスと呼びます。

ワークロード ID は、アプリケーションまたはサービス プリンシパルがリソースにアクセスできるようにする ID です。場合によっては、ユーザーのコンテキストでアクセスできます。 これらのワークロード ID は、次の理由から、従来のユーザー アカウントとは異なります。

  • 多要素認証を実行できません。
  • 正式なライフサイクル プロセスがないことが多い。
  • 資格情報またはシークレットをどこかに保存する必要があります。

これらの違いによって、ワークロード ID の管理が難しくなり、侵害リスクが高くなります。

重要

サービス プリンシパルを対象とする条件付きアクセス ポリシーを作成または変更するには、Workload Identities Premium ライセンスが必要です。 適切なライセンスがないディレクトリでは、ワークロード ID の既存の条件付きアクセス ポリシーは引き続き機能しますが、変更することはできません。 詳細については、「 Microsoft Entra ワークロード ID」を参照してください。

注

ポリシーは、お使いのテナントに登録されているシングル テナント サービス プリンシパルに適用できます。 マルチテナント アプリを含むMicrosoftおよびサード パーティの SaaS アプリケーションは、これらのポリシーの対象ではありません。 マネージド ID は、ポリシーの対象にはなりません。 代わりに、マネージド ID を アクセス レビュー に含めることができました。

注

サービス プリンシパルはグループに追加できますが、サービス プリンシパルを含むグループに割り当てられた条件付きアクセス ポリシーは、そのサービス プリンシパルに適用されません。 サービス プリンシパルに条件付きアクセス ポリシーを適用するには、ワークロード ID としてポリシーに直接割り当てる必要があります。

ワークロード ID の条件付きアクセスにより、ブロックしているサービス プリンシパルが次の条件で有効になります。

  • 既知のパブリック IP 範囲の外部から。
  • Microsoft Entra ID 保護によって検出されたリスクに基づいて。
  • 認証コンテキストと組み合わせて。

実装

場所ベースの条件付きアクセス ポリシーを作成する

サービス プリンシパルに適用される、場所ベースの条件付きアクセス ポリシーを作成します。

  1. Microsoft Entra 管理センターに、少なくとも条件付きアクセス管理者としてサインインします。
  2. Entra ID>Conditional Access>Policies に移動します。
  3. [ 新しいポリシー] を選択します。
  4. ポリシーに名前を付けます。 ポリシーの名前にわかりやすい標準を作成します。
  5. [ 割り当て] で、[ ユーザーまたはワークロード ID] を選択します。
    1. [ このポリシーの適用対象] で、[ ワークロード ID] を選択します。
    2. [ 含める] で[ サービス プリンシパルの選択] を選択し、一覧から適切なサービス プリンシパルを選択します。
  6. ターゲット リソース>リソース (旧称クラウド アプリ)>の中で、「すべてのリソース (旧称 'すべてのクラウド アプリ')」を選択します。 このポリシーは、サービス プリンシパルがトークンを要求した場合にのみ適用されます。
  7. [ 条件>場所 ] で、任意の場所 を含め、選択した場所 を除外してアクセスを許可します。
  8. [ 許可] で、[ アクセスのブロック ] が使用可能な唯一のオプションです。 トークン要求が許容範囲外から行われた場合、アクセスはブロックされます。
  9. ポリシーは レポート専用 モードで保存でき、管理者は効果を見積もることができます。または、ポリシーを オンにすることでポリシーが適用されます。
  10. [ 作成] を選択してポリシーを完了します。

リスクベースの条件付きアクセス ポリシーを作成する

サービス プリンシパルに適用される、場所ベースの条件付きアクセス ポリシーを作成します。

ワークロード ID とリスクを条件として持つ条件付きアクセス ポリシーを作成する。

  1. Microsoft Entra 管理センターに、少なくとも条件付きアクセス管理者としてサインインします。
  2. Entra ID>Conditional Access>Policies に移動します。
  3. [ 新しいポリシー] を選択します。
  4. ポリシーに名前を付けます。 ポリシーの名前にわかりやすい標準を作成します。
  5. [ 割り当て] で、[ ユーザーまたはワークロード ID] を選択します。
    1. [ このポリシーの適用対象] で、[ ワークロード ID] を選択します。
    2. [ 含める] で[ サービス プリンシパルの選択] を選択し、一覧から適切なサービス プリンシパルを選択します。
  6. ターゲット リソース>リソース (旧称クラウド アプリ)>の中で、「すべてのリソース (旧称 'すべてのクラウド アプリ')」を選択します。 このポリシーは、サービス プリンシパルがトークンを要求した場合にのみ適用されます。
  7. [条件]>[サービス プリンシパル リスク] の下で次のようにします
    1. [ 構成 ] トグルを [はい] に設定します。
    2. このポリシーをトリガーするリスクのレベルを選択します。
    3. [ 完了] を選択します。
  8. [ 許可] で、[ アクセスのブロック ] が使用可能な唯一のオプションです。 指定したリスク レベルが表示されると、アクセスはブロックされます。
  9. ポリシーは レポート専用 モードで保存でき、管理者は効果を見積もることができます。または、ポリシーを オンにすることでポリシーが適用されます。
  10. [ 作成] を選択してポリシーを完了します。

ロールバック

この機能をロールバックする場合は、作成したポリシーを削除または無効にすることができます。

サインイン ログ

サインイン ログを使用して、サービス プリンシパルに対してポリシーがどのように適用されているか、またはレポート専用モードを使用している場合には予想されるポリシーの影響を確認できます。

  1. Entra ID>モニタリング&健康>サインインログ>サービス プリンシパルのサインインに移動します。
  2. ログ エントリを選択し、[ 条件付きアクセス ] タブを選択して評価情報を表示します。

条件付きアクセスによってサービス プリンシパルがブロックされた場合のエラーの理由: "条件付きアクセス ポリシーのため、アクセスがブロックされました。"

レポート専用モード

場所ベースのポリシーの結果を表示するには、サインイン レポートのイベントの [レポートのみ] タブに移動するか、条件付きアクセスの分析情報とレポート ブックを使用します。

リスクベースのポリシーの結果を表示するには、サインイン レポートのイベントの [レポートのみ] タブを参照してください。

関連項目

ObjectID の検索

サービス プリンシパルの objectID は Microsoft Entra エンタープライズ アプリケーションから取得できます。 Microsoft Entra アプリの登録のオブジェクト ID は使用できません。 この識別子は、サービス プリンシパルではなく、アプリの登録のオブジェクト ID です。

  1. Entra ID>Enterprise アプリに移動し、登録したアプリケーションを見つけます。
  2. [ 概要 ] タブで、アプリケーションの オブジェクト ID を コピーします。 この識別子はサービス プリンシパルに固有のもので、呼び出し元のアプリを検索するために条件付きアクセス ポリシーによって使用されます。

Microsoft Graph

Microsoft Graph ベータ版エンドポイントを使用した場所ベースの構成用のサンプル JSON。

{
  "displayName": "Name",
  "state": "enabled OR disabled OR enabledForReportingButNotEnforced",
  "conditions": {
    "applications": {
      "includeApplications": [
        "All"
      ]
    },
    "clientApplications": {
      "includeServicePrincipals": [
        "[Service principal Object ID] OR ServicePrincipalsInMyTenant"
      ],
      "excludeServicePrincipals": [
        "[Service principal Object ID]"
      ]
    },
    "locations": {
      "includeLocations": [
        "All"
      ],
      "excludeLocations": [
        "[Named location ID] OR AllTrusted"
      ]
    }
  },
  "grantControls": {
    "operator": "and",
    "builtInControls": [
      "block"
    ]
  }
}

次のステップ