Share via


Azure マネージド ディスク用のカスタマー マネージド キーの構成

コンピューティング プレーン内の Azure Databricks コンピューティング ワークロードは、Azure マネージド ディスクに一時データを保存します。 既定では、マネージド ディスクの格納データは、Microsoft のマネージド キーでサーバー側暗号化を使用して保存時に暗号化されます。 この記事では、マネージド ディスクの暗号化に使用する Azure Databricks ワークスペース用の Azure Key Vault コンテナーからカスタマー マネージド キーを構成する方法について説明します。 Azure Key Vault HSM からのキーの使用手順については、「Azure マネージド ディスク用の HSM カスタマー マネージド キーの構成」を参照してください。

重要

  • マネージド ディスク ストレージのカスタマー マネージド キーはデータ ディスクに適用されますが、オペレーティング システム (OS) ディスクには適用 "されません"。
  • マネージド ディスク ストレージのカスタマー マネージド キーは、サーバーレス SQL ウェアハウスモデルの提供などのサーバーレス コンピューティング リソースには適用 "されません"。 サーバーレス コンピューティング リソースに使用されるディスクは有効期間が短く、サーバーレス ワークロードのライフサイクルに関連付けられています。 コンピューティング リソースが停止またはスケールダウンされると、VM とそのストレージは破棄されます。

必要条件

  • Azure Databricks ワークスペースは Premium プランである必要があります。

  • Azure Key Vault と Azure Databricks ワークスペースは、同じリージョンの同じ Microsoft Entra ID (旧称 Azure Active Directory) テナントにある必要があります。 サブスクリプションは異なっていてもかまいません。

  • 自動ローテーションを有効にする場合は、ソフトウェア キーと、2048 ビット、3072 ビット、4096 ビットのサイズの HSM RSA のみがサポートされます。

  • FedRAMP 準拠のワークスペースでは、この機能はサポートされていません。 詳細については、Azure Databricks アカウント チームにお問い合わせください。

  • これらのタスクに Azure CLI を使用するには、Azure CLI ツールをインストールし、Databricks 拡張機能をインストールします。

    az extension add --name databricks
    
  • これらのタスクに Powershell を使用するには、Azure PowerShellをインストールし、Databricks Powershell モジュールをインストールします。 また、ログインが必要です。

    Connect-AzAccount
    

    ユーザーとして Azure アカウントにログインするには、「Azure Databricks ユーザー アカウントで PowerShell にログインする」を参照してください。 Azure アカウントにサービス プリンシパルとしてログインするには、「Microsoft Entra ID サービス プリンシパルを使用した PowerShell ログイン」を参照してください。

手順 1: キー コンテナーを作成する

キー コンテナーは、Azure portal、Azure CLI、Powershell など、さまざまな方法で作成でき、必要に応じて ARM テンプレートを使用できます。 以下のセクションでは、Azure CLI と Powershell を使用する手順について説明します。 その他の方法については、Microsoft のドキュメントを参照してください。

Azure CLI の使用

  1. Key Vault を作成する:

    az keyvault create --name <keyVaultName> --resource-group <resourceGroupName> --location <location> --sku <sku> --enable-purge-protection
    
  2. コンテナー URI を取得します。

    az keyvault show --name <key-vault-name>
    

    応答から vaultUri の値をコピーします。

Powershell の使用

新しいコンテナーを作成します。

$keyVault = New-AzKeyVault -Name <key-vault-name> -ResourceGroupName <resource-group-name> -Location <location> -Sku <sku> -EnablePurgeProtection

既存のキー コンテナーを取得します。

$keyVault = Get-AzKeyVault -VaultName <key-vault-name>

手順 2: キーを準備する

Azure portal、Azure CLI、Powershell を使用し、さらに必要に応じて ARM テンプレートを使用することで、キーを作成したり、Azure Key Vault に格納されている既存のキーを取得したりできます。 このセクションでは、Azure CLI と Powershell での手順について説明します。 その他の方法については、Azure キーのドキュメントを参照してください。

Azure CLI の使用

キーを作成することも、既存のキーを取得することもできます。

キーを作成します。

  1. 次のコマンドを実行します。

    az keyvault key create \
    --name <key-name> \
    --vault-name <key-vault-name> \
    --protection software
    
  2. 次の出力値を書き留めておきます。

    • Key Vault 名: Key Vault の名前
    • キー名: キーの名前
    • キー バージョン: キーのバージョン
    • Key Vault リソース グループ: Key Vault のリソース グループ
  3. キー情報を取得します。

    az keyvault key show --vault-name <keyVaultName> --name <keyName>
    

    kid フィールドの値 (キー ID) をコピーします。

    通常、完全なキー ID の形式は https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version> です。 パブリック クラウド以外の Azure Key Vault キーの形式は異なります。

既存のキーを取得します。

  1. 次のコマンドを実行します。

    az keyvault key show --name <key-name> --vault-name <key-vault-name>
    
  2. 既存のキーに関する次の詳細を書き留めておきます。

    • キー コンテナー名: ご使用のキー コンテナーの名前。
    • キー名: ご使用のキーの名前。
    • キー バージョン: ご使用のキーのバージョン。
    • キー コンテナー リソース グループ: ご使用のキー コンテナーのリソース グループ。
  3. キー情報を取得します。

    az keyvault key show --vault-name <keyVaultName> --name <keyName>
    

    kid フィールドの値 (キー ID) をコピーします。

    通常、完全なキー ID の形式は https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version> です。 パブリック クラウド以外の Azure Key Vault キーの形式は異なります。

  4. もう一度 az keyvault key show --name <key name> を実行して、次に進む前に既存のキーが有効になっていることを確認してください。 出力には、"enabled": true が表示されます。

Powershell の使用

  1. キーを作成する予定の場合は、キーを作成した方法と時期に応じて、アクセス ポリシーの設定が必要になる場合があります。 たとえば、PowerShell を使用して最近キー コンテナーを作成した場合、新しいキー コンテナーにキーの作成に必要なアクセス ポリシーがない可能性があります。 次の例では、EmailAddress パラメーターを使用してポリシーを設定します。 関連する詳細については、Set-AzKeyVaultAccessPolicy に関する Microsoft の記事を参照してください。

    新しいキー コンテナーにアクセス ポリシーを設定します。

    Set-AzKeyVaultAccessPolicy \
    -VaultName $keyVault.VaultName \
    -PermissionsToKeys all \
    -EmailAddress <email-address>
    
  2. キーを作成することも、既存のキーを取得することもできます。

    • キーを作成します。

      $key = Add-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name> \
      -Destination 'Software'
      
    • 既存のキーを取得します。

      $key = Get-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name>
      

手順 3: すべてのコンピューティング リソースを停止する (ワークスペースを更新して最初にキーを追加する場合)

最初に既存のワークスペースにマネージド ディスク用のカスタマー マネージド キーを追加する場合は、更新前にすべてのコンピューティング リソース (クラスター、プール、クラシックまたはプロ SQL ウェアハウス) を停止します。

更新が完了したら、停止したコンピューティング リソースを開始できます。 マネージド ディスク用のカスタマー マネージド キーがワークスペースに既にある場合は、コンピューティング リソースを終了せずにキーを "ローテーション" できます。

手順 4: ワークスペースを作成または更新する

マネージド ディスク用のカスタマー マネージド キーを使用してワークスペースを作成または更新するには、次の展開方法のいずれかを選択します。

Azure portal を使用する (テンプレートなし)

このセクションでは、Azure portal を使用して、テンプレートを使用せずにマネージド ディスク用のカスタマー マネージド キーでワークスペースを作成または更新する方法について説明します。

  1. ワークスペースを作成または更新します。

    キーを使用して新しいワークスペースを作成します。

    1. Azure Portal のホームページに移動し、ページの左上隅にある [リソースの作成] をクリックします。
    2. 検索バーに「Azure Databricks」と入力し、[Azure Databricks] をクリックします。
    3. Azure Databricks ウィジェット内から [作成] を選択します。
    4. [基本] タブと [ネットワーク] タブのフォーム フィールドに値を入力します。
    5. [暗号化] タブの [マネージド ディスク] セクションで [独自のキーを使用する] チェック ボックスをオンにします。

    最初に、既存のワークスペースにキーを追加します。

    1. コンピューティング リソース (クラスター、プール) を終了します。
    2. Azure Databricks の Azure portal のホーム ページに移動します。
    3. 既存の Azure Databricks ワークスペースに移動します。
    4. 左側のパネルから [暗号化] タブを開きます。
    5. [カスタマー マネージド キー] セクションで [マネージド ディスク] を有効にします。
  2. 暗号化フィールドを設定します。

    Show fields in the Managed Disks section of the Azure Databricks blade

    • [キー識別子] フィールドに、Azure Key Vault キーのキー識別子を貼り付けます。
    • [サブスクリプション] ドロップダウンに、Azure Key Vault キーのサブスクリプション名を入力します。
    • キーの自動ローテーションを有効にするには、[キーの自動ローテーションを有効にする] を有効にします。
  3. 残りのタブに入力し、[確認および作成] (新しいワークスペースの場合) または [保存] (ワークスペースを更新する場合) をクリックします。

  4. ワークスペースが展開されたら、新しい Azure Databricks ワークスペースに移動します。

  5. Azure Databricks ワークスペースの [概要] タブで、[管理対象リソース グループ] をクリックします。

  6. 管理対象リソース グループの [概要] タブで、このリソース グループに作成された [ディスク暗号化セット] という種類のオブジェクトを探します。 ディスク暗号化セットの名前をコピーします。

  7. Azure portal で、この機能に使用しているキーの構成に使用された Azure Key Vault に移動します。

  8. 左側のパネルから [アクセス ポリシー] タブを開きます。 タブが開いたら、ページの上部にある [作成] をクリックします。

  9. [アクセス許可] タブの [キーのアクセス許可] セクションで、[取得][キーの折り返しを解除][キーを折り返す] を有効にします。

  10. [次へ] をクリックします。

  11. [プリンシパル] タブの検索バーに、Azure Databricks ワークスペースの管理対象リソース グループ内にあるディスク暗号化セット名を入力します。 結果を選択し、[次へ] をクリックします。

    Enter the name of disk encryption set and select the result

  12. [確認と作成] タブをクリックし、[作成] をクリックします。

Azure CLI を使用する (テンプレートなし)

新規および更新されたワークスペースのどちらの場合も、以下のパラメーターをコマンドに追加します。

  • disk-key-name: キーの名前
  • disk-key-vault: コンテナーの名前
  • disk-key-version: キー バージョン
  • disk-key-auto-rotation: キーの自動ローテーションの有効化 (true または false)。 このフィールドはオプションです。 既定では、 falseです。

次のコマンドでは、<key-vault-uri> の代わりに、前の手順の応答から取得したコンテナー URI 値を使用します。 さらに、キー名とキー バージョンの値は、前の手順の応答の kid 値で確認できます。

  1. ワークスペースを作成または更新します。

    • これらのマネージド ディスク パラメーターを使用してワークスペースを作成する例:

      az databricks workspace create --name <workspace-name> \
      --resource-group <resource-group-name> \
      --location <location> \
      --sku premium --disk-key-name <key-name> \
      --disk-key-vault <key-vault-uri> \
      --disk-key-version <key-version> \
      --disk-key-auto-rotation <true-or-false>
      
    • これらのマネージド ディスク パラメーターを使用してワークスペースを更新する例:

      az databricks workspace update \
      --name <workspace-name> \
      --resource-group <resource-group-name> \
      --disk-key-name <key-name> \
      --disk-key-vault <key-vault-uri> \
      --disk-key-version <key-version> \
      --disk-key-auto-rotation <true-or-false>
      

    これらのどちらのコマンドの出力にも、managedDiskIdentity オブジェクトがあります。 このオブジェクト内の principalId プロパティの値を保存します。 これは、後の手順でプリンシパル ID として使用されます。

  2. キーのアクセス許可を含むアクセス ポリシーをキー コンテナーに追加します。 前の手順で取得したコンテナー名とプリンシパル ID を使用します。

    az keyvault set-policy \
    --name <key-vault-name> \
    --object-id <principal-id> \
    --key-permissions get wrapKey unwrapKey
    

Powershell を使用する (テンプレートなし)

新規および更新されたワークスペースのどちらの場合も、以下のパラメーターをコマンドに追加します。

  • location: ワークスペースの場所
  • ManagedDiskKeyVaultPropertiesKeyName: キー名
  • ManagedDiskKeyVaultPropertiesKeyVaultUri: キー コンテナー URI
  • ManagedDiskKeyVaultPropertiesKeyVersion: キー バージョン
  • ManagedDiskRotationToLatestKeyVersionEnabled: キーの自動ローテーションの有効化 (true または false)。 このフィールドはオプションです。 既定値は false です。
  1. ワークスペースを作成または更新します。

    • マネージド ディスク パラメーターを使用してワークスペースを作成する例:

      $workspace = New-AzDatabricksWorkspace -Name <workspace-name> \
      -ResourceGroupName <resource-group-name> \
      -location $keyVault.Location \
      -Sku premium \
      -ManagedDiskKeyVaultPropertiesKeyName $key.Name \
      -ManagedDiskKeyVaultPropertiesKeyVaultUri $keyVault.VaultUri \
      -ManagedDiskKeyVaultPropertiesKeyVersion $key.Version -ManagedDiskRotationToLatestKeyVersionEnabled
      
    • マネージド ディスク パラメーターを使用してワークスペースを更新する例:

      $workspace = Update-AzDatabricksworkspace -Name <workspace-name> \
      -ResourceGroupName <resource-group-name> \
      -ManagedDiskKeyVaultPropertiesKeyName $key.Name \
      -ManagedDiskKeyVaultPropertiesKeyVaultUri $keyVault.VaultUri \
      -ManagedDiskKeyVaultPropertiesKeyVersion $key.Version -ManagedDiskRotationToLatestKeyVersionEnabled
      
  2. キーのアクセス許可を含むアクセス ポリシーをキー コンテナーに追加します。

    Set-AzKeyVaultAccessPolicy -VaultName $keyVault.VaultName \
    -ObjectId $workspace.ManagedDiskIdentityPrincipalId \
    -PermissionsToKeys wrapkey,unwrapkey,get
    

ARM テンプレート を使用する (Azure portal または CLI)

Azure のドキュメントで Azure クイック スタート テンプレートを探索できます。 ARM テンプレートのデプロイオプションの一覧については、「ARM テンプレートのドキュメント」を参照してください。

ワークスペースを作成すると、ワークスペースの管理対象リソース グループ内にもディスク暗号化セットのリソースが作成されます。 これには、Key Vault へのアクセスに使用されるシステム割り当てマネージド ID があります。 Azure Databricks コンピューティングでこのキーを使用してデータを暗号化する前に、ディスク暗号化セットのプリンシパル ID を取得する必要があります。その後に Key Vault 用に GETWRAPUNWRAP キー アクセス許可を ID に付与します。

Databricks では、同じテンプレート展開で、ワークスペースを作成または更新し、Key Vault のアクセス許可を付与することをお勧めしています。 Key Vault のアクセス許可を付与する前に、ワークスペースを作成または更新する必要がありますが、1 つ例外があります。 既存のマネージド ディスクのカスタマー マネージド キー ワークスペースを更新して新しい Key Vault で新しいキーを使用する場合は、既存のディスク暗号化セットにアクセス許可を付与して新しい Key Vault にアクセスしてから、新しいキー構成でワークスペースを更新する必要があります。

このセクションのテンプレート例では、次の処理の両方を実行します。

  • ワークスペースが作成または更新され、マネージド ディスクのカスタマー マネージド キー設定が追加されます
  • ディスク暗号化セットに Key Vault へのアクセスを許可します

次の ARM テンプレートの例を使用すると、2 つの処理を行うことができます。

  • マネージド ディスクのカスタマー マネージド キーを使用してワークスペースを作成または更新します。
  • キー アクセス ポリシーを作成します。

ARM テンプレートを既に使用している場合は、サンプル テンプレートのパラメーター、リソース、出力を既存のテンプレートにマージできます。

{
   "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   "parameters": {
       "workspaceName": {
           "type": "string",
           "metadata": {
               "description": "The name of the Azure Databricks workspace to create"
           }
       },
       "pricingTier": {
           "type": "string",
           "defaultValue": "premium",
           "allowedValues": [
               "premium"
           ],
           "metadata": {
               "description": "The pricing tier of workspace"
           }
       },
       "apiVersion": {
           "type": "string",
           "defaultValue": "2023-02-01",
           "allowedValues": [
               "2023-02-01",
               "2022-04-01-preview"
           ],
           "metadata": {
               "description": "The API version to use to create the workspace resources"
           }
       },
       "keyVaultName": {
           "type": "string",
           "metadata": {
               "description": "The Key Vault name used for CMK"
           }
       },
       "keyName": {
           "type": "string",
           "metadata": {
               "description": "The key name used for CMK"
           }
       },
       "keyVersion": {
           "type": "string",
           "metadata": {
               "description": "The key version used for CMK"
           }
       },
       "keyVaultResourceGroupName": {
           "type": "string",
           "metadata": {
               "description": "The resource group name of the Key Vault used for CMK"
           }
       },
       "enableAutoRotation": {
           "type": "bool",
           "defaultValue": false,
           "allowedValues": [
               true,
               false
           ],
           "metadata": {
               "description": "Whether managed disk picks up new key versions automatically"
           }
       }
   },
   "variables": {
       "managedResourceGroupName": "[concat('databricks-rg-', parameters('workspaceName'), '-', uniqueString(parameters('workspaceName'), resourceGroup().id))]"
   },
   "resources": [
       {
           "type": "Microsoft.Databricks/workspaces",
           "name": "[parameters('workspaceName')]",
           "location": "[resourceGroup().location]",
           "apiVersion": "[parameters('apiVersion')]",
           "sku": {
               "name": "[parameters('pricingTier')]"
           },
           "properties": {
               "managedResourceGroupId": "[concat(subscription().id, '/resourceGroups/', variables('managedResourceGroupName'))]",
               "encryption": {
                   "entities": {
                       "managedDisk": {
                           "keySource": "Microsoft.Keyvault",
                           "keyVaultProperties": {
                               "keyVaultUri": "[concat('https://', parameters('keyVaultName'), environment().suffixes.keyvaultDns)]",
                               "keyName": "[parameters('keyName')]",
                               "keyVersion": "[parameters('keyVersion')]"
                           },
                           "rotationToLatestKeyVersionEnabled": "[parameters('enableAutoRotation')]"
                       }
                   }
               }
           }
       },
       {
           "type": "Microsoft.Resources/deployments",
           "apiVersion": "2020-06-01",
           "name": "addAccessPolicy",
           "resourceGroup": "[parameters('keyVaultResourceGroupName')]",
           "dependsOn": [
               "[resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName'))]"
           ],
           "properties": {
               "mode": "Incremental",
               "template": {
                   "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
                   "contentVersion": "0.9.0.0",
                   "resources": [
                       {
                           "type": "Microsoft.KeyVault/vaults/accessPolicies",
                           "apiVersion": "2019-09-01",
                           "name": "[concat(parameters('keyVaultName'), '/add')]",
                           "properties": {
                               "accessPolicies": [
                                   {
                                       "objectId": "[reference(resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName')), '2023-02-01').managedDiskIdentity.principalId]",
                                       "tenantId": "[reference(resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName')), '2023-02-01').managedDiskIdentity.tenantId]",
                                       "permissions": {
                                           "keys": [
                                               "get",
                                               "wrapKey",
                                               "unwrapKey"
                                           ]
                                       }
                                   }
                               ]
                           }
                       }
                   ]
               }
           }
       }
   ],
   "outputs": {
       "workspace": {
           "type": "object",
           "value": "[reference(resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName')))]"
       }
   }
}

テンプレートは、任意のツール (Azure portal や CLI などのツール) で使用します。 詳細については、次のテンプレートの展開方法に関するページを参照してください。

Azure portal を使用して ARM テンプレートを適用する

Azure portal で ARM テンプレートを使用してワークスペースを作成または更新するには、次の操作を行います。

  1. 最初に既存のワークスペースにキーを追加する場合にのみ、コンピューティング リソース (クラスター、プール) を終了します。 この手順に失敗すると、更新中にリソースが自動的に終了するため、一部の種類のワークロードで問題が発生する可能性があります。 キーを追加する前にすべてのコンピューティング リソースが終了するようにダウンタイムを計画します。 更新が完了したら、停止したコンピューティング リソースを開始します。 マネージド ディスク用のカスタマー マネージド キーがワークスペースに既にある場合は、コンピューティング リソースを終了せずにキーを "ローテーション" できます。

  2. Azure Portal にサインインします。

  3. [リソースを作成] をクリックし、[テンプレートの展開 (カスタム テンプレートを使用して展開)] をクリックします。

  4. カスタム展開ページで、[エディターで独自のテンプレートを作成] をクリックします。

  5. サンプル テンプレートの内容をエディターに貼り付けます。

    Edit deployment page of the Azure custom deployment portal

  6. [保存] をクリックします。

  7. パラメーター値を入力します。

    既存のワークスペースを更新するには、そのワークスペースの作成に使用したのと同じパラメーターを使用します。 初めてカスタマー マネージド キーを追加する場合は、上記のテンプレートに示すように、resources.properties.encryption.entities.managedDisk にキーに関連するパラメーターを追加します。 キーをローテーションするには、キーに関連するパラメーターの一部またはすべてを変更します。

    重要

    ワークスペースを更新する場合、テンプレート内のリソース グループ名とワークスペース名は、既存のワークスペースのリソース グループ名とワークスペース名と同じである必要があります。

    Project details page of the Azure custom deployment portal

  8. [Review + Create](レビュー + 作成) をクリックします。

  9. 検証の問題を解決し、[作成] をクリックします。

重要

キーをローテーションする場合は、ワークスペースの更新が完了するまで、古いキーを削除しないでください。

Azure CLI を使用して ARM テンプレートを適用する

このセクションでは、Azure CLI で ARM テンプレートを使用し、キーでワークスペースを作成または更新する方法について説明します。

  1. 最初に既存のワークスペースにキーを追加する場合にのみ、コンピューティング リソース (クラスター、プール) を終了します。 この手順に失敗すると、更新中にリソースが自動的に終了するため、一部の種類のワークロードで問題が発生する可能性があります。 この更新のスケジュール設定とダウンタイムの計画を検討することをお勧めします。 この手順は、単にキーをローテーションする場合は必要ありません。

  2. resources.properties.encryption.entities.managedDisk に関するセクションと、それに関連するパラメーター keyvaultNamekeyNamekeyVersionkeyVaultResourceGroupName がテンプレートに含まれているかどうかを確認します。 存在しない場合は、このセクションの前半でテンプレートの例を確認し、そのセクションとパラメーターをテンプレートにマージしてください。

  3. az deployment group create コマンドを実行します。 リソース グループ名とワークスペース名が既存のワークスペースのリソース グループ名とワークスペース名と同じである場合は、このコマンドで新しいワークスペースが作成されるのではなく、既存のワークスペースが更新されます。 既存の展開を更新する場合は、以前に使用したときと同じリソース グループとワークスペース名を使用してください。

    az deployment group create --resource-group <existing-resource-group-name>  \
                               --template-file <file-name>.json \
                               --parameters workspaceName=<workspace-name> \
                                            keyvaultName=<key-vault-name> \
                                            keyName=<key-name> keyVersion=<key-version> \
                                            keyVaultResourceGroupName=<key-vault-resource-group>
    

    重要

    キーをローテーションする場合は、ワークスペースの更新が完了した後にのみ古いキーを削除できます。

手順 5: コンピューティング リソースでキーが使用されていることを確認する (オプション)

ワークスペースでマネージド ディスクのカスタマー マネージド キー機能が有効になっていることを確認するには、次の手順に従います。

  1. 次のいずれかの操作を行って、Azure Databricks ワークスペースの詳細を取得します。

    • Azure Portal

      1. Azure portal で、[ワークスペース] をクリックし、ワークスペースの名前をクリックします。
      2. ワークスペース ページで、[JSON ビュー] をクリックします。
      3. 2022-04-01-preview API バージョン以降の API バージョンをクリックします。
    • Azure CLI

      次のコマンドを実行します。

      az databricks workspace show --resource-group <resource group name> --name <workspace name>
      

      マネージド ディスク暗号化パラメーターは properties の下にあります。 次に例を示します。

      "properties": {
           "encryption": {
               "entities": {
                   "managedDisk": {
                     "keySource": "Microsoft.Keyvault",
                     "keyVaultProperties": {
                         "keyVaultUri": "<key-vault-uri>",
                         "keyName": "<key-name>",
                         "keyVersion": "<key-version>"
                     },
                     "rotationToLatestKeyVersionEnabled": "<rotation-enabled>"
                 }
            }
        }
      
    • Powershell

      Get-AzDatabricksWorkspace -Name <workspace-name> -ResourceGroupName <resource-group-name> |
        Select-Object -Property ManagedDiskKeySource,
         ManagedDiskKeyVaultPropertiesKeyVaultUri,
         ManagedServicesKeyVaultPropertiesKeyName,
         ManagedServicesKeyVaultPropertiesKeyVersion,
         ManagedDiskRotationToLatestKeyVersionEnabled
      

      出力で返されるプロパティの値を確認します。

      ManagedDiskKeySource                           : Microsoft.Keyvault
      ManagedDiskKeyVaultPropertiesKeyVaultUri       : <key-vault-uri>
      ManagedServicesKeyVaultPropertiesKeyName       : <key-name>
      ManagedServicesKeyVaultPropertiesKeyVersion    : <key-version>
      ManagedDiskRotationToLatestKeyVersionEnabled   : <rotation-enabled>
      
  2. テストに使用するワークスペース用のコンピューティング リソースを作成します。

  3. Azure portal で、[ワークスペース] をクリックし、ワークスペースの名前をクリックします。

  4. ワークスペース ページで、ワークスペースが存在するマネージド リソース グループの名前をクリックします。

  5. リソース グループ ページで、[リソース] の下にある仮想マシンの名前をクリックします。

  6. 仮想マシン ページの左側で、[設定] の下にある [ディスク] をクリックします。

    ディスク ページの [データ ディスク] で、ディスクの [暗号化] フィールドの値が SSE with CMK であることを確認します。

手順 6: 以前に終了したコンピューティング リソースを開始する

この手順は、キーを初めて追加するためにワークスペースを更新した場合にのみ必要です。その場合は、前の手順でユーザーによって稼働中のコンピューティング リソースが終了されています。 新しいワークスペースを作成した場合、またはキーをローテーションするだけの場合、コンピューティング リソースは前の手順で終了されていません。この場合は、この手順をスキップできます。

  1. ワークスペースの更新が完了していることを確認してください。 テンプレートに対する変更がキーのみである場合、通常、これは 5 分以内に完了します。それ以外の場合は、さらに時間がかかる可能性があります。
  2. 以前に終了したコンピューティング リソースをすべて手動で開始します。

通常、コンピューティング リソースの開始に失敗する原因は、Key Vault にアクセスするためのアクセス許可をディスク暗号化セットに付与する必要があるためです。

後でキーをロテーションする

既にキーが含まれている既存のワークスペースには、次の 2 種類のキーローテーションがあります。

  • 自動ローテーション: ワークスペースの rotationToLatestKeyVersionEnabledtrue の場合、ディスク暗号化セットはキー バージョンの変更を検出し、最新のキー バージョンを指します。
  • 手動ローテーション: 既存のマネージド ディスクのカスタマー マネージド キー ワークスペースを新しいキーで更新できます。 最初に既存のワークスペースにキーを追加した場合と同様に、上記の手順に従います。重要な違いは、実行中のコンピューティング リソースを終了する必要がないという点です。

どちらのローテーションの種類でも、Azure Virtual Machine ストレージ サービスによって、新しいキーが自動的に取得され、それを使用してデータ暗号化キーが暗号化されます。 Azure Databricks コンピューティング リソースは影響を受けません。 詳細については、Azure ドキュメントのカスタマー マネージド キーに関するページを参照してください。

キーをローテーションする前に、コンピューティング リソースを終了する必要はありません。

トラブルシューティング

クラスターが KeyVaultAccessForbidden で失敗する

この問題は、クラスターが次のエラーで開始できません。

Cloud Provider Launch Failure: KeyVaultAccessForbidden

ワークスペースのマネージド リソース グループに作成されたディスク暗号化セットに、キー コンテナーにアクセスするためのグループ権限を付与します。 必要なアクセス許可: GETWRAPKEYUNWRAPKEY

手順 4:ワークスペースを作成または更新する」で、ご使用の展開の種類に関するサブセクションを読み直し、特定の権限を含むキー コンテナーのアクセス ポリシーの更新に特に注意してください。

キー パラメーターがない

この問題は、マネージド ディスクのカスタマー マネージド キー パラメーターがありません。

ARM テンプレートで、Microsoft.Databricks/workspaces リソースに対する適切な API バージョンが使用されていることを確認します。 マネージド ディスクのカスタマー マネージド キー機能は、2022-04-01-preview 以降の API バージョンでのみ使用できます。 他の API バージョンを使用する場合、ワークスペースは作成または更新されますが、マネージド ディスク パラメーターは無視されます。

ワークスペースの更新が ApplicationUpdateFail で失敗する

この問題は、マネージド ディスク対応ワークスペースに対するワークスペース更新またはパッチ適用操作が次のエラーが発生します。

Failed to update application: `<workspace name>`, because patch resource group failure. (Code: ApplicationUpdateFail)

ディスク暗号化セットにキー コンテナーへのアクセス権を付与してから、タグの追加などのワークスペース更新操作を実行します。

アクセス ポリシーがない

この問題は次のエラーです。

ERROR CODE: BadRequest MESSAGE: Invalid value found at accessPolicies[14].ObjectId: <objectId>

キー コンテナーで上記のオブジェクト ID を持つアクセス ポリシーが無効です。 新しいアクセス ポリシーをキー コンテナーに追加するために、これを削除する必要があります。

紛失したキーが復元できない

紛失したキーは回復できません。 キーを紛失または取り消して回復できない場合、Azure Databricks コンピューティング リソースは動作しなくなります。 ワークスペースの他の機能には影響しません。

リソース