Partilhar via


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

O Azure Functions 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, você adicionará identidade gerenciada a uma Função do Azure que utiliza associações SQL do Azure. Um exemplo de projeto do Azure Function com associações SQL está disponível no exemplo de back-end ToDo.

Quando você terminar este tutorial, sua Função do Azure se conectará ao banco de dados SQL do Azure sem a necessidade de nome de usuário e senha.

Uma visão geral das etapas que você tomará:

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

Primeiro, habilite a autenticação do Microsoft Entra no banco de dados SQL atribuindo um usuário do Microsoft Entra como administrador do Ative 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.

A habilitação da autenticação do Microsoft Entra pode ser concluída por meio do portal do Azure, PowerShell ou CLI do Azure. As instruções para a CLI do Azure estão abaixo e as informações que completam isso por meio do portal do Azure e do PowerShell estão disponíveis na documentação do SQL do Azure na autenticação do 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. Localize a ID do objeto do usuário do Microsoft Entra usando o e substitua user-principal-name>.az ad user list < O resultado é salvo em uma 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 usuário do Microsoft Entra como administrador do Ative Directory usando az sql server ad-admin create o comando no Cloud Shell. No comando a seguir, substitua <server-name> pelo nome do servidor (sem o sufixo.database.windows.net).

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

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

Habilitar a identidade gerenciada atribuída ao sistema no Azure Function

Nesta etapa, adicionaremos uma identidade atribuída ao sistema à Função do Azure. Em etapas posteriores, essa identidade terá acesso ao banco de dados SQL.

Para habilitar a identidade gerenciada atribuída pelo sistema no portal do Azure:

  1. Crie uma Função do Azure no portal como faria normalmente. Navegue até ele no portal.
  2. Role para baixo até o grupo Configurações na navegação à esquerda.
  3. Selecione a Identidade.
  4. Na guia Sistema atribuído, alterne Status para Ativado. Clique em Guardar.

Captura de ecrã da função da aplicação, mostrando o Estado definido como Ativado.

Para obter informações sobre como habilitar a identidade gerenciada atribuída ao sistema por meio da CLI do Azure ou do PowerShell, confira mais informações sobre como usar identidades gerenciadas com o Azure Functions.

Gorjeta

Para identidade gerenciada atribuída pelo usuário, alterne para a guia Usuário atribuído. Clique em Adicionar e selecione uma Identidade Gerenciada. Para obter mais informações sobre como criar identidade gerenciada atribuída pelo usuário, consulte Gerenciar identidades gerenciadas atribuídas pelo usuário.

Conceder acesso ao banco de dados SQL à identidade gerenciada

Nesta etapa, nos conectaremos ao banco de dados SQL com uma conta de usuário do Microsoft Entra e concederemos à identidade gerenciada acesso ao banco de dados.

  1. Abra sua ferramenta SQL preferida e faça login com uma conta de usuário do Microsoft Entra (como o usuário do Microsoft Entra que atribuímos como administrador). Isso pode ser feito no Cloud Shell com 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. Se a identidade for atribuída pelo sistema, o nome será sempre o mesmo que o nome do seu aplicativo Function.

Configurar a cadeia de conexão SQL do Azure Function

Na etapa final, configuraremos a cadeia de conexão SQL do Azure Function para usar a autenticação de identidade gerenciada do Microsoft Entra.

O nome da configuração da cadeia de conexão é identificado em nosso código Functions como o atributo de vinculação "ConnectionStringSetting", como visto nos atributos e anotações de vinculação de entrada SQL.

Nas configurações do aplicativo do nosso aplicativo de função, a configuração da cadeia de conexão SQL deve ser atualizada para seguir este formato:

Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; Database=testdb

testdb é o nome do banco de dados ao qual estamos nos conectando e demo.database.windows.net é o nome do servidor ao qual estamos nos conectando.

Gorjeta

Para identidade gerenciada atribuída pelo usuário, use Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; User Id=ClientIdOfManagedIdentity; Database=testdb.

Próximos passos