O Azure Data Explorer criptografa todos os dados em uma conta de armazenamento em repouso. Por padrão, os dados são criptografados com chaves gerenciadas pela Microsoft. Para obter controle adicional sobre chaves de criptografia, você pode fornecer chaves gerenciadas pelo cliente para usar para criptografia de dados.
As chaves gerenciadas pelo cliente devem ser armazenadas em um Azure Key Vault. Você pode criar suas próprias chaves e armazená-las em um cofre de chaves ou usar uma API do Azure Key Vault para gerar chaves. O cluster do Azure Data Explorer e o cofre de chaves devem estar na mesma região, mas podem estar em assinaturas diferentes. Para obter uma explicação detalhada sobre chaves gerenciadas pelo cliente, consulte chaves gerenciadas pelo cliente com o Azure Key Vault.
Este artigo mostra como configurar chaves gerenciadas pelo cliente.
Para configurar chaves gerenciadas pelo cliente com o Azure Data Explorer, você deve definir duas propriedades no cofre de chaves: Exclusão Suave e Não Remover Permanentemente. Essas propriedades não estão habilitadas por padrão. Para habilitar essas propriedades, execute Habilitar a exclusão reversível e habilitar a Proteção contra Limpeza no PowerShell ou na CLI do Azure em um cofre de chaves novo ou existente. Há suporte apenas para chaves RSA de tamanho 2048. Para obter mais informações sobre chaves, consulte chaves do Key Vault.
Atribuir uma identidade gerenciada ao cluster
Para habilitar chaves gerenciadas pelo cliente para seu cluster, primeiro atribua uma identidade gerenciada atribuída pelo sistema ou atribuída pelo usuário ao cluster. Você usará essa identidade gerenciada para conceder permissões ao cluster para acessar o cofre de chaves. Para configurar identidades gerenciadas, consulte identidades gerenciadas.
Habilitar a criptografia com chaves gerenciadas pelo cliente
Estas etapas a seguir explicam como habilitar a criptografia de chaves gerenciadas pelo cliente usando o portal do Azure. Por padrão, a criptografia do Azure Data Explorer usa chaves gerenciadas pela Microsoft. Configure seu cluster do Azure Data Explorer para usar chaves gerenciadas pelo cliente e especifique a chave a ser associada ao cluster.
No portal do Azure, vá para o recurso de cluster do Azure Data Explorer.
Selecione Configurações>Criptografia no painel esquerdo do portal.
No painel Criptografia , selecione Ativado para a configuração de chave gerenciada pelo cliente .
Clique em Selecionar Chave.
Na janela Selecionar chave do Azure Key Vault, selecione um Azure Key Vault existente na lista suspensa. Se você selecionar Criar novo para criar um novo Cofre de Chaves, será roteado para a tela Criar Cofre de Chaves.
Selecione Chave.
Versão:
- Para garantir que essa chave sempre use a versão mais recente da chave, selecione a caixa de seleção Sempre usar a versão da chave atual .
- Caso contrário, selecione Versão.
Clique em Selecionar.
Em Tipo de identidade, selecione Sistema Atribuído ou Usuário Atribuído.
Se você selecionar Usuário Atribuído, escolha uma identidade atribuída pelo usuário na lista de seleção.
No painel Criptografia que agora contém sua chave, selecione Salvar. Quando a criação do CMK for bem-sucedida, você verá uma mensagem de sucesso em Notificações.
Se ao habilitar chaves gerenciadas pelo cliente para o cluster do Azure Data Explorer você selecionar a identidade atribuída pelo sistema, será criada uma identidade atribuída pelo sistema para o cluster, caso ainda não exista. Além disso, você fornecerá as permissões get, wrapKey e unwrapKey necessárias para o cluster do Azure Data Explorer no Key Vault selecionado e obterá as propriedades do Key Vault.
Observação
Selecione Desativar para remover a chave gerenciada pelo cliente depois que ela tiver sido criada.
As seções a seguir explicam como configurar a criptografia de chaves gerenciadas pelo cliente usando o cliente C# do Azure Data Explorer.
Instalar pacotes
Autenticação
Para executar os exemplos neste artigo, crie um aplicativo do Azure AD e um principal de serviço que possa acessar recursos. Você pode adicionar a atribuição de função no escopo da assinatura e obter o necessário Azure AD Directory (tenant) ID, Application IDe Application Secret.
O snippet de código a seguir demonstra como usar a MSAL (Biblioteca de Autenticação da Microsoft) para adquirir um token de aplicativo do Azure AD para acessar seu cluster. Para que o fluxo seja bem-sucedido, o aplicativo deve ser registrado no Azure AD e você deve ter as credenciais para autenticação de aplicativo, como uma chave de aplicativo emitida pelo Azure AD ou um certificado X.509v2 registrado pelo Azure AD.
Por padrão, a criptografia do Azure Data Explorer usa chaves gerenciadas pela Microsoft. Configure seu cluster do Azure Data Explorer para usar chaves gerenciadas pelo cliente e especifique a chave a ser associada ao cluster.
Atualize o cluster usando o seguinte código:
var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; // Azure AD Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; // Application ID
var clientSecret = "PlaceholderClientSecret"; // Application secret
var subscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
// Create a confidential authentication client for Azure AD:
var authClient = ConfidentialClientApplicationBuilder.Create(clientId)
.WithAuthority($"https://login.microsoftonline.com/{tenantId}")
.WithClientSecret(clientSecret) // can be replaced by .WithCertificate to authenticate with an X.509 certificate
.Build();
// Acquire application token
var result = authClient.AcquireTokenForClient(
new[] { "https://management.core.windows.net/.default" } // Define scopes for accessing Azure management plane
).ExecuteAsync().Result;
var credentials = new TokenCredentials(result.AccessToken, result.TokenType);
var kustoManagementClient = new KustoManagementClient(credentials) { SubscriptionId = subscriptionId };
var resourceGroupName = "testrg";
var clusterName = "mykustocluster";
var clusterPatch = new ClusterUpdate(
keyVaultProperties: new KeyVaultProperties(
keyName: "<keyName>",
keyVersion: "<keyVersion>", // Optional, leave as NULL for the latest version of the key.
keyVaultUri: "https://<keyVaultName>.vault.azure.net/",
userIdentity: "/subscriptions/<identitySubscriptionId>/resourcegroups/<identityResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName>" // Use NULL if you want to use system assigned identity.
)
);
await kustoManagementClient.Clusters.UpdateAsync(resourceGroupName, clusterName, clusterPatch);
Execute o seguinte comando para verificar se o cluster foi atualizado com êxito:
var clusterData = await kustoManagementClient.Clusters.GetAsync(resourceGroupName, clusterName);
Se o resultado contiver ProvisioningState com o valor Succeeded, então o seu cluster foi atualizado com sucesso.
As etapas a seguir explicam como habilitar a criptografia de chaves gerenciadas pelo cliente usando o cliente da CLI do Azure. Por padrão, a criptografia do Azure Data Explorer usa chaves gerenciadas pela Microsoft. Configure seu cluster do Azure Data Explorer para usar chaves gerenciadas pelo cliente e especifique a chave a ser associada ao cluster.
Execute o seguinte comando para entrar no Azure:
az login
Defina a assinatura em que o cluster está registrado. Substitua MyAzureSub pelo nome da assinatura do Azure que você deseja usar.
az account set --subscription MyAzureSub
Execute o comando a seguir para definir a nova chave com a identidade atribuída pelo sistema do cluster
az kusto cluster update --cluster-name "mytestcluster" --resource-group "mytestrg" --key-vault-properties key-name="<key-name>" key-version="<key-version>" key-vault-uri="<key-vault-uri>"
Como alternativa, defina a nova chave com uma identidade atribuída pelo usuário.
az kusto cluster update --cluster-name "mytestcluster" --resource-group "mytestrg" --key-vault-properties key-name="<key-name>" key-version="<key-version>" key-vault-uri="<key-vault-uri>" key-user-identity="<user-identity-resource-id>"
Execute o comando a seguir e verifique a propriedade 'keyVaultProperties' para verificar se o cluster foi atualizado com êxito.
az kusto cluster show --cluster-name "mytestcluster" --resource-group "mytestrg"
As etapas a seguir explicam como habilitar a criptografia de chaves gerenciadas pelo cliente usando o PowerShell. Por padrão, a criptografia do Azure Data Explorer usa chaves gerenciadas pela Microsoft. Configure seu cluster do Azure Data Explorer para usar chaves gerenciadas pelo cliente e especifique a chave a ser associada ao cluster.
Execute o seguinte comando para entrar no Azure:
Connect-AzAccount
Defina a assinatura em que o cluster está registrado.
Set-AzContext -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Execute o comando a seguir para definir a nova chave usando uma identidade atribuída pelo sistema.
Update-AzKustoCluster -ResourceGroupName "mytestrg" -Name "mytestcluster" -KeyVaultPropertyKeyName "<key-name>" -KeyVaultPropertyKeyVaultUri "<key-vault-uri>" -KeyVaultPropertyKeyVersion "<key-version>"
Como alternativa, defina a nova chave usando uma identidade atribuída pelo usuário.
Update-AzKustoCluster -ResourceGroupName "mytestrg" -Name "mytestcluster" -KeyVaultPropertyKeyName "<key-name>" -KeyVaultPropertyKeyVaultUri "<key-vault-uri>" -KeyVaultPropertyKeyVersion "<key-version>" -KeyVaultPropertyUserIdentity "user-assigned-identity-resource-id"
Execute o comando a seguir e verifique o 'KeyVaultProperty...' para verificar se o cluster foi atualizado com êxito.
Get-AzKustoCluster -Name "mytestcluster" -ResourceGroupName "mytestrg" | Format-List
As etapas a seguir explicam como configurar chaves gerenciadas pelo cliente usando modelos do Azure Resource Manager. Por padrão, a criptografia do Azure Data Explorer usa chaves gerenciadas pela Microsoft. Nesta etapa, configure o cluster do Azure Data Explorer para usar chaves gerenciadas pelo cliente e especifique a chave a ser associada ao cluster.
Se você quiser usar uma identidade atribuída pelo sistema para acessar o cofre de chaves, deixe userIdentity vazio. Caso contrário, defina a ID do recurso da identidade.
Você pode implantar o modelo do Azure Resource Manager usando o portal do Azure ou usando o PowerShell.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"clusterName": {
"type": "string",
"defaultValue": "[concat('kusto', uniqueString(resourceGroup().id))]",
"metadata": {
"description": "Name of the cluster to create"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"variables": {},
"resources": [
{
"name": "[parameters('clusterName')]",
"type": "Microsoft.Kusto/clusters",
"sku": {
"name": "Standard_E8ads_v5",
"tier": "Standard",
"capacity": 2
},
"apiVersion": "2019-09-07",
"location": "[parameters('location')]",
"properties": {
"keyVaultProperties": {
"keyVaultUri": "<keyVaultUri>",
"keyName": "<keyName>",
"keyVersion": "<keyVersion>",
"userIdentity": "<userIdentity>"
}
}
}
]
}
Atualizar a versão da chave
Ao criar uma nova versão de uma chave, você precisará atualizar o cluster para usar a nova versão. Primeiro, chame Get-AzKeyVaultKey para obter a versão mais recente da chave. Em seguida, atualize as propriedades do cofre de chaves do cluster para usar a nova versão da chave, conforme mostrado em Habilitar criptografia com chaves gerenciadas pelo cliente.
Próximas etapas