システムアクセス制御¶
Prestoでは、コーディネーターに対して認証を行うプリンシパルの概念と、クエリの実行を担当するユーザー名を分離しています。たとえば、Presto CLIを実行する場合、--user
オプションを使用してPrestoユーザーを指定できます。
デフォルトでは、Prestoコーディネーターは、任意のプリンシパルが任意のPrestoユーザーとしてクエリを実行することを許可します。セキュアな環境では、これはおそらく望ましい動作ではなく、カスタマイズが必要になるでしょう。
実装¶
SystemAccessControlFactory
は、SystemAccessControl
インスタンスを作成する役割を担います。また、Presto構成で管理者が使用するSystemAccessControl
の名前も定義します。
SystemAccessControl
の実装には、いくつかの責任があります。
特定のプリンシパルが、特定のユーザーとしてクエリを実行する権限があるかどうかを検証します。
特定のユーザーが、特定のシステムプロパティの値を変更できるかどうかを判断します。
すべてのカタログでアクセスチェックを実行します。これらのアクセスチェックは、コネクター固有のチェックよりも前に行われるため、
ConnectorAccessControl
で許可される可能性のある権限を拒否できます。
SystemAccessControl
とSystemAccessControlFactory
の実装は、プラグインとしてラップし、Prestoクラスターにインストールする必要があります。
構成¶
SystemAccessControl
とSystemAccessControlFactory
を実装するプラグインがコーディネーターにインストールされたら、etc/access-control.properties
ファイルを使用して構成します。access-control.name
以外のすべてのプロパティは、SystemAccessControl
の実装に固有のものです。
access-control.name
プロパティは、PrestoがSystemAccessControlFactory.getName()
によって返される名前に基づいて、登録されたSystemAccessControlFactory
を見つけるために使用されます。残りのプロパティは、マップとしてSystemAccessControlFactory.create()
に渡されます。
構成ファイルの例
access-control.name=custom-access-control
custom-property1=custom-value1
custom-property2=custom-value2