マネージド ID を作成して構成する

完了

クラウド ソリューションを作成するときによくある課題は、シークレット、資格情報、証明書、キーの管理です。 これらのセキュリティ保護要素は、サービス間の通信をセキュリティで保護するために使われます。 マネージド ID により、開発者はこれらの資格情報を管理する必要がなくなります。

開発者は Azure Key Vault にシークレットを安全に保存できますが、サービスには Azure Key Vault にアクセスする手段が必要です。 アプリケーションでは、Microsoft Entra ID でマネージド ID によって提供される自動的に管理される ID を、リソースに接続するときに使います。 マネージド ID では、Microsoft Entra ID による認証がサポートされます。 アプリケーションは、マネージド ID を使用して、資格情報を管理することなく Microsoft Entra トークンを取得できます。

マネージド ID を使用するベネフィット

  • 資格情報を自ら管理する必要がない。 資格情報には、自分もアクセスできません。
  • マネージド ID を使用すると、独自のアプリケーションを含む、Microsoft Entra 認証をサポートするあらゆるリソースに対して認証を行うことができます。 マネージド ID の使用に関して追加コストは一切かかりません。

マネージド ID の種類

ID の種類 説明と使用方法
システム割り当て Azure サービスによっては、サービス インスタンスに対して直接マネージド ID を有効にすることができます。 システム割り当てマネージド ID を有効にすると、Microsoft Entra ID に ID が作成されます。 この ID は、そのサービス インスタンスのライフサイクルに関連付けられています。 リソースが削除されると、その ID も Azure によって自動的に削除されます。 その ID を使用して Microsoft Entra ID にトークンを要求できるのは、必然的に、その Azure リソースのみとなります。
ユーザー割り当て スタンドアロン Azure リソースとしてマネージド ID を作成することもできます。 ユーザー割り当てマネージド ID を作成して、それを Azure サービスの 1 つまたは複数のインスタンスに割り当てることができます。 ユーザー割り当てマネージド ID の場合、ID は、それを使用するリソースとは別に管理されます。

マネージド ID はアプリケーションに割り当てられることを忘れないでください。 そのため、それらが使われているサービス内で ID を構成して管理する必要があります。 アプリケーションが仮想マシン (Linus または Windows) で実行されている場合は、そこで ID を追加して構成します。 クラウドアプリ、関数、アプリ サービスと共にマネージド ID を使用している場合、それをそこで構成し、管理します。 App Service を使用し、クラウドビルド アプリにマネージド ID を追加する方法を見てみましょう。

Azure portal での App Service 用のマネージド ID

[アプリ サービス] 画面での Azure portal のスクリーンショット。ユーザー割り当て済み ID の追加が強調表示されています。

ID を作成してアプリに追加する基本的な手順は次のとおりです。

  1. アプリを構築します。
  2. Azure portal でアプリを開きます。
  3. メニューから [ID] を選び、[システム割り当て済み] または [ユーザー割り当て済み] を選びます。
  4. [+ 追加] 項目を選んで、ウィザードを完了します。

CLI、PowerShell、またはテンプレートでスクリプトを使って、同様のアクションを実行できます。 サンプルは次のようになります。

CLI を使用する

az webapp identity assign --resource-group <group-name> --name <app-name> --identities <identity-name>



または、AZ.ManagedServiceIdentity モジュールがインストールされている PowerShell を使う場合

Update-AzFunctionApp -Name <app-name> -ResourceGroupName <group-name> -IdentityType UserAssigned -IdentityId $userAssignedIdentity.Id



または、テンプレートの場合

"identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
        "<RESOURCEID>": {}
    }
}



マネージド ID の値

このページで最初に説明したように、アプリを構築するときに、リソースへのアクセスを許可する方法が必要です。 ゼロ トラストの概念を利用するために、マネージド ID を使用できます。 マネージド ID に必要な最小限の特権のみを割り当てます。 次に、必要な最小限のリソースへのアクセス権のみを割り当てます。 最小特権を使うと、アプリケーションとデータが保護され続けます。