Conceder acesso de identidade gerenciada de um aplicativo 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. A concessão de permissões geralmente é uma ação de gerenciamento no 'painel de controle' do serviço do Azure que contém o recurso protegido encaminhada por meio do Azure Resource Manager. Essa ação impõe todas as verificações de acesso baseado em função aplicáveis.
A sequência exata de etapas dependerá do tipo de recurso do Azure que está sendo acessado, bem como da linguagem ou do cliente usado para conceder permissões. O restante do artigo assume uma identidade atribuída ao aplicativo pelo usuário e inclui vários exemplos típicos para sua conveniência, mas não é, de modo algum, uma referência exaustiva sobre esse tópico. Confira a documentação dos respectivos serviços do Azure para obter instruções atualizadas de como conceder permissões.
Como conceder 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 do Blob de Armazenamento à identidade gerenciada do aplicativo no escopo do grupo de recursos.
Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o portal do Azure.
Conceder acesso ao Azure Key Vault
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 permitir acesso no portal do Azure são semelhantes às listadas acima e não serão repetidas aqui.
O exemplo a seguir ilustra a permissão de acesso a um cofre por meio de uma implantação de modelo. Adicione os snippet abaixo como outra entrada sob o elemento resources
do modelo. O exemplo demonstra a permissão de acesso para os tipos de identidade atribuídos pelo usuário e pelo sistema, respectivamente. Escolha aquele que se aplica.
# 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 pelo 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, confira Cofres – Atualizar a política de acesso.