システムアクセス制御

Prestoでは、コーディネーターに対して認証を行うプリンシパルの概念と、クエリの実行を担当するユーザー名を分離しています。たとえば、Presto CLIを実行する場合、--userオプションを使用してPrestoユーザーを指定できます。

デフォルトでは、Prestoコーディネーターは、任意のプリンシパルが任意のPrestoユーザーとしてクエリを実行することを許可します。セキュアな環境では、これはおそらく望ましい動作ではなく、カスタマイズが必要になるでしょう。

実装

SystemAccessControlFactoryは、SystemAccessControlインスタンスを作成する役割を担います。また、Presto構成で管理者が使用するSystemAccessControlの名前も定義します。

SystemAccessControlの実装には、いくつかの責任があります。

  • 特定のプリンシパルが、特定のユーザーとしてクエリを実行する権限があるかどうかを検証します。

  • 特定のユーザーが、特定のシステムプロパティの値を変更できるかどうかを判断します。

  • すべてのカタログでアクセスチェックを実行します。これらのアクセスチェックは、コネクター固有のチェックよりも前に行われるため、ConnectorAccessControlで許可される可能性のある権限を拒否できます。

SystemAccessControlSystemAccessControlFactoryの実装は、プラグインとしてラップし、Prestoクラスターにインストールする必要があります。

構成

SystemAccessControlSystemAccessControlFactoryを実装するプラグインがコーディネーターにインストールされたら、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