Azure リソースのマネージド ID に関してよく寄せられる質問

Azure リソース用マネージド ID は、Microsoft Entra ID の機能です。 Azure リソースのマネージド ID をサポートする各 Azure サービスは、それぞれ固有のタイムラインの下で提供されます。 ご利用のリソースに対するマネージド ID の提供状態と既知の問題をあらかじめ確認しておいてください。

注意

Azure リソースのマネージド ID は、以前のマネージドサービス ID (MSI) の新しい名前です。

管理

マネージド ID を持つリソースを見つけるにはどうすればいいですか?

次の Azure CLI コマンドを使用して、システム割り当てマネージド ID を持つリソースの一覧を検索できます。

az resource list --query "[?identity.type=='SystemAssigned'].{Name:name,  principalId:identity.principalId}" --output table

リソースのマネージド ID を使用するために必要な Azure RBAC アクセス許可は何ですか?

  • システム割り当てマネージド ID: リソースに対する書き込みアクセス許可が必要です。 たとえば、仮想マシンの場合は Microsoft.Compute/virtualMachines/write が必要です。 このアクションは、Virtual Machine Contributor などのリソース固有の組み込みロールに含まれています。
  • リソースへのユーザー割り当てマネージド ID の割り当て: そのリソースに対する書き込みアクセス許可が必要です。 たとえば、仮想マシンの場合は Microsoft.Compute/virtualMachines/write が必要です。 また、ユーザー割り当て ID に対する Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action アクションも必要です。 このアクションは、マネージド ID オペレーター組み込みロールに含まれています。
  • ユーザー割り当て ID の管理: ユーザー割り当てマネージド ID を作成または削除するには、マネージド ID 共同作成者ロールの割り当てが必要です。
  • マネージド ID のロールの割り当ての管理: アクセスを付与しようとしているリソースに対する所有者またはユーザー アクセス管理者ロールの割り当てが必要です。 システム割り当て ID を持つリソース、またはロールの割り当てが与えられるユーザー割り当て ID に対する[閲覧者]ロールの割り当てが必要になります。 読み取りアクセスがない場合は、ロールの割り当てを追加する際にマネージド ID で検索するのではなく、「ユーザー、グループ、サービス プリンシパル」 で検索して、その ID のバッキング サービス プリンシパルを見つけることができます。 Azure ロールの割り当ての詳細を参照してください

ユーザー割り当てマネージド ID を作成できないようにするにはどうすればよいですか。

Azure Policy を使用して、ユーザー割り当てマネージド ID をユーザーが作成できないようにすることができます

  1. Azure portal にサインインし、[ポリシー] に移動します。

  2. [定義] を選択します。

  3. [+ ポリシー定義] を選択し、必要な情報を入力します。

  4. ポリシー規則セクションに、次を貼り付けます。

    {
      "mode": "All",
      "policyRule": {
        "if": {
          "field": "type",
          "equals": "Microsoft.ManagedIdentity/userAssignedIdentities"
        },
        "then": {
          "effect": "deny"
        }
      },
      "parameters": {}
    }
    
    

ポリシーを作成したら、使用するリソース グループに割り当てます。

  1. リソース グループに移動します。
  2. テスト用に使用しているリソース グループを見つけます。
  3. 左側のメニューから [ポリシー] を選択します。
  4. [ポリシーの割り当て] を選択します。
  5. [基本] セクションで、次を指定します。
    1. [Scope](スコープ) : テスト用に使用しているリソース グループ
    2. [ポリシー定義] :前に作成したポリシー。
  6. 他のすべての設定は既定値のままにして、 [確認と作成] を選択します

このようにすると、リソース グループ内にユーザー割り当てマネージド ID を作成しようとする試みはすべて失敗します。

ポリシー違反を示すスクリーンショット。

概念

マネージド ID にバッキング アプリ オブジェクトはありますか?

いいえ。マネージド ID と Microsoft Entra アプリ登録は、ディレクトリ内では同じものではありません。

アプリの登録には、次の 2 つのコンポーネントがあります。アプリケーション オブジェクトとサービス プリンシパル オブジェクト。 Azure リソースのマネージド ID にあるのは、これらのコンポーネントのうち、次の 1 つだけです:サービス プリンシパル オブジェクト。

マネージド ID では、アプリケーション オブジェクトがディレクトリにありません。これは、MS グラフに対するアプリのアクセス許可を付与するために一般的に使用されるものです。 代わりに、マネージド ID に対する MS グラフのアクセス許可をサービス プリンシパルに直接付与する必要があります。

マネージド ID に関連付けられる資格情報は何ですか? その有効期間とローテーションの頻度は?

注意

マネージド ID の認証方法は、内部的な実装の詳細であり、予告なく変更されます。

マネージド ID には、証明書ベースの認証が使用されます。 各マネージド ID の資格情報は有効期限が 90 日で、45 日後にローテーションされます。

要求で ID を指定しない場合、IMDS ではどの ID が規定値になりますか?

  • システム割り当てマネージド ID が有効で、要求内に ID が指定されていない場合、Azure Instance Metadata Service (IMDS) ではシステム割り当てマネージド ID が既定で使用されます。
  • システム割り当てマネージド ID が有効ではなく、ユーザー割り当てマネージド ID が1つのみの場合、その単一のユーザー割り当てマネージド ID が既定値となります。

    何らかの理由で別のユーザー割り当てマネージド ID がリソースに割り当てられている場合、IMDS への要求はエラー Multiple user assigned identities exist, please specify the clientId / resourceId of the identity in the token request で失敗し始めます。 リソースに対して現在ユーザー割り当てマネージド ID が 1 つのみ存在する場合でも、要求で ID を明示的に指定することを強くお勧めします。

  • システム割り当てマネージド ID が有効でなく、複数のユーザー割り当てマネージド ID が存在する場合は、要求内でのマネージド ID の指定が必要です。

制限事項

同じマネージド ID を複数のリージョンで使用できますか?

簡単に言えば、はい、ユーザー割り当て済みマネージド ID は複数の Azure リージョンで使用できます。 詳しく回答すると、ユーザー割り当てマネージド ID はリージョン リソースとして作成されますが、Microsoft Entra ID で作成される、関連付けられたサービス プリンシパル (SP) はグローバルに使用できます。 サービス プリンシパルはどの Azure リージョンからでも使用でき、その可用性は Microsoft Entra ID の可用性に依存します。 たとえば、中南部リージョンでユーザー割り当て済みマネージド ID を作成し、そのリージョンが使用できなくなった場合、この問題はマネージド ID 自体のコントロール プレーン アクティビティのみに影響します。 マネージド ID を使用するように構成されているリソースが実行するアクティビティは影響を受けません。

Azure リソースのマネージド ID は Azure Cloud Services (クラシック) で動作しますか?

現時点では、Azure リソースのマネージド ID で Azure Cloud Services (クラシック) はサポートされていません。 "

Azure リソースのマネージド ID のセキュリティ境界は何ですか?

ID のセキュリティ境界は、ID の添付先リソースです。 たとえば、Azure リソースのマネージド ID が有効な仮想マシンのセキュリティ境界は、仮想マシンになります。 VM 上で実行されているすべてのコードは、Azure リソース エンドポイントと要求トークンのマネージド ID を呼び出すことができます。 このエクスペリエンスは、マネージドIDをサポートする他のリソースで作業する際にも似ています。

サブスクリプションを別のディレクトリに移動する場合、マネージド ID は自動的に再作成されますか?

いいえ。サブスクリプションを別のディレクトリに移動する場合は、お客様が手動でそれらを作成し直し、Azure ロールの割り当てをもう一度許可する必要があります。

  • システム割り当てマネージドID の場合、無効にしてから最有効化します。
  • ユーザー割り当てマネージド ID の場合、削除、再作成の後、必要なリソース (例: 仮想マシン) へ再度アタッチします

マネージド ID を使って違うディレクトリやテナント内のリソースへアクセスできますか?

いいえ。現在、マネージド ID ではクロスディレクトリのシナリオはサポートされていません。

マネージド ID に適用されるレート制限はありますか?

マネージド ID の制限には、Azure サービスの制限、Azure Instance Metadata Service (IMDS) の制限、および Microsoft Entra サービスの制限に対する依存関係があります。

  • Azure サービスの制限では、テナントとサブスクリプションのレベルで実行できる作成操作の数が定義されます。 ユーザー割り当てマネージド ID には、名前付けの方法に関する制限もあります。
  • IMDS: 一般に、IMDS への要求は、1 秒あたり 5 つの要求に制限されます。 このしきい値を超える要求は、429 の応答で拒否されます。 マネージド ID カテゴリに対する要求は、1 秒あたり 20 個の要求、同時要求数は 5 個に制限されます。 詳細については、「Azure Instance Metadata Service (Windows)」の記事を参照してください。
  • Microsoft Entra サービス: 「Microsoft Entra サービスの制限と制約」で説明されているように、各マネージド ID は、Microsoft Entra テナントにおけるオブジェクトのクォータ制限に加算されます。

ユーザー割り当てマネージド ID を異なるリソース グループまたはサブスクリプションに移動できますか?

ユーザー割り当てマネージド ID が異なるリソース グループへの移動はサポートされていません。

マネージド ID トークンはキャッシュされていますか?

マネージド ID のトークンは、パフォーマンスと回復性を確保するために、基盤の Azure インフラストラクチャによってキャッシュされます。マネージド ID のバックエンド サービスでは、リソース URI ごとのキャッシュを約 24 時間保持します。 これは、たとえば、マネージド ID のアクセス許可の変更が有効になるまでに数時間かかる場合があることを意味しています。 現時点では、マネージド ID のトークンの有効期限が切れる前にトークンを強制的に更新することはできません。 詳細については、「認可のためのマネージド ID の使用の制限」を参照してください。

マネージド ID は論理的に削除されますか?

はい。マネージド ID は 30 日間論理的に削除されます。 論理的に削除されたマネージド ID サービス プリンシパルを表示することはできますが、復元したり、完全に削除したりすることはできません。

マネージド ID が削除された後のトークンはどうなりますか。

マネージド ID が削除されると、その ID に以前に関連付けられていた Azure リソースは、その ID の新しいトークンを要求できなくなります。 ID が削除される前に発行されたトークンは、元の有効期限まで有効です。 一部のターゲット エンドポイントの認可システムでは、ディレクトリで ID に関する他のチェックが実行される場合があります。その場合、オブジェクトが見つからないため、要求は失敗します。 ただし、Azure RBAC などの一部のシステムでは、有効期限が切れるまで、そのトークンからの要求を引き続き受け入れます。

次のステップ