Share via


Adicionar uma identidade gerida a um tipo de nó de cluster gerido do Service Fabric

Cada tipo de nó num cluster gerido do Service Fabric é apoiado por um conjunto de dimensionamento de máquinas virtuais. Para permitir que as identidades geridas sejam utilizadas com um tipo de nó de cluster gerido, foi adicionada uma propriedade vmManagedIdentity às definições do tipo de nó que contêm uma lista de identidades que podem ser utilizadas, userAssignedIdentities. A funcionalidade espelha a forma como as identidades geridas podem ser utilizadas em clusters não geridos, como utilizar uma identidade gerida com a extensão do conjunto de dimensionamento de máquinas virtuais do Azure Key Vault.

Para obter um exemplo de uma implementação de cluster gerido do Service Fabric que utiliza a identidade gerida num tipo de nó, veja estes modelos. O exemplo tem dois modelos:

  1. Identidade gerida e atribuição de funções: modelo para criar a identidade gerida e a atribuição de função para permitir que o RP do Service Fabric atribua a identidade ao conjunto de dimensionamento de máquinas virtuais do cluster gerido. Esta ação só deve ser implementada uma vez antes de utilizar a identidade gerida no recurso do tipo de nó.

  2. Cluster gerido e tipo de nó: modelo para o cluster gerido do service fabric e os recursos do tipo de nó com a identidade gerida criada anteriormente.

Nota

Apenas as identidades atribuídas pelo utilizador são atualmente suportadas para esta funcionalidade.

Pré-requisitos

Antes de começar:

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

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

Criar uma identidade gerida atribuída pelo utilizador

Uma identidade gerida atribuída pelo utilizador pode ser definida na secção recursos de um modelo do Azure Resource Manager (ARM) para criação após a implementação:

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

ou criado através do PowerShell:

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

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

Adicione uma atribuição de função à identidade gerida com a aplicação Fornecedor de Recursos do Service Fabric. Esta atribuição permite que o Fornecedor de Recursos do Service Fabric atribua a identidade, criada no passo anterior, ao conjunto de dimensionamento de máquinas virtuais do cluster gerido. Esta é uma ação única

Obtenha o principal de serviço para a aplicação Fornecedor de Recursos do Service Fabric:

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

Nota

Certifique-se de que está na subscrição correta. O ID principal será alterado se a subscrição estiver num inquilino 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

Utilize o ID do resultado anterior como principalId e o ID da definição de função como roleDefinitionId , sempre que aplicável no modelo ou no comando do PowerShell:

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

Esta atribuição de função pode ser definida no modelo de secção de recursos com o ID principal e o 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 implementar novamente o mesmo modelo, incluindo esta atribuição de função, certifique-se de que o GUID é igual ao utilizado originalmente ou remova este recurso, uma vez que só precisa de ser criado uma vez.

ou criado através do PowerShell com o 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>"

Implementar a identidade gerida e a atribuição de funções.

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

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

2. Atribuir identidade ao recurso do tipo de nó

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

Por fim, adicione as vmManagedIdentity propriedades e userAssignedIdentities à definição do tipo de nó do cluster gerido com o ID de recurso completo da identidade criada no primeiro passo. Certifique-se de que utiliza 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')]"
      ]
    }
  }
}

Implementar o recurso do tipo de nó que atribui a identidade

Execute o cmdlet New-AzResourceGroupDeployment para implementar o modelo de clusters geridos do service fabric que atribui a identidade gerida ao recurso do tipo de nó.

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

Após a implementação, a identidade gerida criada foi adicionada ao conjunto de dimensionamento de máquinas virtuais do tipo de nó designado e pode ser utilizada conforme esperado, tal como em qualquer cluster não gerido.

Resolução de problemas

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

portal do Azure erro de implementação que mostra o cliente com o ID de objeto/aplicação do SFRP a não ter permissão para efetuar a atividade de gestão de identidades

Neste caso, certifique-se de que a atribuição de função é criada com êxito com a Função "Operador de Identidade Gerida". A atribuição de função pode ser encontrada no portal do Azure sob controlo de acesso do recurso de identidade gerida, conforme mostrado abaixo.

Propriedades de atribuição de funções para o Fornecedor de Recursos do Service Fabric na identidade gerida atribuída pelo utilizador apresentada no portal do Azure

Passos Seguintes