Autenticar com o Microsoft Entra ID no sqlcmd

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System)

O sqlcmd oferece suporte a vários modelos de autenticação do Microsoft Entra, dependendo da versão instalada.

Observação

Embora o Microsoft Entra ID seja o novo nome do Azure Active Directory (Azure AD), para evitar a interrupção de ambientes existentes, o Azure AD ainda permanecerá em alguns elementos codificados, como campos de interface do usuário, provedores de conexão, códigos de erro e cmdlets. Neste artigo, os dois nomes são intercambiáveis.

Para obter mais informações sobre a diferença entre as versões do sqlcmd, consulte Utilitário sqlcmd.

O sqlcmd (Go) oferece suporte a mais modelos de autenticação do Microsoft Entra, com base no pacote azidentity. A implementação depende de um conector do Microsoft Entra no driver go-sqlcmd.

Argumentos de linha de comando

Para usar a autenticação do Microsoft Entra, você pode usar uma das duas opções de linha de comando.

O -G é (principalmente) compatível com seu uso em sqlcmd (ODBC). Se houver um nome de usuário e senha, ele será autenticado usando a autenticação de senha do Microsoft Entra. Se houver um nome de usuário, ele usará a autenticação interativa do Microsoft Entra, que poderá exibir um navegador da Web. Se nenhum nome de usuário ou senha for fornecido, ele usará um DefaultAzureCredential, que tentará se autenticar usando vários mecanismos.

--authentication-method= pode ser usado para especificar um dos seguintes tipos de autenticação.

ActiveDirectoryDefault

  • Para obter uma visão geral dos tipos de autenticação que esse modo usará, confira Credencial padrão do Azure.
  • Escolha esse método se os scripts de automação de banco de dados forem executados em ambientes de desenvolvimento local e em uma implantação de produção no Azure. No seu ambiente de desenvolvimento você poderá usar um segredo do cliente ou um logon da CLI do Azure. Sem alterar o script do ambiente de desenvolvimento, você poderá usar uma identidade gerenciada ou um segredo do cliente na implantação de produção.
  • É necessário definir as variáveis de ambiente AZURE_TENANT_ID e AZURE_CLIENT_ID para que o DefaultAzureCredential comece a verificar a configuração de ambiente e procure uma das seguintes variáveis de ambiente adicionais para autenticar:
    • Definir a variável de ambiente AZURE_CLIENT_SECRET configura o DefaultAzureCredential para escolher ClientSecretCredential.
    • Definir a variável de ambiente AZURE_CLIENT_CERTIFICATE_PATH vai configurar o DefaultAzureCredential para escolher ClientCertificateCredential se AZURE_CLIENT_SECRET não estiver definido.
  • Definir a variável de ambiente AZURE_USERNAME vai configurar o DefaultAzureCredential para escolher UsernamePasswordCredential se AZURE_CLIENT_SECRET e AZURE_CLIENT_CERTIFICATE_PATH não estiverem definidos.

ActiveDirectoryIntegrated

No momento, esse método não está implementado e retornará para ActiveDirectoryDefault.

ActiveDirectoryPassword

  • Esse método será autenticado usando um nome de usuário e uma senha. Ele não funcionará se o MFA for exigido.

  • Você fornece o nome de usuário e a senha usando as opções de linha de comando usuais ou as variáveis de ambiente do SQLCMD.

  • Defina a variável de ambiente AZURE_TENANT_ID como a ID do locatário do servidor se não estiver usando o locatário padrão do usuário.

ActiveDirectoryInteractive

Esse método inicia um navegador da Web para autenticar o usuário.

ActiveDirectoryManagedIdentity

Use esse método ao executar o sqlcmd (Go) em uma VM do Azure que tenha uma identidade gerenciada atribuída pelo sistema ou pelo usuário. Se estiver usando uma identidade gerenciada atribuída pelo usuário, defina o nome de usuário como a ID do cliente da identidade gerenciada. Se estiver usando uma identidade atribuída pelo sistema, deixe o nome de usuário vazio.

Este exemplo mostra como se conectar usando uma SAMI (Identidade gerenciada atribuída pelo serviço):

-S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity

Este exemplo mostra como se conectar a uma UAMI (Identidade gerenciada atribuída pelo usuário) adicionando a ID do Cliente da identidade gerenciada atribuída ao usuário:

-S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity -U <user-assigned-managed-identity-client-id>

ActiveDirectoryServicePrincipal

Esse método autentica o nome de usuário fornecido como uma ID da entidade de serviço e a senha como o segredo do cliente na entidade de serviço. Forneça um nome de usuário no formulário <service principal id>@<tenant id>. Defina a variável SQLCMDPASSWORD como o segredo do cliente. Se estiver usando um certificado em vez de um segredo do cliente, defina a variável de ambiente AZURE_CLIENT_CERTIFICATE_PATH como o caminho do arquivo de certificado.

Variáveis de ambiente para autenticação do Microsoft Entra

Algumas configurações de autenticação do Microsoft Entra não têm entradas de linha de comando e algumas variáveis de ambiente são consumidas diretamente pelo pacote azidentity usado pelo sqlcmd (Go).

É possível definir essas variáveis de ambiente para configurar alguns aspectos da autenticação do Microsoft Entra e para ignorar comportamentos padrão. Além das variáveis listadas anteriormente, as variáveis a seguir são específicas do sqlcmd (Go) e se aplicam a vários métodos.

SQLCMDCLIENTID

Defina essa variável de ambiente como o identificador de um aplicativo registrado no Microsoft Entra, que está autorizado a autenticar o Banco de Dados SQL do Azure. Aplica-se aos métodos ActiveDirectoryInteractive e ActiveDirectoryPassword.