次の方法で共有


Service Fabric マネージド クラスターのノード タイプにマネージド ID を追加する

Service Fabric 管理対象クラスター内の各ノード タイプは、仮想マシン スケール セットによって提供されます。 マネージド クラスターのノード タイプでマネージド ID を使用できるようにするために、プロパティ vmManagedIdentity が、使用される ID の一覧 userAssignedIdentities を含むノード タイプ定義に追加されました。 機能には、マネージド ID を非マネージド クラスター内でどのように使用できるか (たとえば、Azure Key Vault 仮想マシン スケール セット拡張機能でマネージド ID を使用するなど) が反映されます。

ノード タイプのマネージド ID を利用する Service Fabric マネージド クラスターのデプロイの例については、こちらのテンプレートを参照してください。 例には 2 つのテンプレートが含まれています。

  1. マネージド ID とロールの割り当て: マネージド ID とロールの割り当てを作成して、Service Fabric RP でマネージド クラスターの仮想マシン スケール セットに ID を割り当てることができるようにするテンプレート。 これは、ノード タイプ リソースでマネージド ID を使用する前に 1 回だけデプロイする必要があります。

  2. マネージド クラスターとノード タイプ: 前に作成したマネージド ID を使用する Service Fabric マネージド クラスターとノード タイプ リソース用のテンプレート。

Note

現在、この機能でサポートされているのはユーザー割り当て ID みです。

前提条件

作業を開始する前に、次のことを行います。

  • Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
  • PowerShell の使用を計画している場合は、CLI リファレンス コマンドを実行するために Azure CLI をインストールします。

1. ID とロールの割り当てを作成する

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

ユーザー割り当てのマネージド ID は、デプロイ時に作成するために、Azure Resource Manager (ARM) テンプレートのリソース セクションで定義できます。

{
  "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
  "name": "[parameters('userAssignedIdentityName')]",
  "apiVersion": "2023-01-31",
  "location": "[resourceGroup().location]"
}

または PowerShell を使用して作成されます。

New-AzResourceGroup -Name <managedIdentityRGName> -Location <location>
New-AzUserAssignedIdentity -ResourceGroupName <managedIdentityRGName> -Name <userAssignedIdentityName>

Service Fabric リソース プロバイダーでロールの割り当てを追加する

Service Fabric リソース プロバイダー アプリケーションを使用して、マネージド ID にロールの割り当てを追加します。 この割り当てにより、Service Fabric リソース プロバイダーは、前の手順で作成したマネージド クラスターの仮想マシン スケール セットに ID を割り当てることができます。 これは 1 回限りの手順です。

Service Fabric リソース プロバイダー アプリケーションのサービス プリンシパルを取得します。

Login-AzAccount
Select-AzSubscription -SubscriptionId <SubId>
Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider"

Note

正しいサブスクリプションを使用していることを確認します。サブスクリプションが別のテナントにある場合は、プリンシパル ID が変わります。

ServicePrincipalNames : {74cb6831-0dbb-4be1-8206-fd4df301cdc2}
ApplicationId         : 74cb6831-0dbb-4be1-8206-fd4df301cdc2
ObjectType            : ServicePrincipal
DisplayName           : Azure Service Fabric Resource Provider
Id                    : 00000000-0000-0000-0000-000000000000

前の出力の IDprincipalId として使用し、下のロール定義 ID を roleDefinitionId として使用します (テンプレートまたは PowerShell コマンドで該当する場合)。

ロール定義名 ロール定義 ID
Managed Identity Operator f1a07417-d97a-45cb-824c-7a7467783830

このロールの割り当てを、プリンシパル ID とロール定義 ID を使用するリソース セクション テンプレートに定義できます。

{
  "type": "Microsoft.Authorization/roleAssignments",
  "apiVersion": "2022-04-01",
  "name": "[parameters('vmIdentityRoleNameGuid')]",
  "scope": "[concat('Microsoft.ManagedIdentity/userAssignedIdentities', '/', parameters('userAssignedIdentityName'))]",
  "dependsOn": [
    "[concat('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]"
  ],
  "properties": {
    "roleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', 'f1a07417-d97a-45cb-824c-7a7467783830')]",
    "principalId": "<Service Fabric Resource Provider ID>"
  }
}

Note

vmIdentityRoleNameGuid は、有効な GUID である必要があります。 このロールの割り当てを含む同じテンプレートを再びデプロイする場合は、GUID が最初に使用したものと同じであることを確認します。また、このリソースを 1 回だけ作成する必要がある場合は削除します。

または、PowerShell でプリンシパル ID とロール定義名を使用して作成できます。

New-AzRoleAssignment -PrincipalId "<Service Fabric Resource Provider ID>" -RoleDefinitionName "Managed Identity Operator" -Scope "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userAssignedIdentityName>"

マネージド ID とロールの割り当てをデプロイする

New-AzResourceGroupDeployment コマンドレットを実行してマネージド ID を作成し、ロールの割り当てを追加します。

New-AzResourceGroupDeployment -ResourceGroupName <managedIdentityRGName> -TemplateFile ".\MangedIdentityAndSfrpRoleAssignment.json" -TemplateParameterFile ".\MangedIdentityAndSfrpRoleAssignment.Parameters.json" -Verbose

2. ノード タイプ リソースに ID を割り当てる

マネージド ID プロパティをノード タイプ定義に追加する

最後に、最初の手順で作成した ID の完全なリソース ID を使用して、マネージド クラスターのノード タイプ定義に vmManagedIdentity プロパティと userAssignedIdentities プロパティを追加します。 apiVersion には、必ず 2021-05-01 以降を使用してください。

{
  "type": "Microsoft.ServiceFabric/managedClusters/nodeTypes",
  "apiVersion": "2022-01-01",
  "properties": {
    "isPrimary": true,
    "vmInstanceCount": 5,
    "dataDiskSizeGB": 100,
    "vmSize": "Standard_D2_v2",
    "vmImagePublisher": "MicrosoftWindowsServer",
    "vmImageOffer": "WindowsServer",
    "vmImageSku": "2019-Datacenter",
    "vmImageVersion": "latest",
    "vmManagedIdentity": {
      "userAssignedIdentities": [
        "[parameters('userAssignedIdentityResourceId')]"
      ]
    }
  }
}

ID を割り当てるノード タイプ リソースをデプロイする

New-AzResourceGroupDeployment コマンドレットを実行して、マネージド ID をノード タイプ リソースに割り当てる Service Fabric マネージド クラスター テンプレートをデプロイします。

New-AzResourceGroupDeployment -ResourceGroupName <sfmcRGName> -TemplateFile ".\SfmcVmMangedIdentity.json" -TemplateParameterFile ".\SfmcVmMangedIdentity.Parameters.json" -Verbose

デプロイ後、作成されたマネージド ID は指定されたノード タイプの仮想マシン スケール セットに追加されており、非マネージド クラスターと同様に、想定どおりに使用できます。

トラブルシューティング

ロールの割り当てを適切に追加できなかった場合は、デプロイ時に次のエラーが発生します。

Azure portal deployment error showing the client with SFRP's object/application ID not having permission to perform identity management activity (SFRP のオブジェクトまたはアプリケーション ID を持つクライアントに、ID 管理アクティビティを実行する権限がないことを示す Azure portal のデプロイ エラー)

この場合は、ロールの割り当てが "マネージド ID オペレーター" ロールで正常に作成されていることを確認してください。 ロールの割り当ては、次に示すように、Azure portal のマネージド ID リソースの [アクセス制御] で確認できます。

Azure portal に表示されるユーザー割り当てマネージド ID に対する Service Fabric リソース プロバイダーのロール割り当てプロパティ

次の手順