次の方法で共有


Azure サービスでマネージド ID を使用して Azure Cosmos DB for NoSQL に接続する方法

適用対象: NoSQL

デプロイ ガイドのシーケンス内の現在の場所 (

次の場所を含むデプロイ ガイドのシーケンスの図: 概要、概念、準備、ロールベースのアクセス制御、ネットワーク、リファレンス。 現在は、"準備" の場所が強調表示されています。

この記事では、Azure Cosmos DB for NoSQL に接続されたデプロイ済みアプリケーションで使用する予定のマネージド ID を作成するために必要な手順について説明します。

マネージド ID は、アプリケーションが Microsoft Entra 認証をサポートするサービスに接続する際に使用できる Microsoft Entra ID 内の多様な ID リソースの一種です。 マネージド ID は、キーなどの従来のリソース所有の認証情報の代わりに使用できます。 Azure では、マネージド ID を使用すると、大量の認証コードを記述しなくても、アプリケーションが Azure サービスに対して認証を行うための Microsoft Entra トークンを取得できます。

Microsoft Entra を使用して、次のような Azure サービス (ただし、これらに限定されません) に対して認証を行うことができます。

  • Azure SQL
  • Azure AI
  • Azure Cosmos DB
  • Azure Storage
  • Azure Event Hubs
  • Azure Container Registry

マネージド ID を使用して、次のような他の Azure サービス (ただし、これらに限定されません) から Azure サービスに対して認証を行うプリンシパルを表すことができます。

  • Azure Kubernetes Service
  • Azure Container Apps
  • Azure Virtual Machines
  • Azure Functions
  • Azure App Service
  • Azure Spring Apps
  • Azure Service Fabric

マネージド ID を使用すると、さまざまな Azure サービスが相互に接続可能な複数の安全なシナリオを実現できます。 次に例をいくつか示します。

  • Azure Spring Apps で Azure SQL アカウントに接続してクエリを実行するアプリケーションのシステム割り当てマネージド ID を作成する
  • Azure Kubernetes Service と Azure Functions の両方で単一のユーザー割り当てマネージド ID を使用して Azure AI アカウントに要求を発行する
  • Azure Cosmos DB アカウントのマネージド ID を使用して Azure Key Vault にキーを格納する

詳細については、「Azure リソース用マネージド ID」を参照してください。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

システム割り当てマネージド ID を使用して Azure サービスを作成する

システム割り当てマネージド ID を使用して新しい Azure サービスを作成する。 このセクションでは、Azure Container Instances リソースを作成します。

  1. az container create を使用して新しいコンテナー インスタンスを作成します。 assign-identity パラメーターを使用して、システム割り当てマネージド ID を使用するようにアカウントを設定します。

    az container create \
        --resource-group "<name-of-existing-resource-group>" \
        --name "<name-of-new-container>" \
        --image mcr.microsoft.com/dotnet/samples:aspnetapp-chiseled \
        --cpu 1 \
        --memory 2 \
        --assign-identity
    
  2. az container show と JMESPath クエリを使用して、システム割り当てマネージド ID の詳細を取得します。

    az container show \
        --resource-group "<name-of-existing-resource-group>" \
        --name "<name-of-existing-container>" \
        --query "identity"
    
  3. このコマンドからの出力を確認します。 ID とテナントの一意識別子を含める必要があります。

    {
      "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
      "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
      "type": "SystemAssigned",
      "userAssignedIdentities": null
    }
    
  1. 新しい Bicep ファイルを作成して、新しいコンテナー インスタンスを定義します。 ファイルに container-instance.bicep という名前を付けます。 コンテナー インスタンスの次のプロパティを設定します。

    Value
    name instanceName という名前のパラメーターを使用する
    location リソース グループの場所を設定する
    identity.type SystemAssigned
    properties.osType Linux
    properties.containers[0].name aspnet-sample
    properties.containers[0].properties.image mcr.microsoft.com/dotnet/samples:aspnetapp-chiseled
    properties.containers[0].properties.resources.requests.cpu 1
    properties.containers[0].properties.resources.requests.memoryInGB 2
    metadata description = 'Create Azure Container Instance resource with system-assigned managed identity.'
    
    @description('Name of the Azure Container Instances resource.')
    param instanceName string
    
    resource instance 'Microsoft.ContainerInstance/containerGroups@2023-05-01' = {
      name: instanceName
      location: resourceGroup().location
      identity: {
        type: 'SystemAssigned'
      }
      properties: {
        osType: 'Linux'
        containers: [
          {
            name: 'aspnet-sample'
            properties: {
              image: 'mcr.microsoft.com/dotnet/samples:aspnetapp-chiseled'
              resources: {
                requests: {
                  cpu: 1
                  memoryInGB: 2
                }
              }
            }
          }
        ]
      }
    }
    
    output systemAssignedIdentity object = instance.identity    
    
  2. container-instance.bicepparam という名前の新しい Bicep パラメーター ファイルを作成します。 このパラメーター ファイルで、instanceName パラメーターを使用してコンテナー インスタンスの一意の名前を作成します。

    using './container-instance.bicep'
    
    param instanceName = '<name-of-new-container-instance>'
    
  3. az deployment group create を使用して Bicep テンプレートをデプロイします。 Bicep テンプレート、パラメーター ファイル、および Azure リソース グループの名前を指定します。

    az deployment group create \
        --resource-group "<name-of-existing-resource-group>" \
        --parameters "container-instance.bicepparam" \
        --template-file "container-instance.bicep"
    
  4. デプロイからの出力を確認します。 出力には、properties.outputs.systemAssignedIdentity.value プロパティ内のコンテナー インスタンスの ID オブジェクトが含まれています。

    {
      "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
      "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
      "type": "SystemAssigned"
    }
    
  1. Azure portal (https://portal.azure.com) にサインインします。

  2. グローバル検索バーに「Azure Container Instances」と入力します。

    Azure portal のグローバル検索バーを示すスクリーンショット。

  3. [サービス][Container Instances] を選択します。

    検索メニューで Container Instances オプションが選択されているスクリーンショット。

  4. [Container Instances] ウィンドウで、[作成] を選択します。

    Azure Container Instances のウィンドウ内にある [作成] オプションのスクリーンショット。

  5. [基本情報] ウィンドウで、次のオプションを構成し、[レビュー + 作成] を選択します。

    Value
    サブスクリプション お使いの "Azure サブスクリプション" を選択します
    リソース グループ 新しいリソース グループを作成する、あるいは既存のリソース グループを選択します
    コンテナー名 グローバルに一意の名前を指定します
    リージョン サブスクリプションでサポートされている Azure リージョンを選択します

    Azure Container Instances リソース作成の [基本] ウィンドウのスクリーンショット。

    ヒント

    指令されていないオプションは既定値のままでかまいません。

  6. [レビュー + 作成] ウィンドウで、アカウントの検証が正常に完了するまで待ってから、[作成] を選択します。

    コンテナー インスタンスの作成エクスペリエンスのリソース検証手順を示すスクリーンショット。

  7. Portal は自動的に [展開] ウィンドウに移動します。 デプロイが完了するまで待ちます。

  8. デプロイが完了したら、[リソースに移動] を選択して、新しい Azure Container Instances リソースに移動します。

    [リソースに移動] オプションが強調表示されている、完全にデプロイされた Azure Container Instances リソースを示すスクリーンショット。

  9. 新しいコンテナー インスタンスのウィンドウ内で、サービス メニューの [設定] セクション内にある [ID] を選択します。

    コンテナー インスタンスのサービス メニューにある [ID] オプションのスクリーンショット。

  10. [ID] ウィンドウで、[状態] オプションを [オン] に設定して、システム割り当てマネージド ID を有効にします。 次に、[保存] を選択し、変更をコミットするためのプロンプトを解決します。

    システム割り当てマネージド ID の [状態] を [オン] に設定しているスクリーンショット。

  11. システム割り当てマネージド ID の準備ができたら、"オブジェクト (プリンシパル) ID" プロパティの値を確認します。 このプロパティの値が、ID の一意識別子です。

    有効なシステム割り当てマネージド ID の詳細のスクリーンショット。

    ヒント

    この例のスクリーンショットでは、システム割り当てマネージド ID の一意識別子は bbbbbbbb-1111-2222-3333-cccccccccccc です。

  1. New-AzContainerInstanceObject を使用してコンテナーを表すオブジェクトを作成し、$container という名前の変数に格納します。 次に、そのコンテナー オブジェクトを使用して、New-AzContainerGroup で新しいコンテナー インスタンスを作成します。 IdentityType パラメーターを SystemAssigned に設定して、システム割り当てマネージド ID を使用するようにアカウントを設定します。

    $parameters = @{
        Name = "aspnet-sample"
        Image = "mcr.microsoft.com/dotnet/samples:aspnetapp-chiseled"
        RequestCpu = 1 
        RequestMemoryInGb = 2
    }
    $container = New-AzContainerInstanceObject @parameters
    
    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        Name = "<name-of-new-container>"
        Container = $container
        OsType = "Linux"
        Location = "<azure-region>"
        IdentityType = "SystemAssigned"
    }
    New-AzContainerGroup @parameters
    
  2. Get-AzContainerGroup を使用し、Format-ListIdentity プロパティのみを選択してシステム割り当てマネージド ID の詳細を取得します。

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        Name = "<name-of-existing-container>"
    }
    Get-AzContainerGroup @parameters | Format-List Identity
    
  3. このコマンドからの出力を確認します。 ID とテナントの一意識別子を含める必要があります。

    Identity : {
                 "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
                 "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
                 "type": "SystemAssigned"
               }
    

ユーザー割り当てマネージド ID を作成する

移植可能な方法で 1 つ以上の Azure サービスで使用できるユーザー割り当てマネージド ID を作成します。

  1. az identity create を使用して、Azure リソース グループに新しいユーザー割り当てマネージド ID を作成します。

    az identity create \
        --resource-group "<name-of-existing-resource-group>" \
        --name "<name-of-new-managed-identity>"
    
  2. az identity list を使用して、リソース グループ内のユーザー割り当てマネージド ID の一覧を取得します。

    az identity list \
        --resource-group "<name-of-existing-resource-group>"    
    
  3. このコマンドからの出力を確認します。 この完全修飾リソース識別子を使用してユーザー割り当てマネージド ID を Azure リソースに割り当てるため、id フィールドの値を記録します。

    {
      "clientId": "11112222-bbbb-3333-cccc-4444dddd5555",
      "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned",
      "location": "<azure-location>",
      "name": "msdocs-identity-example-user-assigned",
      "principalId": "cccccccc-dddd-eeee-3333-444444444444",
      "resourceGroup": "msdocs-identity-example",
      "systemData": null,
      "tags": {},
      "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
      "type": "Microsoft.ManagedIdentity/userAssignedIdentities"
    }
    

    Note

    この例では、id の値は /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned になります。 この例では架空のデータを使用します。実際の識別子はこの例とは異なります。

  1. Bicep ファイルを作成して、ユーザー割り当てマネージド ID を定義し、ファイルに user-assigned-managed-identity.bicep という名前を付けます。 次の最小限のプロパティを設定します。

    Value
    name identityName という名前のオプション パラメーターを使用して、一意の既定値を生成する
    location リソース グループの場所を設定する
    metadata description = 'Create a user-assigned managed identity.'
    
    param identityName string = uniqueString(subscription().id, resourceGroup().id)
    
    resource identity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
      name: identityName
      location: resourceGroup().location
    }
    
    output id string = identity.id
    output name string = identity.name
    
  2. az deployment group create を使用して Bicep テンプレートをデプロイします。 Bicep テンプレートと Azure リソース グループの名前を指定します。

    az deployment group create \
        --resource-group "<name-of-existing-resource-group>" \
        --template-file "user-assigned-managed-identity.bicep"
    
  3. デプロイからの出力を確認します。 出力には、properties.outputs.name.value プロパティ内のマネージド ID の一意識別子が含まれています。 このガイドの後半で新しい Azure リソースを作成するときに使用する必要があるため、この値を記録します。

    {
      "type": "String",
      "value": "msdocs-identity-example-user-assigned"
    }
    

    Note

    この例では、name.valuemsdocs-identity-example-user-assigned となります。 この例では架空のデータを使用します。実際の識別子はこの例とは異なります。

  1. グローバル検索バーに「マネージド ID」と入力します。

  2. [サービス][マネージド ID] を選択します。

    検索メニューで [マネージド ID] オプションが選択されているスクリーンショット。

  3. [Container Instances] ウィンドウで、[作成] を選択します。

    [マネージド ID] のウィンドウ内の [作成] オプションを示すスクリーンショット。

  4. [基本情報] ウィンドウで、次のオプションを構成し、[レビュー + 作成] を選択します。

    Value
    サブスクリプション お使いの "Azure サブスクリプション" を選択します
    リソース グループ 新しいリソース グループを作成する、あるいは既存のリソース グループを選択します
    リージョン サブスクリプションでサポートされている Azure リージョンを選択します
    名前 グローバルに一意の名前を指定します

    マネージド ID リソース作成の [基本] ウィンドウのスクリーンショット。

  5. [レビュー + 作成] ウィンドウで、アカウントの検証が正常に完了するまで待ってから、[作成] を選択します。

    マネージド ID 作成エクスペリエンスのリソース検証手順を示すスクリーンショット。

  6. Portal は自動的に [展開] ウィンドウに移動します。 デプロイが完了するまで待ちます。

  7. マネージド ID のデプロイが完了するまで待ちます。

    完全にデプロイされたマネージド ID リソースのスクリーンショット。

  1. Azure リソース グループで New-AzUserAssignedIdentity を使用して新しいユーザー割り当てマネージド ID を作成します。

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        Name = "<name-of-new-managed-identity>"
        Location = "<azure-region>"
    }
    New-AzUserAssignedIdentity @parameters
    
  2. Get-AzUserAssignedIdentity を使用して、リソース グループ内のユーザー割り当てマネージド ID の一覧を取得します。

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
    }
    Get-AzUserAssignedIdentity @parameters | Format-List Name, Id
    
  3. このコマンドからの出力を確認します。 この完全修飾リソース識別子を使用してユーザー割り当てマネージド ID を Azure リソースに割り当てるため、Id フィールドの値を記録します。

    Name : msdocs-identity-example-user-assigned
    Id   : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned
    

    Note

    この例では、Id の値は /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned になります。 この例では架空のデータを使用します。実際の識別子はこの例とは異なります。

ユーザー割り当てマネージド ID を使用して Azure サービスを作成する

以前に作成したユーザー割り当てマネージド ID を新しい Azure ホスティング サービスに割り当てます。 このセクションでは、Azure App Service Web アプリ リソースを作成します。

  1. az appservice plan create を使用して新しい App Service プランを作成します。

    az appservice plan create \
        --resource-group "<name-of-existing-resource-group>" \
        --name "<name-of-new-plan>"
    
  2. az webapp create を使用して、ユーザー割り当てマネージド ID を新しい Web アプリに割り当てます。 ssign-identity パラメーターの値として、このガイドで前に記録した id フィールドを使用します。

    az webapp create \
        --resource-group "<name-of-existing-resource-group>" \
        --name "<name-of-existing-web-app>" \
        --plan "<name-of-existing-plan>" \
        --assign-identity "<resource-id-recorded-earlier>"
    
  3. az webapp show と JMESPath クエリを使用して、このアカウントに割り当てられているすべての ID の詳細を取得します。

    az webapp show \
        --resource-group "<name-of-existing-resource-group>" \
        --name "<name-of-existing-account>" \
        --query "identity"   
    
  4. このコマンドからの出力を確認します。 これには、ユーザー割り当てマネージド ID の両方が含まれている必要があります。

    {
      "principalId": null,
      "tenantId": null,
      "type": "UserAssigned",
      "userAssignedIdentities": {
        "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned": {
          "clientId": "11112222-bbbb-3333-cccc-4444dddd5555",
          "principalId": "cccccccc-dddd-eeee-3333-444444444444"
        }
      }
    }
    
  1. app-service-web-app.bicep という名前の別の Bicep ファイルを作成し、Azure App Service プランと Web アプリを定義します。 これらのリソースに対して次のプロパティを設定します。

    リソース Value
    name 既存のマネージド ID identityName という名前のパラメーターを使用する
    name App Service プラン planName という名前のパラメーターを使用する
    location App Service プラン リソース グループの場所を設定する
    name Web アプリ webAppName という名前のパラメーターを使用する
    location Web アプリ リソース グループの場所を設定する
    identity.type UserAssigned
    identity.userAssignedIdentities.{identity.id} {}
    properties.serverFarmId plan.id
    metadata description = 'Creates an Azure App Service plan and web app with a user-assigned managed identity.'
    
    @description('The name of the app service plan.')
    param planName string
    
    @description('The name of the web app.')
    param webAppName string
    
    @description('The name of the user-assigned managed identity.')
    param identityName string
    
    resource identity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' existing = {
      name: identityName
    }
    
    resource plan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: planName
      location: resourceGroup().location
    }
    
    resource webApp 'Microsoft.Web/sites@2023-12-01' = {
      name: webAppName
      location: resourceGroup().location
      identity: {
        type: 'UserAssigned'
        userAssignedIdentities: {
          '${identity.id}': {}
        }
      }
      properties: {
        serverFarmId: plan.id
      }
    }
    
    output userAssignedIdentity object = webApp.identity
    
  2. app-service-web-app.bicepparam という名前の Bicep パラメーター ファイルを作成します。 このパラメーター ファイルで、planName パラメーターと webAppName パラメーターをそれぞれ使用して Web アプリとプランの一意の名前を作成します。 次に、identityName パラメーターの値として、ユーザー割り当てマネージド ID の名前を指定します。

    using './app-service-web-app.bicep'
    
    param planName = '<name-of-new-app-service-plan>'
    param webAppName = '<name-of-new-web-app>'
    param identityName = '<name-of-existing-managed-identity>'
    
  3. az deployment group create を使用して Bicep テンプレートをデプロイします。 Bicep テンプレート、パラメーター ファイル、および Azure リソース グループの名前を指定します。

    az deployment group create \
        --resource-group "<name-of-existing-resource-group>" \
        --parameters "app-service-web-app.bicepparam" \
        --template-file "app-service-web-app.bicep"
    
  4. デプロイからの出力を確認します。 出力には、properties.outputs.userAssignedIdentity.value プロパティ内のコンテナー インスタンスの ID オブジェクトが含まれています。

    {
      "type": "UserAssigned",
      "userAssignedIdentities": {
        "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned": {
          "clientId": "11112222-bbbb-3333-cccc-4444dddd5555",
          "principalId": "cccccccc-dddd-eeee-3333-444444444444"
        }
      }
    }
    
  1. グローバル検索バーに「Web アプリ」と入力します。

  2. [サービス][App Services] を選択します。

    検索メニューで [App Services] オプションを選択しているスクリーンショット。

  3. [App Services] ウィンドウで [作成] を選択し、[Web アプリ] を選択します。

    Azure App Service のウィンドウ内の [作成] オプションを示すスクリーンショット。

  4. [基本情報] ウィンドウで、次のオプションを構成し、[レビュー + 作成] を選択します。

    Value
    サブスクリプション お使いの "Azure サブスクリプション" を選択します
    リソース グループ 新しいリソース グループを作成する、あるいは既存のリソース グループを選択します
    名前 グローバルに一意の名前を指定します
    プラン 新しいプランを作成するか、既存のプランを選択する

    Web アプリ リソース作成の [基本] ウィンドウのスクリーンショット。

  5. [レビュー + 作成] ウィンドウで、アカウントの検証が正常に完了するまで待ってから、[作成] を選択します。

    Web アプリ リソース作成エクスペリエンスのリソース検証手順を示すスクリーンショット。

  6. Portal は自動的に [展開] ウィンドウに移動します。 デプロイが完了するまで待ちます。

  7. デプロイが完了したら、[リソースに移動] を選択して、新しい Azure Container Instances リソースに移動します。

    [リソースに移動] オプションが強調表示されている、完全にデプロイされた Azure App Service Web アプリ リソースを示すスクリーンショット。

  8. 新しいコンテナー インスタンスのウィンドウ内で、サービス メニューの [設定] セクション内にある [ID] を選択します。

    Web アプリのサービス メニューにある [ID] オプションのスクリーンショット。

  9. [ID] ウィンドウで、[ユーザー割り当て] オプションを選択します。

    Web アプリの [ID] ウィンドウにある [ユーザー割り当て] オプションのスクリーンショット。

  10. [追加] を選択してダイアログを開き、既存のユーザー割り当てマネージド ID を割り当てます。 ダイアログで既存のユーザー割り当てマネージド ID を選択し、[追加] を選択します。

    Web アプリの [ID] ウィンドウにある [追加] オプションと [ユーザー割り当てマネージド ID の追加] ダイアログのスクリーンショット。

  11. 最後に、Web アプリに関連付けられているユーザー割り当てマネージド ID の一覧を確認します。 これには、ID の名前、リソース グループ名、サブスクリプション識別子が含まれている必要があります。

    現在の Web アプリに関連付けられているユーザー割り当てマネージド ID の一覧のスクリーンショット。

  1. New-AzWebApp を使用して新しい App Service Web アプリを作成します。

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        Name = "<name-of-new-web-app>"
        Location = "<azure-region>"
    }
    New-AzWebApp @parameters
    
  2. 新しく作成した Web アプリにパッチを適用して、identity.type プロパティを UserAssigned に設定し、既存のユーザー割り当てマネージド ID を identity.userAssignedIdentities プロパティに追加します。 このタスクを実行するには、最初に、このガイドで前に記録した id フィールドを identityId シェル変数の値として指定します。 次に、ペイロード オブジェクトを構築し、JSON に変換します。 最後に、PATCH HTTP 動詞を指定して Invoke-AzRestMethod を使用し、既存の Web アプリを更新します。

    $identityId = "<resource-id-recorded-earlier>"
    
    $payload = @{
        identity = @{
            type = "UserAssigned"
            userAssignedIdentities = @{
                "$identityId" = @{}
            }
        }
    } | ConvertTo-Json -Depth 3
    
    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        Name = "<name-of-existing-web-app>"
        ResourceProviderName = 'Microsoft.Web'
        ResourceType = 'sites'
        ApiVersion = '2023-12-01'
        Method = 'PATCH'
        Payload = $payload
    }
    Invoke-AzRestMethod @parameters
    
  3. Get-AzWebAppSelect-Object を使用し、ConvertTo-JsonIdentity プロパティのみを選択して Web アプリに割り当てられているすべての ID の詳細を取得します。

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        Name = "<name-of-existing-web-app>"
    }
    Get-AzWebApp @parameters | Select-Object Identity | ConvertTo-Json -Depth 3
    
  4. このコマンドからの出力を確認します。 ID とテナントの一意識別子を含める必要があります。

    {
      "Identity": {
        "Type": "UserAssigned",
        "TenantId": null,
        "PrincipalId": null,
        "UserAssignedIdentities": {
          "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned": {
            "PrincipalId": "cccccccc-dddd-eeee-3333-444444444444",
            "ClientId": "11112222-bbbb-3333-cccc-4444dddd5555"
          }
        }
      }
    }
    

次のステップ