セキュリティで保護されたクラスター接続

セキュリティで保護されたクラスター接続が有効になっている場合、お客様の仮想ネットワークには開いているポートがなく、クラシック コンピューティング プレーンのコンピューティング リソースにはパブリック IP アドレスがありません。 セキュリティで保護されたクラスター接続は、パブリック IP なし (NPIP) とも呼ばれています。

  • ネットワーク レベルでは、各クラスターは、クラスターの作成時にコントロール プレーンのセキュリティで保護されたクラスター接続リレーへの接続を開始します。 クラスターは、ポート 443 (HTTPS) を使用してこの接続を確立し、Web アプリケーションと REST API で使用される IP アドレスとは異なる IP アドレスを使用します。
  • コントロール プレーンが新しい Databricks Runtime ジョブを論理的に開始するか、他のクラスター管理タスクを実行すると、これらの要求は、このトンネルを介してクラスターに送信されます。
  • コンピューティング プレーン (VNet) には開いているポートがなく、クラシック コンピューティング プレーンのリソースにはパブリック IP アドレスがありません。

メリット:

  • ネットワーク管理が簡単で、セキュリティ グループ上のポート構成や、ネットワーク ピアリングの構成は必要はありません。
  • セキュリティが強化され、ネットワーク管理が簡単になるため、情報セキュリティ チームは、PaaS プロバイダーとしての Databricks の承認を迅速化できます。

Note

クラシック コンピューティング プレーン VNet と Azure Databricks コントロール プレーンの間の Azure Databricks ネットワーク トラフィックはすべて、パブリック インターネットではなく、"'Microsoft ネットワーク バックボーン" を介して送信されます。 これは、セキュリティで保護されたクラスター接続が無効になっている場合でも当てはまります。

サーバーレス コンピューティング プレーンでは、クラシック コンピューティング プレーンに対してセキュリティで保護されたクラスター接続リレーは使われませんが、サーバーレス SQL ウェアハウスにはパブリック IP アドレスがありません

セキュリティで保護されたクラスター接続

セキュリティで保護されたクラスター接続を使用する

新しい Azure Databricks ワークスペースでセキュリティで保護されたクラスターを使用するには、次のオプションのいずれかを使用します。

  • Azure portal: ワークスペースをプロビジョニングするときに、[ネットワーク] タブに移動し、[Secure Cluster Connectivity による Azure Databricks ワークスペースのデプロイ (パブリック IP なし)] オプションを [はい] に設定します。
  • ARM テンプレート: 新しいワークスペースを作成する Microsoft.Databricks/workspaces リソースの場合は、enableNoPublicIp Boolean パラメーターを true に設定します。

重要

どちらの場合も、セキュリティで保護されたクラスター接続を使用してワークスペースを起動するために使用される Azure サブスクリプションに、Azure リソース プロバイダー Microsoft.ManagedIdentity を登録する必要があります。 この操作は、各サブスクリプションで 1 回だけ行います。 詳細については、「Azure リソース プロバイダーと種類」を参照してください。

VNet インジェクションを既に使用している既存のワークスペースに、セキュリティで保護されたクラスター接続を追加できます。 「セキュリティで保護されたクラスター接続を既存のワークスペースに追加する」を参照してください。

ARM テンプレートを使用している場合は、Azure Databricks でワークスペースの既定の (マネージド) 仮想ネットワークを作成するか、独自の仮想ネットワークを使用するか (VNet インジェクションとも呼ばれる) に基づいて、次のいずれかのテンプレートにパラメーターを追加します。 VNet インジェクションは、新しい Azure Databricks クラスターをホストするために独自の VNet を提供できるオプション機能です。

ワークスペース サブネットからのエグレス

セキュリティで保護されたクラスター接続を有効にした場合、クラスター ノードにはパブリック IP アドレスが設定されていないため、両方のワークスペース サブネットがプライベート サブネットになります。

ネットワーク エグレスの実装の詳細は、既定の (マネージド) VNet を使用するか、オプションの VNet インジェクション機能を使用してワークスペースをデプロイする独自の VNet を提供するかによって異なります。 詳細については、以下のセクションを参照してください。

重要

セキュリティで保護されたクラスター接続を使用する場合、エグレス トラフィックの増加により、追加コストが発生する可能性があります。 コスト最適化されたソリューションを必要とする小規模な組織では、ワークスペースをデプロイするときに、セキュリティで保護されたクラスター接続を無効にすることもできます。 ただし、最も安全なデプロイのためには、Microsoft と Databricks では、セキュリティで保護されたクラスター接続を有効にすることを強く推奨しています。

既定の (マネージド) VNet を使用したエグレス

Azure Databricks によって作成される既定の VNet でセキュリティで保護されたクラスター接続を使用すると、Azure Databricks によって、ワークスペースのサブネットから Azure バックボーンとパブリック ネットワークへの送信トラフィック用の NAT ゲートウェイが自動的に作成されます。 NAT ゲートウェイは、Azure Databricks によって管理されている管理対象リソース グループ内に作成されます。 このリソース グループまたはリソース グループ内でプロビジョニングされたリソースは変更できません。

自動的に作成された NAT ゲートウェイには追加コストが発生します。

VNet インジェクションを使用したエグレス

VNet インジェクションを使用するワークスペースでセキュリティで保護されたクラスター接続を有効にした場合、Databricks では、ワークスペースに安定したエグレス パブリック IP を設定することをお勧めします。

安定したエグレス パブリック IP アドレスは、外部許可リストに追加できるため便利です。 たとえば、安定した発信 IP アドレスを使用して Azure Databricks から Salesforce に接続する場合などです。

警告

Microsoft は、2025 年 9 月 30 日に Azure における仮想マシンの既定の送信アクセス接続が廃止されることを発表しました。 このお知らせを参照してください。 つまり、安定したエグレス パブリック IP ではなく、既定の送信アクセスを使用する既存の Azure Databricks ワークスペースは、その日付以降、機能しない可能性があります。 Databricks では、その日付より前にワークスペースの明示的な送信方法を追加することをお勧めします。

次のいずれかのオプションを選択します。

  • カスタマイズが必要なデプロイの場合は、Azure NAT ゲートウェイを選択します。 ワークスペースのサブネットの両方でゲートウェイを構成して、Azure バックボーンとパブリック ネットワークへのすべての送信トラフィックがそれを通過するようにします。 クラスターは安定したエグレス パブリック IP を持ち、カスタム エグレスのニーズに合った構成を変更できます。 このソリューションは、Azure テンプレートを使用するか、Azure portal から使用して実装できます。
  • ルーティング要件が複雑なデプロイや、Azure Firewall などのエグレス ファイアウォールや他のカスタム ネットワーク アーキテクチャで VNet インジェクションを使用するデプロイの場合は、ユーザー定義ルート (UDR) と呼ばれるカスタム ルートを使用できます。 UDR では、ネットワーク トラフィックがワークスペースに対して、必要なエンドポイントに直接またはエグレス ファイアウォールを介してルーティングされるようにします。 このようなソリューションを使用する場合は、Azure Databricks のセキュリティで保護されたクラスター接続リレーと、Azure Databricks のユーザー定義ルート設定に記載されているその他の必要なエンドポイントに対して、直接ルートまたは許可されたファイアウォール規則を追加する必要があります。

警告

セキュリティで保護されたクラスター接続が有効になっているワークスペースでエグレス ロード バランサーを使用しないでください。 運用システムでエグレス ロード バランサーを使用すると、ポートを使い果たすリスクにつながるおそれがあります。

セキュリティで保護されたクラスター接続を既存のワークスペースに追加する

既存のワークスペースでセキュリティ保護されたクラスター接続を有効にできます。 アップグレードでは、ワークスペースで VNet インジェクションを使う必要があります。

ポータル UI、ARM テンプレート、または azurerm Terraform プロバイダー バージョン 3.41.0 以降を使用できます。 Azure portal を使用してカスタム テンプレートを適用し、UI で パラメーターを変更できます。 Azure portal UI で Azure Databricks ワークスペース インスタンス自体をアップグレードすることもできます。

重要

この変更を行う前に、ファイアウォールを使う場合、またはクラシック コンピューティング プレーンからのイングレスまたはエグレスを制御するために他のネットワーク構成の変更を行った場合は、これらの変更を完全に有効にするため、同時にファイアウォールまたはネットワーク セキュリティ グループの規則の更新が必要になる場合があります。 たとえば、セキュリティで保護されたクラスター接続では、コントロール プレーンへの追加の発信接続があり、コントロール プレーンからの受信接続は使用されなくなりました。

アップグレードに問題があり、変更を一時的にロールバックする必要がある場合は、「クラスター接続をセキュリティで保護するためのアップグレードの一時的なロールバック」を参照してください。

ステップ 1: すべてのコンピューティング リソースを停止する

このアップグレードを試みる前に、クラスター、プール、クラシック SQL ウェアハウスなどのすべてのコンピューティング リソースを停止する必要があります。 ワークスペースのコンピューティング リソースを実行してはいけません。さもないと、アップグレードの試行が失敗します。 Databricks では、ダウンタイムのために、アップグレードのタイミングを計画することをお勧めします。

ステップ 2: ワークスペースを更新する

[パブリック IP なし] パラメーターを更新する必要があります (テンプレートでは enableNoPublicIp です)。 値 True (true) に設定します。

次のいずれかの方法を使用します。

テンプレートなしで Azure portal UI を使用する

  1. Azure portal で、Azure Databricks サービス インスタンスに移動します。

  2. 左側のナビゲーションで、[設定][ネットワーク] をクリックします。

  3. [パブリック IP なし] を選択します。

    Note

    同時に、[パブリック ネットワーク アクセスを許可する][必須の NSG ルール] の値をユース ケースに適した値に設定することで、Azure Private Link を有効にすることもできます。 ただし、Private Link を有効にするには追加の構成と検証が必要であるため、セキュリティで保護されたクラスター接続のために、この更新後に別の手順として実行することもできます。 重要な詳細と要件については、「Azure Private Link を有効にする」を参照してください。

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

ネットワークの更新が完了するまでに 15 分以上かかる場合があります。

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

注意

マネージド リソース グループにカスタム名がある場合は、それに応じてテンプレートを変更する必要があります。 詳細については、Azure Databricks アカウント チームにお問い合わせください。

  1. 次のアップグレード ARM テンプレート JSON をコピーします。

      {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "location": {
                "defaultValue": "[resourceGroup().location]",
                "type": "String",
                "metadata": {
                    "description": "Location for all resources."
                }
            },
            "workspaceName": {
                "type": "String",
                "metadata": {
                    "description": "The name of the Azure Databricks workspace to create."
                }
            },
            "apiVersion": {
                "defaultValue": "2023-02-01",
                "allowedValues": [
                   "2018-04-01",
                   "2020-02-15",
                   "2022-04-01-preview",
                   "2023-02-01"
                ],
                "type": "String",
                "metadata": {
                    "description": "2018-03-15 for 'full region isolation control plane' and 2020-02-15 for 'FedRAMP certified' regions"
                }
            },
            "enableNoPublicIp": {
                "defaultValue": true,
                "type": "Bool"
            },
            "pricingTier": {
                "defaultValue": "premium",
                "allowedValues": [
                    "premium",
                    "standard",
                    "trial"
                ],
                "type": "String",
                "metadata": {
                    "description": "The pricing tier of workspace."
                }
            },
            "publicNetworkAccess": {
              "type": "string",
              "defaultValue": "Enabled",
              "allowedValues": [
                "Enabled",
                "Disabled"
              ],
              "metadata": {
                "description": "Indicates whether public network access is allowed to the workspace - possible values are Enabled or Disabled."
              }
            },
            "requiredNsgRules": {
              "type": "string",
              "defaultValue": "AllRules",
              "allowedValues": [
                "AllRules",
                "NoAzureDatabricksRules"
              ],
              "metadata": {
                "description": "Indicates whether to retain or remove the AzureDatabricks outbound NSG rule - possible values are AllRules or NoAzureDatabricksRules."
              }
            }
            },
        "variables": {
            "managedResourceGroupName": "[concat('databricks-rg-', parameters('workspaceName'), '-', uniqueString(parameters('workspaceName'), resourceGroup().id))]",
            "managedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', variables('managedResourceGroupName'))]"
        },
        "resources": [
            {
                "type": "Microsoft.Databricks/workspaces",
                "apiVersion": "[parameters('apiVersion')]",
                "name": "[parameters('workspaceName')]",
                "location": "[parameters('location')]",
                "sku": {
                    "name": "[parameters('pricingTier')]"
                },
                "properties": {
                    "ManagedResourceGroupId": "[variables('managedResourceGroupId')]",
                    "publicNetworkAccess": "[parameters('publicNetworkAccess')]",
                    "requiredNsgRules": "[parameters('requiredNsgRules')]",
                    "parameters": {
                        "enableNoPublicIp": {
                            "value": "[parameters('enableNoPublicIp')]"
                        }
                    }
                }
            }
        ]
    }
    
    1. Azure portal の [カスタム デプロイ] ページに移動します。

    2. [エディターで独自のテンプレートをビルド] をクリックします。

    3. コピーしたテンプレートについて JSON に貼り付けます。

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

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

    6. 既存のワークスペースを更新するには、true に設定する必要がある enableNoPublicIp ではなく、そのワークスペースの作成に使用したのと同じパラメーターを使用します。 既存の VNet のサブスクリプション、リージョン、ワークスペース名、サブネット名、リソース ID を設定します。

      重要

      このコマンドが新しいワークスペースを作成するのではなく既存のワークスペースを更新するために、リソース グループ名、ワークスペース名、サブネット名が既存のワークスペースと同じです。

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

    8. 検証の問題がない場合は、[作成] をクリックします。

    ネットワークの更新が完了するまでに 15 分以上かかる場合があります。

Terraform を使用して更新を適用する

Terraform で作成されたワークスペースの場合は、ワークスペースを再作成せずにワークスペースを更新できます。

重要

terraform-provider-azurerm バージョン 3.41.0 以降を使用する必要があるため、必要に応じて Terraform プロバイダーのバージョンをアップグレードしてください。 以前のバージョンでは、これらの設定のいずれかを変更すると、ワークスペースを再作成しようとします。

次のワークスペースの設定を変更します。

  • custom_parameters ブロック内の no_public_ipfalse から true に変更できます。

ネットワークの更新が完了するまでに 15 分以上かかる場合があります。

ステップ 3: 更新を検証する

ワークスペースがアクティブな状態になると、更新ジョブが完了します。 更新プログラムが適用されたことを確認します。

  1. Web ブラウザーで Azure Databricks を開きます。

  2. ワークスペースのクラスターの 1 つを起動し、クラスターが完全に開始されるまで待ちます。

  3. Azure portal でワークスペース インスタンスに移動します。

  4. フィールド ラベル [マネージド リソース グループ] の横にある青い ID をクリックします。

  5. そのグループで、クラスターの VM を見つけて、そのうちの 1 つをクリックします。

  6. VM 設定の [プロパティ] で、[ネットワーク] 領域のフィールドを探します。

  7. [パブリック IP アドレス] フィールドが空であることを確認します。

    設定されている場合、VM にはパブリック IP アドレスがあります。これは、更新に失敗したことを意味します。

障害復旧

ワークスペースの更新が失敗した場合、ワークスペースは失敗状態としてマークされる可能性があります。つまり、ワークスペースではコンピューティング操作を実行できません。 失敗したワークスペースをアクティブ状態に戻すには、更新操作のステータス メッセージの手順を確認します。 問題を解決したら、失敗したワークスペースで更新をやり直します。 更新が正常に完了するまで、手順を繰り返します。

クラスター接続をセキュリティで保護するためのアップグレードの一時的なロールバック

デプロイ中に問題が発生した場合は、プロセスを一時的なロールバックとして取り消すことができますが、後でアップグレードを続行する前に一時的なロールバックを行う以外に、ワークスペースで SCC を無効にすることはサポートされていません。 これが一時的に必要な場合は、アップグレードに関する上記の手順に従うことができますが、enableNoPublicIp を true ではなく false に設定します。