ワークロード ID 用の条件付きアクセス (プレビュー)

以前は、条件付きアクセス ポリシーは、ユーザーが SharePoint Online や Azure portal などのアプリやサービスにアクセスするときにのみ、適用されていました。 このプレビューでは、組織が所有するサービス プリンシパルに適用される条件付きアクセス ポリシーのサポートが追加されます。 この機能を、ワークロード ID 用の条件付きアクセスと呼びます。

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

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

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

重要

パブリック プレビューでは、条件付きアクセス ポリシーを テナント内でアクティブになっている Azure Active Directory Premium P2 エディションの Azure AD 内のサービス プリンシパルへスコープできます。 一般公開が終了したら、追加のライセンスが必要になる場合があります。

注意

ポリシーは、お使いのテナントに登録されているシングル テナント サービス プリンシパルに適用できます。 サード パーティの SaaS およびマルチテナント アプリは、対象外です。 マネージド ID は、ポリシーの対象にはなりません。

このプレビューでは、信頼されたパブリック IP 範囲外から、または Azure AD Identity Protection によって検出されたリスクに基づいて、サービス プリンシパルをブロックできます。

実装

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

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

  1. Azure portal に、条件付きアクセス管理者、セキュリティ管理者、または全体管理者としてサインインします。
  2. [Azure Active Directory][セキュリティ][条件付きアクセス] の順に移動します。
  3. [新しいポリシー] を選択します。
  4. ポリシーに名前を付けます。 ポリシーの名前に対する意味のある標準を組織で作成することをお勧めします。
  5. [割り当て] で、 [ユーザーまたはワークロード ID] を選択します。
    1. [このポリシーは何に適用されますか?] で、 [ワークロード ID (プレビュー)] を選択します。
    2. [含める] で、 [サービス プリンシパルの選択] を選択し、一覧から適切なサービス プリンシパルを選択します。
  6. [クラウド アプリまたはアクション] で、 [すべてのクラウド アプリ] を選択します。 ポリシーは、サービス プリンシパルがトークンを要求した場合にのみ適用されます。
  7. [条件]>[場所] で、 [すべての場所] を含め、アクセスを許可する [選択された場所] を除外します。
  8. [許可] で使用可能な唯一のオプションは [アクセスをブロックする] です。 トークン要求が許容範囲外から行われた場合、アクセスはブロックされます。
  9. ポリシーをレポート専用モードで保存し、管理者が影響を見積もることができるようにするか、ポリシーを有効にしてポリシーを適用することができます。
  10. [作成] を選択してポリシーを完成させます。

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

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

ワークロード ID とリスクを条件として使用した条件付きアクセス ポリシーの作成。

  1. Azure portal に、条件付きアクセス管理者、セキュリティ管理者、または全体管理者としてサインインします。
  2. [Azure Active Directory][セキュリティ][条件付きアクセス] の順に移動します。
  3. [新しいポリシー] を選択します。
  4. ポリシーに名前を付けます。 ポリシーの名前に対する意味のある標準を組織で作成することをお勧めします。
  5. [割り当て] で、 [ユーザーまたはワークロード ID] を選択します。
    1. [このポリシーは何に適用されますか?] で、 [ワークロード ID (プレビュー)] を選択します。
    2. [含める] で、 [サービス プリンシパルの選択] を選択し、一覧から適切なサービス プリンシパルを選択します。
  6. [クラウド アプリまたはアクション] で、 [すべてのクラウド アプリ] を選択します。 ポリシーは、サービス プリンシパルがトークンを要求した場合にのみ適用されます。
  7. [条件]>[Service principal risk (Preview)] (サービス プリンシパル リスク (プレビュー)) の下で次のようにします。
    1. [Configure] (構成) トグルを [Yes] (はい) に設定します。
    2. このポリシーをトリガーするリスクのレベルを選択します。
    3. [完了] を選択します。
  8. [許可] で使用可能な唯一のオプションは [アクセスをブロックする] です。 トークン要求が許容範囲外から行われた場合、アクセスはブロックされます。
  9. ポリシーをレポート専用モードで保存し、管理者が影響を見積もることができるようにするか、ポリシーを有効にしてポリシーを適用することができます。
  10. [作成] を選択してポリシーを完成させます。

ロールバック

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

サインイン ログ

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

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

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

レポート専用モード

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

リスクベースのポリシーの結果を表示するには、サインイン レポートでイベントの [レポート専用] タブを参照します。

リファレンス

ObjectID の検索

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

  1. Azure portal>[Azure Active Directory]>[エンタープライズ アプリケーション] に移動し、登録したアプリケーションを検索します。
  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"
    ]
  }
}

次のステップ