クラスターで Hive metastore テーブルアクセスコントロール を有効にする (レガシー)

この記事では、クラスター上の組み込み Hive metastore に対してテーブルアクセスコントロールを有効にする方法について説明します。

クラスターでテーブルアクセスコントロールを有効にした後 Hive metastore セキュリティ保護可能なオブジェクトに特権を設定する方法については、「 Hive metastore 特権とセキュリティ保護可能なオブジェクト (レガシ)」を参照してください。

Hive metastore テーブルアクセスコントロール は、従来のデータガバナンス モデルです。 Databricks では、そのシンプルさとアカウント中心のガバナンス モデルのために、代わりに Unity Catalog を使用することをお勧めします。 Hive metastore によって管理されるテーブルを Unity Catalog メタストアにアップグレードできます。

クラスター のテーブルアクセスコントロールを有効にする

テーブルアクセスコントロール には、次の 2 つのバージョンがあります。

テーブルアクセスコントロールは、Machine Learning Runtimeではサポートされていません。

重要

クラスターに対してテーブル アクセス制御が有効になっている場合でも、Databricks ワークスペース管理者はファイル レベルのデータにアクセスできます。

SQL のみのテーブルアクセスコントロール

このバージョンのテーブルアクセスコントロール では、ユーザーは SQL コマンドのみに制限されています。

クラスターで SQL のみのテーブルアクセスコントロールを有効にし、そのクラスターが SQL コマンドのみを使用するように制限するには、クラスターの Spark conf で次のフラグを設定します。

spark.databricks.acl.sqlOnly true

SQL のみのテーブルアクセスコントロールへのアクセスは、管理設定ページの [ テーブルアクセスコントロールを有効にする ] 設定の影響を受けません。 この設定は、Python および SQL テーブルアクセスコントロールのワークスペース全体の有効化のみを制御します。

Python および SQL テーブルアクセスコントロール

このバージョンのテーブルアクセスコントロール を使用すると、ユーザーは SQL だけでなく DataFrame API を使用する Python コマンドを実行できます。 クラスターで有効にすると、そのクラスターのユーザーは次のことを行います。

  • Spark には、Spark SQL API または DataFrame API を使用してのみアクセスできます。 どちらの場合も、テーブルとビューへのアクセスは、 Hive metastore オブジェクトに対して付与できる Databricks 特権に従って管理者によって制限されます。

  • ファイルシステムの機密部分へのアクセスや、80 および 443 以外のポートへのネットワーク接続の作成を禁止されている低い特権のユーザーとして、クラスターノードでコマンドを実行する必要があります。

    • 組み込みの Spark 関数のみが、80 および 443 以外のポートでネットワーク接続を作成できます。

    • ワークスペース管理者ユーザーまたは ANY FILE 権限を持つユーザーのみが、 PySpark JDBC コネクターを介して外部データベースからデータを読み取ることができます。

    • Python プロセスが追加の送信ポートにアクセスできるようにする場合は、アクセスを許可するポートに Spark 構成spark.databricks.pyspark.iptable.outbound.whitelisted.portsを設定できます。サポートされている設定値の形式は [port[:port][,port[:port]]...](例: 21,22,9000:9999)です。 ポートは有効な範囲内、つまり 0-65535内にある必要があります。

これらの制限を回避しようとすると、例外が発生して失敗します。 これらの制限は、ユーザーがクラスターを介して特権のないデータにアクセスできないようにするために設けられています。

ワークスペース のテーブルアクセスコントロール を有効にする

ユーザーが Python および SQL テーブルアクセスコントロールを構成する前に、Databricks ワークスペースで Databricks ワークスペースのテーブルアクセスコントロールを有効にし、テーブルアクセスコントロールが有効になっていないクラスターへのユーザー アクセスを拒否する必要があります。

  1. 管理者設定ページに移動します。

  2. [ワークスペースの設定]タブをクリックします。

  3. [クラスター、プール、およびジョブのアクセス制御] トグルをクリックします。

  4. [確認]をクリックします。

  5. [テーブルアクセス] トグルをクリックします。

  6. [確認]をクリックします。

Enforce テーブルアクセスコントロール

ユーザーが必要なデータのみにアクセスできるようにするには、テーブルアクセスコントロールが有効になっているクラスターにユーザーを制限する必要があります。 特に、次のことを確認する必要があります。

  • ユーザーには、クラスターを作成するアクセス許可がありません。 テーブルアクセスコントロールなしでクラスターを作成すると、そのクラスターのすべてのデータにアクセスできます。

  • ユーザーには、テーブル アクセス コントロールが有効になっていないクラスターに対する CAN ATTACH TO 権限がありません。

詳細については、「コンピュート権限」を参照してください。

テーブルアクセスコントロール が有効なクラスターを作成する

テーブルアクセスコントロールは、 共有アクセスモードのクラスタではデフォルトで有効になっています。

REST API を使用してクラスターを作成するには、「 新しいクラスターの作成」を参照してください。

データオブジェクト に対する権限の設定

Hive metastore権限とセキュリティ保護対象オブジェクト(レガシー)」を参照してください。