次の方法で共有


Azure Container Apps のマネージド ID

Microsoft Entra ID のマネージド ID により、コンテナー アプリは、Microsoft Entra で保護された他のリソースにアクセスできます。 Microsoft Entra ID のマネージド ID の詳細については、「Azure リソースのマネージド ID」を参照してください。

コンテナー アプリには 2 種類の ID を付与できます:

  • システム割り当て ID はコンテナー アプリに関連付けられているため、コンテナー アプリが削除されると削除されます。 アプリは 1 つのシステム割り当て ID しか持つことはできません。
  • ユーザー割り当て ID は、コンテナー アプリやその他のリソースに割り当てることができるスタンドアロンの Azure リソースです。 コンテナー アプリは複数のユーザー割り当て ID を持つことができます。 ユーザー割り当て ID は、削除するまで存在します。

マネージド ID を使用する理由

実行中のコンテナー アプリでマネージド ID を使用すると、Microsoft Entra 認証をサポートしているサービスに対して認証できます。

マネージド ID を使用した場合:

  • アプリは、マネージド ID を使用してリソースに接続します。 コンテナー アプリで資格情報を管理する必要はありません。
  • ロールベースのアクセス制御を使用して、マネージド ID に特定のアクセス許可を付与できます。
  • システム割り当て ID が自動的に作成され、管理されます。 コンテナー アプリが削除されると削除されます。
  • ユーザー割り当て ID を追加および削除し、複数のリソースに割り当てることができます。 コンテナー アプリのライフ サイクルに依存しません。
  • マネージド ID を使用すると、ユーザー名とパスワードなしでプライベート Azure Container Registry に対して認証を行い、コンテナー アプリのコンテナーをプルできます。
  • マネージド ID を使用して、Dapr コンポーネントを介して Dapr 対応アプリケーションの接続を作成できます

一般的なユース ケース

システム割り当て ID は、次のワークロードに最適です:

  • 単一リソース内に格納されます
  • 独立した ID が必要です

ユーザー割り当て ID は、次のワークロードに最適です:

  • 複数のリソースで実行され、1 つの ID を共有できます
  • セキュアなリソースに対し事前認証が必要です

制限事項

  • スケール ルールのマネージド ID はサポートされていません。 スケーリング ルールの secretRef に接続文字列またはキーを含める必要があります。
  • Init コンテナーはマネージド ID にアクセスできません。

マネージド ID の構成

マネージド ID は、次の方法で構成できます:

  • Azure portal
  • Azure CLI
  • 自分の Azure Resource Manager (ARM) テンプレート

実行中のコンテナー アプリでマネージド ID が追加、削除、または変更されると、アプリは自動的に再起動せず、新しいリビジョンは作成されません。

Note

2022 年 4 月 11 日より前にデプロイされたコンテナー アプリにマネージド ID を追加する場合は、新しいリビジョンを作成する必要があります。

システム割り当て ID を追加する

  1. Azure portal でコンテナー アプリに移動します。

  2. [設定] グループで、[ID] を選択します。

  3. [システム割り当て済み] タブで、 [状態][オン] に切り替えます。

  4. [保存] を選択します。

システム割り当て ID のスクリーンショット。

ユーザー割り当て ID を追加する

ユーザー割り当て ID を使用してコンテナー アプリを構成するには、まず ID を作成してから、そのリソース識別子をコンテナー アプリの構成に追加する必要があります。 ユーザー割り当て ID は、Azure portal または Azure CLI を使用して作成できます。 ユーザー割り当て ID の作成と管理の詳細については、「ユーザー割り当てマネージド ID の管理」を参照してください。

最初に、ユーザー割り当て ID リソースを作成する必要があります。

  1. 「ユーザー割り当てマネージド ID の管理」の手順に従って、ユーザー割り当てマネージド ID リソースを作成します。

  2. Azure portal でコンテナー アプリに移動します。

  3. [設定] グループで、[ID] を選択します。

  4. [ユーザー割り当て済み] タブ内で、[追加] を選択します。

  5. 先ほど作成した ID を検索して選択します。

  6. [追加] を選択します。

ユーザー割り当て ID のスクリーンショット。

ターゲット リソースを構成する

一部のリソースでは、アクセス権を付与するために、アプリのマネージド ID のロールの割り当てを構成する必要があります。 そうしないと、Azure Key Vault や Azure SQL Database などのサービスへのアプリからの呼び出しは、その ID に有効なトークンを使用した場合でも拒否されます。 Azure ロールベースのアクセス制御 (Azure RBAC) の詳細については、「RBAC とは」を参照してください。 Microsoft Entra トークンをサポートしているリソースの詳細については、「Microsoft Entra 認証をサポートしている Azure サービス」をご覧ください。

重要

マネージド ID のバックエンド サービスは、リソース URI ごとのキャッシュを約 24 時間保持します。 特定のターゲット リソースのアクセス ポリシーを更新し、そのリソースのトークンをすぐに取得した場合、そのトークンの有効期限が切れるまで、期限切れのアクセス許可を持つキャッシュされたトークンを取得し続ける可能性があります。 リソース トークンの強制はサポートされていません。

アプリ コードでの Azure サービスへの接続

アプリはマネージド ID を使用して、Azure SQL Database、Azure Key Vault、Azure Storage など、Microsoft Entra ID を使用している Azure リソースにアクセスするためのトークンを取得できます。 これらのトークンは、アプリケーションの特定のユーザーではなく、リソースにアクセスしているアプリケーションを表します。

Container Apps には、トークンを取得するための内部アクセス可能な REST エンドポイント が用意されています。 REST エンドポイントは、標準の HTTP GET 要求を使用してアプリ内から入手できます。これは、優先する言語で汎用 HTTP クライアントを使用して送信できます。 NET、JavaScript、Java、Python の場合、Azure ID クライアント ライブラリは、この REST エンドポイントを抽象化します。 その他の Azure サービスへの接続は、サービス固有のクライアントに資格情報オブジェクトを追加することで行うことができます。

Note

Azure ID クライアント ライブラリの使用時には、ユーザー割り当てマネージド ID のクライアント ID を明示的に指定する必要があります。

Note

Entity Framework Core で Azure SQ Lデータソースに接続する場合、マネージド ID 接続のための特別な接続文字列を提供する Microsoft.Data.SqlClient の使用をご検討下さい。

.NET のアプリの場合、マネージド ID を利用する最も簡単な方法は、.NET 用の Azure ID クライアント ライブラリを使用することです。 詳細については、次のリソースを参照してください。

リンクされた例では、DefaultAzureCredentialを使用します。 このオブジェクトは、Azure (マネージド ID を使用) とローカル コンピューター (マネージド ID を除く) で同じパターンが動作するため、ほとんどのシナリオで役立ちます。

マネージド ID を表示

次の Azure CLI コマンドを使用して、システム割り当てマネージド ID とユーザー割り当てマネージド ID を表示できます。 出力には、コンテナー アプリに割り当てられているすべてのマネージド ID の型、テナント ID、プリンシパル ID が表示されます。

az containerapp identity show --name <APP_NAME> --resource-group <GROUP_NAME>

マネージド ID の削除

システム割り当て ID を削除すると、Microsoft Entra ID から削除されます。 コンテナー アプリのリソース自体を削除すると、システム割り当て ID も Microsoft Entra ID から自動的に削除されます。 お使いのコンテナー アプリからユーザー割り当てマネージド ID を削除しても、Microsoft Entra ID からは削除されません。

  1. アプリのページの左側のナビゲーションで、[設定] グループまで下にスクロールします。

  2. [ID] を選択します。 次に、ID の種類に基づいて、次の手順に従います。

    • システムに割り当てられた ID: [システム割り当て済み] タブで [状態][オフ] に切り替えます。 [保存] を選択します。
    • ユーザーに割り当てられたID: [ユーザ割り当て済み] タブを選択し、ID のチェックボックスを選択し、[削除] を選択します。 [はい] を選択して確定します。

次のステップ