Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Azure Functions fornece uma identidade gerenciada, que é uma solução perfeita 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 os segredos do aplicativo, como as credenciais nas cadeias de conexão. Neste tutorial, você adiciona uma identidade gerenciada a um aplicativo de funções que usa bindings do SQL do Azure.
Este tutorial utiliza uma identidade gerenciada atribuída pelo usuário (UAMI), recomendada porque pode ser compartilhada entre recursos e é independente do ciclo de vida do aplicativo. Para mais informações sobre conexões baseadas em identidade no Azure Functions, veja Configurar conexões para serviços remotos.
Quando você termina este tutorial, seu aplicativo de funções se conecta ao Banco de Dados SQL do Azure sem a necessidade de nome de usuário e senha.
Uma visão geral dos passos que você toma:
Conceder acesso de banco de dados ao usuário do Microsoft Entra
Primeiro, habilite a autenticação Microsoft Entra no banco de dados SQL designando um usuário do Microsoft Entra como administrador do Active Directory do servidor. Esse usuário é diferente da conta Microsoft usada para inscrição na assinatura do Azure. Esse usuário precisa ser criado, importado, sincronizado ou convidado por você para o Microsoft Entra ID. Para obter mais informações sobre usuários permitidos do Microsoft Entra, consulte os Recursos e limitações do Microsoft Entra no banco de dados SQL.
Você pode ativar a autenticação Microsoft Entra pelo portal Azure, PowerShell ou CLI do Azure. As instruções para o CLI do Azure estão na seção a seguir. Para informações sobre como realizar essa tarefa pelo portal do Azure e PowerShell, consulte a documentação do SQL do Azure sobre autenticação Microsoft Entra.
Se o locatário do Microsoft Entra ainda não tiver um usuário, crie um seguindo as etapas em Adicionar ou excluir usuários usando o Microsoft Entra ID.
Encontre o ID do objeto do usuário Microsoft Entra usando o
az ad user listcomando e substitua <user-principal-name>. Salve o resultado em uma variável.Para a CLI do Azure 2.37.0 e mais recentes:
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)Dica
Para visualizar a lista de todos os nomes principais de usuário no Microsoft Entra ID, execute
az ad user list --query [].userPrincipalName.Adicione este usuário do Microsoft Entra como administrador do Active Directory usando o
az sql server ad-admin createcomando 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 mais informações sobre como adicionar um administrador do Active Directory, veja Provisionar um administrador Microsoft Entra para seu servidor.
Criar uma identidade gerenciada atribuída ao usuário
Crie uma identidade gerenciada atribuída pelo usuário e atribua-a ao seu aplicativo de função. Use uma identidade atribuída pelo usuário porque você pode reutilizá-la em múltiplos recursos e seu ciclo de vida é independente do seu app funcional.
No portal Azure, pesquise por Identidades Gerenciadas e selecione Criar.
Escolha sua Assinatura, Grupo de Recursos, Região e dê um Nome à identidade (por exemplo,
my-sql-identity).Selecione Examinar + criar e, em seguida, selecione Criar.
Depois que a identidade for criada, vá para seu aplicativo de funções no portal.
Em Configurações, selecione Identidade e depois selecione a aba Designada pelo Usuário.
Selecione Adicionar, escolha a identidade gerenciada que você criou e selecione Adicionar.
Dica
Você também pode usar uma identidade gerenciada atribuída pelo sistema. Se preferir sistema atribuído, ative-o na aba Sistema atribuído da página de Identidade . Ao usar a identidade atribuída pelo sistema, o <identity-name> nos comandos SQL é o nome do seu aplicativo de função, e você não precisa do parâmetro User Id na cadeia de conexão.
Permitir que o Banco de Dados SQL tenha acesso à identidade gerenciada
Nessa etapa, conecte-se ao banco de dados SQL usando uma conta de usuário Microsoft Entra e conceda à identidade gerenciada acesso ao banco de dados.
Abra sua ferramenta SQL preferida e faça login usando uma conta de usuário Microsoft Entra, como o usuário Microsoft Entra que você designou como administrador. Você pode realizar essa etapa 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 30No prompt do SQL do banco de dados desejado, execute os comandos a seguir para conceder as permissões necessárias à 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>]; GOO <identity-name> é o nome da identidade gerenciada no Microsoft Entra ID. Para uma identidade atribuída ao usuário, esse nome é o nome que você deu à identidade ao criá-la (por exemplo,
my-sql-identity). Para uma identidade atribuída ao sistema, o nome é sempre o mesmo do nome do seu aplicativo funcional.Note
Se você estiver usando o gatilho SQL do Azure, sua identidade gerenciada exigirá permissões adicionais além de
db_datareaderedb_datawriter. Para obter mais informações, consulte Conceder permissões para disparador de SQL do Azure.
Configurar a string de conexão SQL do Azure Functions
Na etapa final, configure a cadeia de conexão SQL do aplicativo de funções para usar a autenticação de identidade gerenciada do Microsoft Entra.
Você identifica o nome da configuração da cadeia de conexão no código da função como o atributo de associação ConnectionStringSetting, conforme observado em atributos e anotações da associação de entrada do SQL.
Nas configurações do aplicativo de funções, atualize a configuração da cadeia de conexã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 do seu banco de dados e <client-id-of-user-assigned-identity> pelo ID do cliente da sua identidade gerenciada atribuída pelo usuário. Você pode encontrar o ID do cliente na página de Visão Geral do seu recurso de identidade gerenciada no portal do Azure.
Dica
A Active Directory Default palavra-chave de autenticação funciona tanto localmente (usando suas credenciais de desenvolvedor) quanto no Azure (usando a identidade gerenciada). Esse recurso significa que você pode usar a mesma cadeia de conexão em ambos os ambientes. Para identidade gerenciada atribuída ao sistema, omita o User Id parâmetro.
Para mais informações sobre conexões baseadas em identidade, veja Configurar conexões para serviços remotos.