Conceder acesso de identidade gerida de uma aplicação do Service Fabric aos recursos do Azure
Antes que o aplicativo possa usar sua identidade gerenciada para acessar outros recursos, as permissões devem ser concedidas a essa identidade no recurso protegido do Azure que está sendo acessado. Conceder permissões normalmente é uma ação de gerenciamento no 'plano de controle' do serviço do Azure que possui o recurso protegido roteado por meio do Gerenciador de Recursos do Azure, que imporá qualquer verificação de acesso baseada em função aplicável.
A sequência exata de etapas dependerá do tipo de recurso do Azure que está sendo acessado, bem como do idioma/cliente usado para conceder permissões. O restante do artigo assume uma identidade atribuída ao usuário atribuída ao aplicativo e inclui vários exemplos típicos para sua conveniência, mas não é de forma alguma uma referência exaustiva para este tópico; consulte a documentação dos respetivos serviços do Azure para obter instruções atualizadas sobre a concessão de permissões.
Concedendo acesso ao Armazenamento do Azure
Você pode usar a identidade gerenciada do aplicativo Service Fabric (atribuída pelo usuário neste caso) para recuperar os dados de um blob de armazenamento do Azure. Conceda à identidade as permissões necessárias para a conta de armazenamento atribuindo a função Leitor de Dados de Blob de Armazenamento à identidade gerenciada do aplicativo no escopo do grupo de recursos.
Para obter os passos detalhados, veja o artigo Atribuir funções do Azure com o portal do Azure.
Concedendo acesso ao Cofre da Chave do Azure
Da mesma forma, com o acesso ao armazenamento, você pode aproveitar a identidade gerenciada de um aplicativo do Service Fabric para acessar um cofre de chaves do Azure. As etapas para conceder acesso no portal do Azure são semelhantes às listadas acima e não serão repetidas aqui. Consulte a imagem abaixo para ver as diferenças.
O exemplo a seguir ilustra a concessão de acesso a um cofre por meio de uma implantação de modelo; Adicione o(s) trecho(s) abaixo como outra entrada sob o resources
elemento do modelo. O exemplo demonstra a concessão de acesso para os tipos de identidade atribuídos pelo usuário e pelo sistema, respectivamente - escolha o aplicável.
# under 'variables':
"variables": {
"userAssignedIdentityResourceId" : "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]",
}
# under 'resources':
{
"type": "Microsoft.KeyVault/vaults/accessPolicies",
"name": "[concat(parameters('keyVaultName'), '/add')]",
"apiVersion": "2018-02-14",
"properties": {
"accessPolicies": [
{
"tenantId": "[reference(variables('userAssignedIdentityResourceId'), '2018-11-30').tenantId]",
"objectId": "[reference(variables('userAssignedIdentityResourceId'), '2018-11-30').principalId]",
"dependsOn": [
"[variables('userAssignedIdentityResourceId')]"
],
"permissions": {
"keys": ["get", "list"],
"secrets": ["get", "list"],
"certificates": ["get", "list"]
}
}
]
}
},
E para identidades gerenciadas atribuídas ao sistema:
# under 'variables':
"variables": {
"sfAppSystemAssignedIdentityResourceId": "[concat(resourceId('Microsoft.ServiceFabric/clusters/applications/', parameters('clusterName'), parameters('applicationName')), '/providers/Microsoft.ManagedIdentity/Identities/default')]"
}
# under 'resources':
{
"type": "Microsoft.KeyVault/vaults/accessPolicies",
"name": "[concat(parameters('keyVaultName'), '/add')]",
"apiVersion": "2018-02-14",
"properties": {
"accessPolicies": [
{
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
"tenantId": "[reference(variables('sfAppSystemAssignedIdentityResourceId'), '2018-11-30').tenantId]",
"objectId": "[reference(variables('sfAppSystemAssignedIdentityResourceId'), '2018-11-30').principalId]",
"dependsOn": [
"[variables('sfAppSystemAssignedIdentityResourceId')]"
],
"permissions": {
"secrets": [
"get",
"list"
],
"certificates":
[
"get",
"list"
]
}
},
]
}
}
Para obter mais detalhes, consulte Vaults - Update Access Policy.