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
eAZURE_CLIENT_ID
para que oDefaultAzureCredential
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 oDefaultAzureCredential
para escolherClientSecretCredential
. - Definir a variável de ambiente
AZURE_CLIENT_CERTIFICATE_PATH
vai configurar oDefaultAzureCredential
para escolherClientCertificateCredential
seAZURE_CLIENT_SECRET
não estiver definido.
- Definir a variável de ambiente
- Definir a variável de ambiente AZURE_USERNAME vai configurar o
DefaultAzureCredential
para escolherUsernamePasswordCredential
seAZURE_CLIENT_SECRET
eAZURE_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
.