Azure Data Explorer は、保存されているストレージ アカウント内のすべてのデータを暗号化します。 規定では、データは Microsoft のマネージド キーで暗号化されます。 暗号化キーをさらに制御するために、データ暗号化に使用するカスタマー マネージド キーを指定できます。
顧客が管理するキーは Azure Key Vault に格納する必要があります。 独自のキーを作成してキー コンテナーに格納することも、Azure Key Vault API を使ってキーを生成することもできます。 Azure Data Explorer クラスターとキー コンテナーは同じリージョンに存在している必要があります。ただし、サブスクリプションは異なっていてもかまいません。 カスタマー マネージド キーの詳細については、カスタマー マネージド キーと Azure Key Vault に関する記事を参照してください。
この記事では、カスタマー マネージド キーを構成する方法について説明します。
以前の SDK バージョンに基づくコード サンプルについては、 アーカイブされた記事を参照してください。
Azure Data Explorer でカスタマー マネージド キーを構成するには、キー コンテナーの 2 つのプロパティを設定する必要があります。 [論理的な削除] と [Do Not Purge](消去しない) です。 これらのプロパティは、既定では有効になっていません。 これらのプロパティを有効にするには、新規または既存のキー コンテナーに対して、論理的な削除の有効化および消去保護の有効化を PowerShell または Azure CLI で実行します。 サイズが 2048 の RSA キーのみがサポートされています。 キーの詳細については、「Key Vault のキー」を参照してください。
注意
リーダー クラスターとフォロワー クラスターでカスタマー マネージド キーを使用する場合の制限事項については、「 制限事項」を参照してください。
マネージド ID をクラスターに割り当てる
お使いのクラスターでカスタマー マネージド キーを有効にするには、まず、そのクラスターにシステム割り当てまたはユーザー割り当てのマネージド ID を割り当てます。 このマネージド ID を使って、キー コンテナーへのアクセス許可をクラスターに付与します。 マネージド ID の構成については、マネージド ID に関するページを参照してください。
ユーザーが管理するキーによる暗号化を有効にする
次の手順では、Azure portalを使用してカスタマー マネージド キーの暗号化を有効にする方法について説明します。 既定では、Azure Data Explorer の暗号化では Microsoft のマネージド キーが使用されます。 カスタマー マネージド キーを使用するように Azure Data Explorer クラスターを構成し、そのクラスターに関連付けるキーを指定します。
Azure portal で、Azure Data Explorer クラスター リソースに移動します。
portal の左側のウィンドウで、 [設定]>[暗号化] を選択します。
[暗号化] ウィンドウの [顧客が管理するキー] 設定で、 [オン] を選択します。
[ キーの選択] を選択します。
[Azure Key Vault からのキーの選択] ウィンドウで、ドロップダウン リストから既存の Key Vault を選択します。
[新規作成] を選択して新しい Key Vault を作成する場合は、 [Key Vault の作成] 画面にルーティングされます。
[キー] を選択します。
バージョン:
- このキーで常に最新のキー バージョンが使用されるようにするには、 [Always use current key version](常に現在のキー バージョンを使用する) チェックボックスをオンにします。
- それ以外の場合は、 [バージョン] を選択します。
[選択] を選択します。
[ID の種類] で、 [システム割り当て済み] または [ユーザー割り当て済み] を選択します。
[ユーザー割り当て済み] を選択する場合は、ドロップダウンからユーザー割り当て ID を選択します。
キーが含まれている [暗号化] ウィンドウで、 [保存] を選択します。 CMK の作成に成功すると、 [通知] に成功メッセージが表示されます。
Azure Data Explorer クラスターに対してカスタマー マネージド キーを有効にするときにシステム割り当て ID を選択した場合、システム割り当て ID がクラスターに存在しない場合は ID を作成します。 また、選択した Key Vault の Azure Data Explorer クラスターに対して必要な get、wrapKey、unwrapKey の各アクセス許可を提供し、Key Vault のプロパティを取得します。
注意
カスタマー マネージド キーを作成した後に削除するには、 [オフ] を選択します。
次のセクションでは、Azure Data Explorer C# クライアントを使用してカスタマー マネージド キーの暗号化を構成する方法について説明します。
パッケージのインストール
認証
この記事の例を実行するには、リソースにアクセスできるMicrosoft Entraアプリケーションとサービス プリンシパルを作成します。 サブスクリプションのスコープでロールの割り当てを追加して、必要な Microsoft Entra Directory (tenant) ID、Application ID、および Application Secret を取得できます。
次のコード スニペットは、Microsoft Authentication Library (MSAL) を使用して、クラスターにアクセスするためのMicrosoft Entra アプリケーション トークンを取得する方法を示しています。 フローを成功させるには、アプリケーションを Microsoft Entra ID で登録する必要があり、アプリケーション認証の資格情報 (Microsoft Entra ID で発行されたアプリケーション キーや、Microsoft Entraに登録された X.509v2 証明書など) が必要です。
既定では、Azure Data Explorer の暗号化では Microsoft のマネージド キーが使用されます。 カスタマー マネージド キーを使用するように Azure Data Explorer クラスターを構成し、そのクラスターに関連付けるキーを指定します。
次のコードを使用してクラスターを更新します。
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";
var credentials = new ClientSecretCredential(tenantId, clientId, clientSecret);
var resourceManagementClient = new ArmClient(credentials, subscriptionId);
var resourceGroupName = "testrg";
var clusterName = "mykustocluster";
var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(resourceGroupName)).Value;
var clusters = resourceGroup.GetKustoClusters();
var cluster = (await clusters.GetAsync(clusterName)).Value;
var clusterPatch = new KustoClusterPatch(cluster.Data.Location)
{
KeyVaultProperties = new KustoKeyVaultProperties
{
KeyName = "<keyName>",
KeyVersion = "<keyVersion>", // Optional, leave as NULL for the latest version of the key.
KeyVaultUri = new Uri("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 cluster.UpdateAsync(WaitUntil.Completed, clusterPatch);
次のコマンドを実行して、クラスターが正常に更新されたかどうかを確認します。
var clusterData = (await resourceGroup.GetKustoClusterAsync(clusterName)).Value.Data;
結果に値が Succeeded の ProvisioningState が含まれている場合、クラスターは正常に更新されています。
次の手順では、Azure CLI クライアントを使用してカスタマー マネージド キーの暗号化を有効にする方法について説明します。 既定では、Azure Data Explorer の暗号化では Microsoft のマネージド キーが使用されます。 カスタマー マネージド キーを使用するように Azure Data Explorer クラスターを構成し、そのクラスターに関連付けるキーを指定します。
次のコマンドを実行して、Azure にサインインします。
az login
クラスターが登録されているサブスクリプションを設定します。
MyAzureSub は、使用する Azure サブスクリプションの名前に置き換えてください。
az account set --subscription MyAzureSub
次のコマンドを実行して、クラスターのシステム割り当て ID を使用して新しいキーを設定します。
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>"
または、ユーザー割り当て ID を使用して新しいキーを設定します。
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>"
次のコマンドを実行し、'keyVaultProperties' プロパティをチェックして、クラスターが正常に更新されたことを確認します。
az kusto cluster show --cluster-name "mytestcluster" --resource-group "mytestrg"
次の手順では、PowerShell を使用してカスタマー マネージド キーの暗号化を有効にする方法について説明します。 既定では、Azure Data Explorer の暗号化では Microsoft のマネージド キーが使用されます。 カスタマー マネージド キーを使用するように Azure Data Explorer クラスターを構成し、そのクラスターに関連付けるキーを指定します。
次のコマンドを実行して、Azure にサインインします。
Connect-AzAccount
クラスターが登録されているサブスクリプションを設定します。
Set-AzContext -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
次のコマンドを実行して、システム割り当て ID を使用して新しいキーを設定します。
Update-AzKustoCluster -ResourceGroupName "mytestrg" -Name "mytestcluster" -KeyVaultPropertyKeyName "<key-name>" -KeyVaultPropertyKeyVaultUri "<key-vault-uri>" -KeyVaultPropertyKeyVersion "<key-version>"
または、ユーザー割り当て ID を使用して新しいキーを設定します。
Update-AzKustoCluster -ResourceGroupName "mytestrg" -Name "mytestcluster" -KeyVaultPropertyKeyName "<key-name>" -KeyVaultPropertyKeyVaultUri "<key-vault-uri>" -KeyVaultPropertyKeyVersion "<key-version>" -KeyVaultPropertyUserIdentity "user-assigned-identity-resource-id"
次のコマンドを実行し、'KeyVaultProperty...' プロパティをチェックして、クラスターが正常に更新されたことを確認します。
Get-AzKustoCluster -Name "mytestcluster" -ResourceGroupName "mytestrg" | Format-List
次の手順では、Azure Resource Manager テンプレートを使用してカスタマー マネージド キーを構成する方法について説明します。 既定では、Azure Data Explorer の暗号化は Microsoft マネージド キーを使用します。 この手順では、カスタマー マネージド キーを使用するように Azure Data Explorer クラスターを構成し、そのクラスターに関連付けるキーを指定します。
システム割り当て ID を使用してキー コンテナーにアクセスする場合は、userIdentity を空のままにします。 それ以外の場合は、ID のリソース ID を設定します。
Azure portal または PowerShell を使用して、Azure Resource Manager テンプレートをデプロイできます。
{
"$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>"
}
}
}
]
}
キーのバージョンを更新する
キーの新しいバージョンを作成した場合、新しいバージョンを使用するようにクラスターを更新する必要があります。 まず Get-AzKeyVaultKey を呼び出し、キーの最新バージョンを取得します。 次に、「カスタマー マネージド キーを使用した暗号化を有効にする」に示すように、新しいバージョンのキーを使用するようにクラスター のキー コンテナーのプロパティを更新します。
関連コンテンツ