Enable table access control for a cluster | Databricks on AWS [2021/6/15時点]の翻訳です。
注意
本文書には、もはやDatabricksでは使用しないホワイトリストという用語への参照を含んでいます。ソフトウェアからこの用語が削除された際には、本文書からも用語を削除します。
この文書では、クラスターにおけるテーブルアクセスコントロールを有効化する方法を説明します。
クラスターでテーブルアクセスコントロールが有効化された際に、どのようにデータオブジェクトにアクセス権を設定するのかに関しては、Databricksにおけるデータオブジェクトのアクセス権管理を参照してください。
クラスターにおけるテーブルアクセスコントロールの有効化
テーブルアクセスコントロールは二つのバージョンで利用できます:
- SQLのみのテーブルアクセスコントロール: クラスターのユーザーに対して、SQLコマンドのみの実行を許可します。Apache Spark SQL APIのみを利用できます。このため、Python、Scala、R、RDD API、そして、DBUtilsのようにクラウドストレージから直接データを読み込むクライアントを使用することはできません。
- PythonとSQLのテーブルアクセスコントロール: クラスターのユーザーに対して、SQL、Python、PySparkコマンドの実行を許可します。Spark SQL API、DataFrame APIを利用することができます。このため、Scala、R、RDD API、そして、DBUtilsのようにクラウドストレージから直接データを読み込むクライアントを使用することはできません。
SQLのみのテーブルアクセスコントロール
このバージョンのテーブルアクセスコントロールでは、ユーザーはクラスターでSQLコマンドのみを使用できます。
クラスターでSQLのみのテーブルアクセスコントロールを有効化し、クラスターでSQLコマンドのみを使用できるようにするには、クラスターのSpark confで、以下のフラグを設定します。
spark.databricks.acl.sqlOnly true
注意
SQLのみのテーブルアクセスコントロールへのアクセスは、admin consoleのEnable Table Access Controlに影響を受けません。この設定は、ワークスペース全体でのPythonとSQLのテーブルアクセスコントロールの有効化に関するものです。
PythonとSQLのテーブルアクセスコントロール
このバージョンのテーブルアクセスコントロールでは、ユーザーはSQLに加えて、データフレームAPIを使用するPythonコマンドを実行できます。このテーブルアクセスコントロールがクラスターで有効化された場合には、このクラスター、プールを使用するユーザーは:
- Spark SQL APIあるいはDataframe APIのみを用いてSparkにアクセスできます。両方の場合で、テーブル、ビューへのアクセスはDatabricksのデータガバナンスモデルに則り、管理者によって制限されます。
- ファイルシステム上の機密情報へのアクセスや、ポート80、443以外のネットワーク接続が禁止された低権限のユーザーとしてクラスターノードでコマンドを実行する必要があります。
- ビルトインのSpark関数だけがポート80、443以外のネットワーク接続を確立できます。
- 管理者ユーザーあるいはANY FILE権限を持つユーザーのみが、PySpark JDBC connectorを通じて外部データベースからデータを読み込むことができます。
- Pythonプロセスが、追加のアウトバウンドのポートにアクセスできるようにするには、Spark configの
spark.databricks.pyspark.iptable.outbound.whitelisted.ports
にアクセスしたいポートを指定します。設定する値は、例えば、21,22,9000:9999
というように[port[:port][,port[:port]]...]
のフォーマットである必要があります。ポートは適切な範囲、すなわち0-65535
にある必要があります。
これらの制限を回避しようとする試みは、例外とともに失敗します。ユーザーがクラスターを通じて許可されていないデータにできないように、これらの制限は施行されます。
要件
PythonとSQLのテーブルアクセスコントロールを設定する前に、管理者は:
- Databricksワークスペースでテーブルアクセスコントロールを有効化する必要があります。
- テーブルアクセスコントロールが有効化されていないクラスターへのアクセスを拒否する必要があります。実際には、これは多くのユーザーのクラスター作成権限を許可しないことを意味し、テーブルアクセスコントロールが有効化されていないクラスターへのCan Attach To権限を許可しないことを意味します。
これらの要件の詳細については、Enable table access control for your workspaceを参照ください。
テーブルアクセスコントロールが有効化されたクラスターの作成
クラスターを作成する際、Enable table access control and only allow Python and SQL commandsオプションにチェックしてください。このオプションはHigh Concurrencyクラスターでのみ有効です。
REST APIを用いてクラスターを作成する際には、Create cluster enabled for table access control exampleを参照ください。
データオブジェクトへのアクセス権の設定
Databricksにおけるデータオブジェクトのアクセス権管理を参照ください。