Compartilhar via


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.

Próximas etapas