クラスター (レガシー) で Hive metastore テーブルアクセスコントロールを有効にする
この記事では、クラスターの組み込み Hive metastore に対してテーブルアクセスコントロールを有効にする方法について説明します。
クラスターでテーブルアクセスコントロールを有効にした後Hive metastoreセキュリティ保護可能なオブジェクトに特権を設定する方法については、「Hive metastoreの特権とセキュリティ保護可能なオブジェクト (レガシー)」を参照してください。
Hive metastoreテーブルアクセスコントロールは、従来のデータガバナンスモデルです。Databricks では、そのシンプルさとアカウント中心のガバナンスモデルのため、代わりに Unity Catalog を使用することをお勧めします。Hive metastoreによって管理されるテーブルをUnity Catalogメタストアにアップグレードできます。
クラスターでのテーブルアクセスコントロールの有効化
テーブルアクセスコントロールには、2つのバージョンがあります:
- SQLのみのテーブルアクセスコントロールは、ユーザーをSQLコマンドに制限します。
- PythonとSQLのテーブルアクセスコントロールを使用すると、ユーザーは SQL、Python、および PySpark コマンドを実行できます。
テーブルアクセスコントロールは機械学習のランタイムではサポートされていません。
テーブルアクセスコントロールがクラスターで有効になっている場合でも、 Databricks ワークスペース管理者はファイルレベルのデータにアクセスできます。
SQL のみのテーブルアクセスコントロール
このバージョンのテーブルアクセスコントロールは、ユーザーをSQLコマンドのみに制限します。
クラスターで SQLのみのテーブルアクセスコントロールを有効にし、そのクラスターで SQL コマンドのみを使用するように制限するには、クラスターの Spark confで次のフラグを設定します:
spark.databricks.acl.sqlOnly true
SQL のみのテーブルアクセスコントロールへのアクセスは、管理設定ページの テーブルアクセスコントロールを有効にする設定の影響を受けません。 この設定は、 Python と SQL テーブルアクセスコントロールのワークスペース全体の有効化のみを制御します。
Python と SQL のテーブルアクセスコントロール
このバージョンのテーブルアクセスコントロールを使用すると、ユーザーはデータフレームAPIとSQLを使用するPythonコマンドを実行できます。クラスターで有効になっている場合、そのクラスター上のユーザーは次の操作を行います。
- Spark には、Spark SQL API または データフレーム API を使用してのみアクセスできます。 どちらの場合も、テーブルとビューへのアクセスは、 オブジェクトに付与できるDatabricksのHive metastore権限 に従って管理者によって制限されます。
- クラスター ノードでコマンドを、ファイル システムの機密性の高い部分へのアクセスや 80 と 443 以外のポートへのネットワーク接続の作成が禁止されている低特権のユーザーとして実行する必要があります。
- Sparkの組み込み関数のみが、ポート80と443以外のポートでネットワーク接続を作成できます。
- PySpark JDBC コネクタを介して外部データベースからデータを読み取ることができるのは、ワークスペース管理者ユーザーまたはANY FILE 権限を持つユーザーのみです。
- Pythonプロセスが追加の送信ポートにアクセスできるようにしたい場合は、Spark config
spark.databricks.pyspark.iptable.outbound.whitelisted.portsをアクセスを許可したいポートに設定できます。設定値のサポートされている形式は[port[:port][,port[:port]]...]で、例:21,22,9000:9999です。ポートは有効な範囲 (0-65535) 内にある必要があります。
これらの制限を回避しようとする試みは、例外で失敗します。 これらの制限は、ユーザーがクラスターを通じて特権のないデータにアクセスできないようにするために設定されています。
ワークスペースのテーブルアクセスコントロールを有効にする
ユーザーが Python を構成してテーブルアクセスコントロール SQL する前に、 Databricks ワークスペース管理者は、 Databricks ワークスペースのテーブルアクセスコントロールを有効にし、テーブルアクセスコントロールが有効になっていないクラスターへのユーザーアクセスを拒否する必要があります。
- 設定ページに移動します。
- セキュリティ タブをクリックします。
- テーブルアクセスコントロールオプションを有効にしてください。
テーブルアクセスコントロールの強制
ユーザーが必要なデータのみにアクセスできるようにするには、テーブルアクセスコントロールを有効にしたクラスターにユーザーを制限する必要があります。 特に、次のことを確認する必要があります。
- ユーザーには、クラスターを作成する権限がありません。 テーブルアクセスコントロールなしでクラスターを作成すると、そのクラスターから任意のデータにアクセスできます。
- ユーザーには Can Attach To テーブルアクセスコントロールが有効になっていないクラスターに対する権限はありません。
詳細については、「 コンピュートの権限 」を参照してください。
テーブルアクセスコントロールに対応したクラスターを作成する
テーブルアクセスコントロールは、 Standard アクセスモードのクラスターでデフォルトによって有効になります。
REST APIを使用してクラスターを作成するには、「新しいクラスターの作成」を参照してください。
データオブジェクトに対する権限の設定
「Hive metastore権限とセキュリティ保護対象オブジェクト(レガシー)」を参照してください。