Tutorial: Conectar um aplicativo de função ao SQL do Azure com identidade gerenciada e associações SQL

O Funções do Azure fornece uma identidade gerenciada, que é uma solução pronta para uso para proteger o acesso ao Banco de Dados SQL do Azure e a outros serviços do Azure. As identidades gerenciadas tornam seu aplicativo mais seguro, eliminando segredos de seu aplicativo, como credenciais nas cadeias de conexão. Neste tutorial, adiciona uma identidade gerida a uma aplicação de funções que utiliza bindings do SQL do Azure.

Este tutorial utiliza uma identidade gerida atribuída pelo utilizador (UAMI), recomendada porque pode ser partilhada entre recursos e é independente do ciclo de vida da aplicação. Para mais informações sobre ligações baseadas em identidade no Funções do Azure, consulte Configurar ligações a serviços remotos.

Quando terminares este tutorial, a tua app de funções liga-se ao Base de Dados SQL do Azure sem necessidade de nome de utilizador e palavra-passe.

Descrição geral das etapas que executa:

Conceder acesso ao banco de dados ao usuário do Microsoft Entra

Primeiro, ative a autenticação Microsoft Entra na base de dados SQL atribuindo a um utilizador Microsoft Entra como administrador do Active Directory do servidor. Este utilizador é diferente da conta Microsoft que utilizou para se inscrever na sua subscrição do Azure. Deve ser um usuário que você criou, importou, sincronizou ou convidou para o Microsoft Entra ID. Para obter mais informações sobre usuários permitidos do Microsoft Entra, consulte Recursos e limitações do Microsoft Entra no banco de dados SQL.

Pode ativar a autenticação Microsoft Entra através do portal Azure, PowerShell ou CLI do Azure. As instruções para o CLI do Azure encontram-se na secção seguinte. Para informações sobre como realizar esta tarefa através do portal Azure e PowerShell, consulte a documentação SQL do Azure sobre autenticação Microsoft Entra.

  1. Se o seu locatário do Microsoft Entra ainda não tiver um usuário, crie um seguindo as etapas em Adicionar ou excluir usuários usando a ID do Microsoft Entra.

  2. Encontre o ID do objeto do utilizador Microsoft Entra usando o az ad user list comando e substitua <user-principal-name>. Guardar o resultado numa variável.

    Para a CLI do Azure 2.37.0 e mais recente:

    azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].id --output tsv)
    

    Para versões mais antigas da CLI do Azure:

    azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].objectId --output tsv)
    

    Gorjeta

    Para ver a lista de todos os nomes principais de usuário no Microsoft Entra ID, execute az ad user list --query [].userPrincipalName.

  3. Adicione este utilizador do Microsoft Entra como administrador do Active Directory usando o az sql server ad-admin create comando no Cloud Shell. No comando a seguir, substitua <> pelo nome do servidor (sem o sufixo).

    az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id $azureaduser
    

Para mais informações sobre como adicionar um administrador do Active Directory, consulte Provisionar um administrador Microsoft Entra para o seu servidor.

Criar uma identidade gerenciada atribuída pelo usuário

Crie uma identidade gerida atribuída pelo utilizador e atribua-a à sua aplicação funcional. Use uma identidade atribuída pelo utilizador porque pode reutilizá-la em múltiplos recursos e o seu ciclo de vida é independente da sua aplicação funcional.

  1. No portal do Azure, pesquise por Identidades Geridas e selecione Criar.

  2. Escolha a sua Subscrição, Grupo de Recursos, Região e atribua à identidade um Nome (por exemplo, my-sql-identity).

  3. Selecione Rever + criar e, em seguida, selecione Criar.

  4. Depois de criada a identidade, vá à sua aplicação de funções no portal.

  5. Em Definições, selecione Identidade e depois selecione o separador Utilizador atribuído.

  6. Selecione Adicionar, escolha a identidade gerida que criou e selecione Adicionar.

Gorjeta

Também pode usar uma identidade gerida atribuída pelo sistema. Se preferir o sistema atribuído, ative-o no separador Atribuído pelo sistema da página Identidade. Ao usar a identidade atribuída pelo sistema, o <identity-name> nos comandos SQL é o nome da sua aplicação de funções, e não necessita do parâmetro User Id na cadeia de ligação.

Conceder acesso ao banco de dados SQL à identidade gerenciada

Neste passo, ligue-se à base de dados SQL usando uma conta de utilizador Microsoft Entra e conceda à identidade gerida acesso à base de dados.

  1. Abra a sua ferramenta SQL preferida e inicie sessão usando uma conta de utilizador Microsoft Entra, como o utilizador Microsoft Entra que atribuiu como administrador. Pode realizar este passo no Cloud Shell usando o comando SQLCMD.

    sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30
    
  2. No prompt SQL para o banco de dados desejado, execute os seguintes comandos para conceder permissões à sua função. Por exemplo,

    CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [<identity-name>];
    ALTER ROLE db_datawriter ADD MEMBER [<identity-name>];
    GO
    

    <identity-name> é o nome da identidade gerenciada no Microsoft Entra ID. Para uma identidade atribuída pelo utilizador, este nome é o nome que deu à identidade quando a criou (por exemplo, my-sql-identity). Para uma identidade atribuída pelo sistema, o nome é sempre o mesmo que o nome da tua aplicação funcional.

    Note

    Se estiveres a usar o trigger SQL do Azure, a tua identidade gerida requer permissões adicionais para além de db_datareader e db_datawriter. Para mais informações, consulte Conceder permissões para SQL do Azure trigger.

Configurar a cadeia de conexão SQL do Azure Function

No passo final, configure a cadeia de ligação SQL da aplicação de funções para utilizar a autenticação de identidade gerida do Microsoft Entra.

Identifica o nome da definição da cadeia de ligação no código da função como o atributo de associação ConnectionStringSetting, conforme mostrado nos atributos e anotações da associação de entrada SQL.

Nas definições da aplicação da sua aplicação de funções, atualize a definição da cadeia de ligação SQL para seguir este formato:

Server=<server-name>.database.windows.net; Authentication=Active Directory Default; Database=<database-name>; User Id=<client-id-of-user-assigned-identity>

Substitua <server-name> pelo nome do seu servidor SQL, <database-name> pelo nome da base de dados e <client-id-of-user-assigned-identity> pelo ID do cliente da sua identidade gerida atribuída pelo utilizador. Pode encontrar o ID do cliente na página de Visão Geral do seu recurso de identidade gerida no portal Azure.

Gorjeta

A Active Directory Default palavra-chave de autenticação funciona tanto localmente (usando as suas credenciais de programador) como no Azure (usando a identidade gerida). Esta funcionalidade significa que podes usar a mesma cadeia de ligação em ambos os ambientes. Para identidade gerida atribuída pelo sistema, omita o parâmetro User Id.

Para mais informações sobre ligações baseadas em identidade, consulte Configurar ligações a serviços remotos.

Próximos passos