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.
Aplica-se a: ✅Microsoft Fabric✅ do Azure Data Explorer
Este artigo fornece uma visão geral dos métodos de autenticação primários disponíveis para as bibliotecas de clientes do Kusto. Os snippets de código mostram diferentes maneiras de autenticar usuários e aplicativos, permitindo a interação perfeita com clusters Kusto. Cada método atende a diferentes cenários e requisitos.
Use identidades gerenciadas em vez de autenticação de nome de usuário e senha ou cadeias de conexão sempre que possível. As identidades gerenciadas oferecem uma abordagem mais segura e simplificada para autenticação.
Neste artigo, você aprenderá a autenticar usando:
Principal de Aplicativo
Autenticação de identidade gerenciada
Usuário principal
- autenticação interativa de login do usuário
- Autenticação da CLI (interface de linha de comando do Azure)
- Autenticação de código do dispositivo
Provedor de token personalizado
Pré-requisitos
- Configurar seu ambiente de desenvolvimento para usar a biblioteca de clientes do Kusto
Métodos de autenticação de principal de aplicativo
Esta seção aborda os diferentes métodos de autenticação usando uma entidade de segurança do aplicativo.
Autenticação de identidade gerenciada
Há dois tipos de identidades gerenciadas: atribuídas pelo sistema e atribuídas pelo usuário. As identidades gerenciadas atribuídas pelo sistema têm seu ciclo de vida vinculado ao recurso que as cria. Essa identidade é limitada a um recurso. As identidades gerenciadas atribuídas pelo usuário podem ser usadas em vários recursos. Para obter mais informações, consulte Identidades Gerenciadas.
| Nos exemplos a seguir, substitua <QueryEndpointUri> e <ManagedIdentityClientId> com seus valores.
Identidade gerenciada atribuída pelo sistema:
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadSystemManagedIdentity();Identidade gerenciada atribuída pelo usuário. Use a ID do cliente de identidade ou a ID do objeto, da seguinte maneira:
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadUserManagedIdentity(<ManagedIdentityClientId>);
Importante
- O ID do objeto ou identificador principal do recurso de identidade gerenciada deve ter uma função atribuída para acessar o cluster Kusto. Você pode atribuir uma função no portal do Azure na página de recursos do cluster Kusto emPermissões de >. A Identidade Gerenciada não deve ser anexada diretamente ao cluster Kusto.
- A autenticação de Identidade Gerenciada não tem suporte em ambientes de desenvolvimento locais. Para testar a autenticação de Identidade Gerenciada, implante o aplicativo no Azure ou use um método de autenticação diferente ao trabalhar localmente.
Autenticação baseada em certificado
Os certificados servem como segredos para autenticar a identidade de um aplicativo ao solicitar um token. Há vários métodos para carregar o certificado, como carregá-lo do repositório de credenciais local do computador ou do disco.
| Nos exemplos a seguir, substitua <QueryEndpointUri>, <ApplicationId>, <CertificateSubjectName>, <CertificateIssuerName>, <CertificateThumbprint>, <CertificateObject>, <AuthorityId>, <PemPublicCertificate>, <PemPrivateKey>, <privateKeyPemFilePath>, <PemCertificatePath>e <EnableSubjectAndIssuerAuth> com seus próprios valores.
O certificado do repositório de certificados local do computador só tem suporte usando C#:
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadApplicationSubjectAndIssuerAuthentication(<ApplicationId>, <CertificateSubjectName>, <CertificateIssuerName>, <AuthorityId>);Importante
Quando você usa o nome da entidade e o emissor, o certificado deve ser instalado no repositório de certificados do computador local.
Certificado de uma origem arbitrária, como um arquivo em disco, cache ou repositório seguro, como o Azure Key Vault. O objeto de certificado deve conter uma chave privada:
X509Certificate2 certificate = <CertificateObject>; var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadApplicationCertificateAuthentication(<ApplicationId>, certificate, <AuthorityId>);Para obter mais informações, confira Cadeias de conexão do Kusto.
Importante
Para carregar certificados do Azure Key Vault, você pode usar o cliente Azure.Security.KeyVault.Certificates.
Autenticação de chave de aplicativo
A chave do aplicativo, também conhecida como senha de aplicativo, é uma cadeia de caracteres secreta que um aplicativo usa para autenticar e provar sua identidade ao solicitar um token. Ele serve como uma forma de credencial para o aplicativo acessar recursos protegidos. A chave do aplicativo normalmente é gerada e atribuída pelo provedor de identidade ou pelo servidor de autorização. É importante gerenciar e proteger com segurança a chave do aplicativo para impedir o acesso não autorizado a informações ou ações confidenciais.
| Nos exemplos a seguir, substitua <QueryEndpointUri>, <ApplicationId>, <ApplicationKey>, <AuthorityId>e <AuthorityId> por seus próprios valores.
Chave do aplicativo:
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadApplicationKeyAuthentication(<ApplicationId>, <ApplicationKey>, <AuthorityId>);Cadeia de conexão com a chave do aplicativo:
var connectionString = "Data Source=<QueryEndpointUri>;Initial Catalog=NetDefaultDB;AAD Federated Security=True;AppClientId=<ApplicationId>;AppKey=<ApplicationKey>;Authority Id=<AuthorityId>;" var kcsb = new KustoConnectionStringBuilder(connectionString);
Importante
Codificar segredos em seu código é uma má prática. Armazenar informações confidenciais, como credenciais de autenticação, em texto sem formatação leva a vulnerabilidades de segurança. Mantenha informações confidenciais criptografadas ou armazene-as com segurança em um cofre de chaves. O uso de criptografia ou um cofre de chaves garante que seus segredos estejam protegidos e acessíveis apenas para usuários ou aplicativos autorizados.
Métodos de autenticação da entidade de usuário
Esta seção aborda os diferentes métodos de autenticação usando uma entidade de usuário.
Autenticação interativa de entrada do usuário
Esse método de autenticação usa as credenciais do usuário para estabelecer uma conexão segura com o Kusto. O método abre um navegador da Web em que o usuário é solicitado a inserir seu nome de usuário e senha para concluir o processo de autenticação.
| Nos exemplos a seguir, substitua <QueryEndpointUri>,<AuthorityId>e <AuthorityId> por seus próprios valores.
Entrada interativa do usuário:
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadUserPromptAuthentication();
Autenticação da CLI (Interface Command-Line) do Azure
Esse método de autenticação usa a CLI (Interface Command-Line) do Azure para autenticar e obter um token para o usuário. Executar o comando az login significa que o usuário pode estabelecer uma conexão com segurança e recuperar o token necessário para fins de autenticação. O usuário poderá ser solicitado a entrar se o token não estiver disponível no cache da CLI do Azure e o parâmetro interactive estiver definido como true. Para obter mais informações, confira CLI (interface de linha de comando) do Azure.
| No exemplo a seguir, substitua <QueryEndpointUri> pelo seu próprio valor.
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>)
.WithAadAzCliAuthentication(interactive: true);
Importante
Esse método só tem suporte para aplicativos do .NET Framework.
Autenticação de código do dispositivo
Esse método foi projetado para dispositivos sem uma interface de usuário adequada para entrada, como dispositivos IoT e terminais de servidor. Ele fornece ao usuário um código e uma URL para autenticar usando um dispositivo diferente, como um smartphone. Esse método interativo requer que o usuário entre por meio de um navegador.
| No exemplo a seguir, substitua <QueryEndpointUri> pelo seu próprio valor.
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>)
.WithAadDeviceCodeAuthentication((msg, uri, code) =>
{
// The callback is used to display instructions to the user on how to authenticate using the device code
Console.WriteLine("Device Code Message: {0}", msg);
Console.WriteLine("Device Code Uri: {0}", uri);
Console.WriteLine("Device Code: {0}", code);
return Task.CompletedTask;
});
Importante
A autenticação por código do dispositivo pode ser bloqueada por políticas de acesso condicional do inquilino. Se bloqueado, selecione um método de autenticação alternativo.
Métodos de autenticação para provedores personalizados de token
Esta seção aborda os diferentes métodos de autenticação usando um provedor de token personalizado.
Provedor de token personalizado para autenticação de credencial de Identidade Gerenciada federada
Provedores de token personalizados podem ser usados para adquirir um token de ID do Microsoft Entra para autenticação. O exemplo a seguir demonstra como usar um provedor de token personalizado para obter um token usando a identidade gerenciada federada. Você pode modificar o código para atender aos requisitos do aplicativo.
| No exemplo a seguir, substitua <AuthorityIdId>, <ApplicationId>, <ManagedIdentityClientId>e <QueryEndpointUri> por seus próprios valores.
public class TokenProvider
{
private ClientAssertionCredential m_clientAssertion;
private TokenRequestContext m_tokenRequestContext;
public TokenProvider(string queryEndpointUri)
{
string resourceId = null;
try
{
// Get the appropiate resource id by querying the metadata
var httpClient = new HttpClient();
var response = httpClient.GetByteArrayAsync($"{queryEndpointUri}/v1/rest/auth/metadata").Result;
var json = JObject.Parse(Encoding.UTF8.GetString(response));
resourceId = json["AzureAD"]?["KustoServiceResourceId"]?.ToString();
// Append scope to resource id
resourceId = !string.IsNullOrWhiteSpace(resourceId) ? $"{resourceId}/.default" : null;
}
catch { /* Handle exception */}
m_tokenRequestContext = new TokenRequestContext(new string[] { resourceId ?? "https://kusto.kusto.windows.net/.default" });
// Create client assertion credential to authenticate with Kusto
m_clientAssertion = new ClientAssertionCredential
(
<AuthorityIdId>,
<ApplicationId>,
async (token) =>
{
// Get Managed Identity token
var miCredential = new ManagedIdentityCredential(<ManagedIdentityClientId>);
var miToken = await miCredential.GetTokenAsync(new TokenRequestContext(new[] {
"api://AzureADTokenExchange/.default"
})).ConfigureAwait(false);
return miToken.Token;
}
);
}
public async Task<string> GetTokenAsync()
{
var accessToken = await m_clientAssertion.GetTokenAsync(m_tokenRequestContext).ConfigureAwait(false);
return accessToken.Token;
}
}
var tokenProvider = new TokenProvider(<QueryEndpointUri>);
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>)
.WithAadTokenProviderAuthentication(
async () =>
{
return await tokenProvider.GetTokenAsync();
});
Usando a autenticação tokenCredential do Azure
Crie um provedor de token personalizado criando uma classe que herda de TokenCredential e implementa o método GetToken. Como alternativa, você pode usar um provedor de token existente como DefaultAzureCredential. Esse método fornece flexibilidade para diferentes cenários de autenticação quando um provedor de token personalizado é necessário.
Você pode usar DefaultAzureCredential para dar suporte ao código de produção que usa a autenticação de Identidade Gerenciada ou testar o código usando o Visual Studio ou a CLI do Azure.
DefaultAzureCredential pode ser configurado para usar métodos de autenticação diferentes.
| No exemplo a seguir, substitua <QueryEndpointUri> e <ManagedIdentityClientId> por seus próprios valores.
var credentialProvider = new DefaultAzureCredential(new DefaultAzureCredentialOptions {
ManagedIdentityClientId = <ManagedIdentityClientId>
});
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>)
.WithAadAzureTokenCredentialsAuthentication(credentialProvider);
Nota
DefaultAzureCredential é usado para autenticar com os serviços do Azure.
Ele tenta vários métodos de autenticação para obter um token e pode ser configurado para trabalhar com Identidade Gerenciada, Visual Studio, CLI do Azure e muito mais.
Essa credencial é adequada para ambientes de teste e produção, pois pode ser configurada para usar diferentes métodos de autenticação.
Para obter mais informações, confira Classe DefaultAzureCredential.