Partilhar via


Adicionar uma identidade gerenciada a um tipo de nó de cluster gerenciado do Service Fabric

Cada tipo de nó em um cluster gerenciado do Service Fabric é apoiado por um conjunto de dimensionamento de máquina virtual. Para permitir que identidades gerenciadas sejam usadas com um tipo de nó de cluster gerenciado, uma propriedade vmManagedIdentity foi adicionada às definições de tipo de nó contendo uma lista de identidades que podem ser usadas, userAssignedIdentities. A funcionalidade espelha como as identidades gerenciadas podem ser usadas em clusters não gerenciados, como o uso de uma identidade gerenciada com a extensão do conjunto de dimensionamento de máquina virtual do Cofre de Chaves do Azure.

Para obter um exemplo de uma implantação de cluster gerenciado do Service Fabric que usa identidade gerenciada em um tipo de nó, consulte estes modelos. O exemplo tem dois modelos:

  1. Identidade gerenciada e atribuição de função: modelo para criar a identidade gerenciada e a atribuição de função para permitir que o Service Fabric RP atribua a identidade ao conjunto de dimensionamento de máquina virtual do cluster gerenciado. Isso deve ser implantado apenas uma vez antes de usar a identidade gerenciada no recurso de tipo de nó.

  2. Cluster gerenciado e tipo de nó: modelo para o cluster gerenciado do service fabric e recursos de tipo de nó usando a identidade gerenciada criada anteriormente.

Nota

Atualmente, apenas identidades atribuídas pelo usuário são suportadas para esse recurso.

Nota

Consulte Configurar e usar aplicativos com identidade gerenciada em um cluster gerenciado do Service Fabric para obter a configuração do aplicativo.

Pré-requisitos

Antes de começar:

  • Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
  • Se você planeja usar o PowerShell, instale a CLI do Azure para executar comandos de referência da CLI.

1. Criar identidade e atribuição de função

Criar uma identidade gerida atribuída pelo utilizador

Uma identidade gerenciada atribuída pelo usuário pode ser definida na seção de recursos de um modelo do Azure Resource Manager (ARM) para criação após a implantação:

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

ou criado via PowerShell:

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

Adicionar uma atribuição de função com o Provedor de Recursos do Service Fabric

Adicione uma atribuição de função à identidade gerenciada com o aplicativo Provedor de Recursos do Service Fabric. Essa atribuição permite que o Provedor de Recursos do Service Fabric atribua a identidade, criada na etapa anterior, ao conjunto de dimensionamento de máquina virtual do cluster gerenciado. Esta é uma ação única

Obtenha a entidade de serviço para o aplicativo Service Fabric Resource Provider:

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

Nota

Verifique se você está na assinatura correta, a ID principal será alterada se a assinatura estiver em um locatário diferente.

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

Use a Id da saída anterior como principalId e a ID de definição de função abaixo como roleDefinitionId quando aplicável no modelo ou no comando do PowerShell:

Nome da definição de função ID de definição de função
Operador de Identidade Gerida f1a07417-d97a-45cb-824c-7a7467783830

Essa atribuição de função pode ser definida no modelo de seção de recursos usando a ID principal e a ID de definição de função:

{
  "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>"
  }
}

Nota

vmIdentityRoleNameGuid deve ser um GUID válido. Se você implantar novamente o mesmo modelo, incluindo essa atribuição de função, verifique se o GUID é o mesmo que o usado originalmente ou remova esse recurso, pois ele só precisa ser criado uma vez.

ou criado via PowerShell usando a ID principal e o nome da definição de função:

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

Implante identidade gerenciada e atribuição de função.

Execute o cmdlet New-AzResourceGroupDeployment para criar a identidade gerenciada e adicionar a atribuição de função:

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

2. Atribua identidade ao recurso de tipo de nó

Adicionar propriedades de identidade gerenciada à definição de tipo de nó

Por fim, adicione as vmManagedIdentity propriedades e userAssignedIdentities à definição de tipo de nó do cluster gerenciado com a ID de recurso completa da identidade criada na primeira etapa. Certifique-se de usar 2021-05-01 ou posterior para o apiVersion.

{
  "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')]"
      ]
    }
  }
}

Implantar o recurso de tipo de nó atribuindo a identidade

Execute o cmdlet New-AzResourceGroupDeployment para implantar o modelo de clusters gerenciados do Service Fabric que atribui a identidade gerenciada ao recurso de tipo de nó.

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

Após a implantação, a identidade gerenciada criada foi adicionada ao conjunto de dimensionamento de máquina virtual do tipo de nó designado e pode ser usada conforme o esperado, assim como em qualquer cluster não gerenciado.

Resolução de Problemas

A falha ao adicionar corretamente uma atribuição de função será recebida com o seguinte erro na implantação:

Erro de implantação do portal do Azure mostrando o cliente com a ID de objeto/aplicativo do SFRP não tendo permissão para executar a atividade de gerenciamento de identidades

Nesse caso, verifique se a atribuição de função foi criada com êxito com a função "Operador de identidade gerenciado". A atribuição de função pode ser encontrada no portal do Azure sob controle de acesso do recurso de identidade gerenciado, conforme mostrado abaixo.

Propriedades de atribuição de função para o provedor de recursos do Service Fabric na identidade gerenciada atribuída pelo usuário mostrada no portal do Azure

Passos Seguintes