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 é armazenado em backup por um conjunto de dimensionamento de máquinas virtuais. 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ó que contém 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 usar uma identidade gerenciada com a extensão do conjunto de dimensionamento de máquinas virtuais do Azure Key Vault.
Para obter um exemplo de uma implantação de cluster gerenciado do Service Fabric que usa a identidade gerenciada em um tipo de nó, veja estes modelos. O exemplo tem dois modelos:
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 RP do Service Fabric atribua a identidade ao conjunto de dimensionamento de máquinas virtuais do cluster gerenciado. Essa implantação deve ocorrer apenas uma vez antes que a identidade gerenciada seja usada no recurso de tipo de nó.
Cluster gerenciado e tipo de nó: modelo do cluster gerenciado do Service Fabric e dos recursos do tipo de nó usando a identidade gerenciada já criada.
Observação
Atualmente, somente as identidades atribuídas ao usuário têm suporte para esse recurso.
Observação
Confira Configurar e usar aplicativos com identidade gerenciada em um cluster gerenciado pelo Service Fabric para configuração de aplicativo.
Pré-requisitos
Antes de começar:
- Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
- Se você planejar usar o PowerShell, instale a CLI do Azure para executar comandos de referência da CLI.
1. Criar uma identidade e uma atribuição de função
Criar uma identidade gerenciada atribuída ao usuário
Uma identidade gerenciada atribuída pelo usuário pode ser definida na seção de recursos de um modelo de Azure Resource Manager (ARM) para criação na implantação:
{
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
"name": "[parameters('userAssignedIdentityName')]",
"apiVersion": "2023-01-31",
"location": "[resourceGroup().location]"
}
ou criado por meio do 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 do 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áquinas virtuais do cluster gerenciado. Essa é uma ação avulsa
Obter a entidade de serviço para o aplicativo do provedor de recursos do Service Fabric:
Login-AzAccount
Select-AzSubscription -SubscriptionId <SubId>
Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider"
Observação
Verifique se você está na assinatura correta. A ID da entidade de segurança 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 a principalId e a ID de definição de função abaixo como a roleDefinitionId no modelo ou no comando do PowerShell quando necessário:
Nome da definição de função | ID de definição de função |
---|---|
Operador de Identidade Gerenciada | f1a07417-d97a-45cb-824c-7a7467783830 |
Essa atribuição de função pode ser definida no modelo da seção de recursos usando a ID de entidade de segurança 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>"
}
}
Observação
vmIdentityRoleNameGuid deve ser um GUID válido. Se você implantar novamente o mesmo modelo, incluindo essa atribuição de função, certifique-se de que o GUID seja igual ao usado originalmente ou remova esse recurso, pois ele só precisa ser criado uma vez.
ou criado por meio do PowerShell usando a ID de entidade de segurança 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>"
Implantar a identidade gerenciada e a 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. Atribuir identidade ao recurso de tipo de nó
Adicionar propriedades de identidade gerenciada à definição de tipo de nó
Por fim, adicione as propriedades vmManagedIdentity
e userAssignedIdentities
à definição de tipo de nó do cluster gerenciado com a ID do recurso completa da identidade criada na primeira etapa. Use 2021-05-01 ou mais recente para 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áquinas virtuais do tipo de nó designado e pode ser usada conforme o esperado, assim como em qualquer cluster não gerenciado.
Solução de problemas
Falha ao adicionar corretamente uma atribuição de função será atendida com o seguinte erro na implantação:
Nesse caso, verifique se a atribuição de função foi criada corretamente com a função "operador de identidade gerenciada". A atribuição de função pode ser encontrada no portal do Azure no controle de acesso do recurso de identidade gerenciada, como é mostrado abaixo.