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 na criptografia de dados.
As chaves gerenciadas pelo cliente devem ser armazenadas em um Cofre de Chaves do Azure. Você pode criar suas próprias chaves e armazená-las em um cofre de chaves ou pode usar uma API do Cofre de Chaves do Azure 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 Cofre de Chaves do Azure.
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: Excluir suavemente e Não limpar. Essas propriedades não estão habilitadas por padrão. Para habilitar essas propriedades, execute Habilitar exclusão suave e Habilitar a Proteção contra Limpeza no PowerShell ou na CLI do Azure em um cofre de chaves novo ou existente. Apenas as chaves RSA de tamanho 2048 são suportadas. 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 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.
Habilite 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 seu recurso de cluster do Azure Data Explorer .
Selecione Configurações>de criptografia no painel esquerdo do portal.
No painel Criptografia , selecione Ativado para a configuração Chave gerenciada pelo cliente .
Clique em Selecionar chave.
Na janela Selecionar chave do Cofre de Chaves do Azure, selecione um Cofre de Chaves existente na lista suspensa. Se selecionar Criar novo para criar um novo Cofre de Chaves, será encaminhado para o ecrã Criar Cofre de Chaves .
Selecione Chave.
Versão:
- Para garantir que essa chave sempre use a versão de chave mais recente, marque a caixa de seleção Sempre usar a versão atual da chave .
- Caso contrário, selecione Versão.
Clique em Selecionar.
Em Tipo de identidade, selecione Sistema atribuído ou Usuário atribuído.
Se selecionar Identidade de Utilizador Atribuída, escolha uma identidade atribuída de utilizador na lista suspensa.
No painel Criptografia que agora contém sua chave, selecione Salvar. Quando a criação da CMK for bem-sucedida, você verá uma mensagem de sucesso em Notificações.
Se você selecionar a identidade atribuída ao sistema ao habilitar chaves gerenciadas pelo cliente para seu cluster do Azure Data Explorer, criará uma identidade atribuída ao sistema para o cluster, caso não exista. Além disso, você fornecerá as permissões get, wrapKey e unwrapKey necessárias para seu cluster do Azure Data Explorer no Cofre da Chave selecionado e obterá as propriedades do Cofre da Chave.
Observação
Selecione Desativado para remover a chave gerenciada pelo cliente depois que ela for 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 uma aplicação do Azure AD e uma entidade de serviço do Azure AD que possa acessar recursos. Você pode adicionar uma atribuição de função no âmbito da subscrição e obter os necessários Azure AD Directory (tenant) ID, Application ID e Application Secret.
O trecho de código a seguir demonstra como usar a Biblioteca de Autenticação da Microsoft (MSAL) 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 do aplicativo, como uma chave de aplicativo emitida pelo Azure AD ou um certificado X.509v2 registrado no 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 êxito.
As etapas a seguir explicam como habilitar a criptografia de chaves gerenciadas pelo cliente usando o cliente 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 subscrição onde o cluster está registado. Substitua MyAzureSub pelo nome da assinatura do Azure que você deseja usar.
az account set --subscription MyAzureSub
Execute o seguinte comando para definir a nova chave com a identidade atribuída ao 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 ao 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 seguinte comando 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 subscrição onde o cluster está registado.
Set-AzContext -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Execute o seguinte comando para definir a nova chave usando uma identidade atribuída ao 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 ao 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 seguinte comando 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 seu 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 ao sistema para acessar o cofre de chaves, deixe userIdentity vazio. Caso contrário, configure o identificador do recurso da identidade.
Você pode implantar o modelo do Azure Resource Manager usando o portal do Azure ou 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 principal
Ao criar uma nova versão de uma chave, você precisará atualizar o cluster para usar a nova versão. Primeiro, ligue 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óximos passos