Share via


データ アクセス構成を有効にする

この記事では、すべての SQL ウェアハウスの Azure Databricks 管理者が UI を使用して実行するデータ アクセスの構成について説明します。

注意

ワークスペースで Unity Catalog が有効になっている場合は、この記事の手順を実行する必要はありません。 Unity Catalog では、既定で SQL ウェアハウスがサポートされています。

Databricks では、インスタンス プロファイルではなく、Unity Catalog ボリュームまたは外部の場所を使用してクラウド オブジェクト ストレージに接続することをお勧めします。 Unity Catalog は、アカウントの複数のワークスペースにまたがってデータ アクセスを管理および監査するための中心的な場所を提供することで、データのセキュリティとガバナンスを簡素化します。 「Unity Catalog とは」と「外部の場所を使用するための推奨事項」を参照してください。

REST API を使用してすべての SQL ウェアハウスを構成するには、SQL Warehouses API に関するページを参照してください。

重要

これらの設定を変更すると、実行中のすべての SQL ウェアハウスが再起動します。

データへのアクセスを有効にする方法の一般的な概要については、「アクセス制御リスト」を参照してください。

要件

  • すべての SQL ウェアハウスに対する設定を構成するには、Azure Databricks ワークスペース管理者である必要があります。

サービス プリンシパルの構成

サービス プリンシパルを使用した SQL ウェアハウスから Azure Data Lake Storage Gen2 ストレージ アカウントへのアクセスを構成するには、次の手順に従います。

  1. Microsoft Entra ID (旧称 Azure Active Directory) アプリケーション を登録し、次のプロパティを記録します:

    • アプリケーション (クライアント) ID: Microsoft Entra ID (旧称 Azure Active Directory) アプリケーションを一意に識別する ID。
    • ディレクトリ (テナント) ID: Microsoft Entra ID のインスタンスを一意に識別する ID (Azure Databricks ではディレクトリ (テナント) ID と呼ばれます)。
    • クライアント シークレット: このアプリケーション登録用に作成されたクライアント シークレットの値。 アプリケーションは、このシークレット文字列を使用して、その ID を証明します。
  2. お使いのストレージ アカウントで、前の手順で登録したアプリケーションのロールの割り当てを追加して、ストレージ アカウントへのアクセス権を付与します。

  3. Azure Key Vault に基づくシークレット スコープまたは Databricks スコープのシークレット スコープを作成し、スコープ名プロパティの値を記録します。

    • スコープ名: 作成されたシークレット スコープの名前。
  4. Azure Key Vault を使用している場合は、[シークレット] セクションに移動し、Azure Key Vault によってサポートされるシークレットを作成します。 次に、手順 1 で取得した "クライアント シークレット" を使用して、このシークレットの "値" フィールドを設定します。 選択したシークレット名を記録しておきます。

    • シークレット名: 作成された Azure Key Vault シークレットの名前。
  5. Databricks に基づくスコープを使用している場合は、Databricks CLI を使用して新しいシークレットを作成し、それを使用して、手順 1 で取得したクライアント シークレットを格納します。 この手順で入力した秘密鍵を記録しておきます。

    • 秘密鍵: 作成された Databricks に基づくシークレットのキー。

    Note

    必要に応じて、追加のシークレットを作成して、手順 1 で取得したクライアント ID を格納できます。

  6. ワークスペースの上部バーでユーザー名を選択し、ドロップダウンから [設定] を選択します。

  7. [コンピューティング] タブを選択します。

  8. SQL ウェアハウスの横にある [管理] を選択します。

  9. [データ アクセス構成] フィールドで、[サービス プリンシパルの追加] ボタンをクリックします。

  10. Azure Data Lake Storage Gen2 ストレージ アカウントのプロパティを構成します。

  11. [追加] をクリックします。

    ADLS2 ストレージ アカウント

    [Data Access Configuration] (データ アクセス構成) テキストボックスに新しいエントリが追加されていることがわかります。

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

[Data Access Configuration] (データ アクセス構成) テキストボックスのエントリを直接編集することもできます。

SQL ウェアハウスのデータ アクセス プロパティを構成する

データ アクセス プロパティを使用してすべてのウェアハウスを構成するには、次のようにします。

  1. ワークスペースの上部バーでユーザー名を選択し、ドロップダウンから [設定] を選択します。

  2. [コンピューティング] タブを選択します。

  3. SQL ウェアハウスの横にある [管理] を選択します。

  4. [データアクセス構成] ボックスで、メタストア プロパティを含むキーと値のペアを指定します。

    重要

    Spark にシークレット値を公開せずに、Spark の構成プロパティをシークレットの値に設定するには、値を {{secrets/<secret-scope>/<secret-name>}} に設定します。 <secret-scope> をシークレットのスコープに、<secret-name> をシークレットの名前に置き換えます。 値は {{secrets/ で始まり、}} で終わる必要があります。 この構文の詳細については、「Spark の構成プロパティまたは環境変数のシークレットを参照する構文」を参照してください。

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

Databricks Terraform プロバイダーdatabricks_sql_global_config を使用して、データ アクセス プロパティを構成することもできます。

サポートされているプロパティ

  • * で終わるエントリの場合、そのプレフィックス内のすべてのプロパティがサポートされます。

    たとえば、spark.sql.hive.metastore.* は、spark.sql.hive.metastore.jarsspark.sql.hive.metastore.version の両方のほかに、spark.sql.hive.metastore で始まる他のプロパティもサポートされていることを示します。

  • 値に機密情報が含まれているプロパティの場合、機密情報をシークレットに格納し、プロパティの値をシークレット名に設定するには、secrets/<secret-scope>/<secret-name> という構文を使用してます。

SQL ウェアハウスでは、次のプロパティがサポートされます。

  • spark.sql.hive.metastore.*
  • spark.sql.warehouse.dir
  • spark.hadoop.datanucleus.*
  • spark.hadoop.fs.*
  • spark.hadoop.hive.*
  • spark.hadoop.javax.jdo.option.*
  • spark.hive.*

これらのプロパティの設定方法の詳細については、「外部 Apache Hive メタストア」を参照してください。