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:
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ó.
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.
Nota
Veja Configurar e utilizar aplicações com identidade gerida num cluster gerido do Service Fabric para configuração de aplicações.
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:
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.