認証

Presto は、システム管理者が Presto の異なる HTTP エンドポイントへのアクセスを制御できるように、HTTP エンドポイントの認証サポートを有効にするように構成できます。

ロールベースアクセス制御

Presto のすべての HTTP エンドポイントは、ロールのセットによって保護されており、それらのロールのいずれかに属する ID のみがアクセスできます。 Presto には 3 つのロールが定義されています。

  • user: クエリの起動、ステータスの確認、出力データの取得、UI 用のデータの提供など、外部エンドポイントにアクセスする必要があるユーザー。

  • internal: ワーカーでタスクを起動したり、別のワーカーから交換データをフェッチしたりするなど、エンドポイントにアクセスする Presto の内部コンポーネント (コーディネーターやワーカーなど)。

  • admin: ノードのステータスを取得するなどの内部サービスエンドポイントにアクセスできるシステム管理者。

認証の有効化

認証を有効にするには、次の手順を実行する必要があります。

認証を有効にする

Presto 認証では、アクセサーのプリンシパルを取得するために認証が必要なので、認証が有効になっていることを確認してください。

  • TLS/SSL が適切に構成されている場合、証明書を使用してアクセサーを識別するだけで済みます。

    http-server.authentication.type=CERTIFICATE
    
  • KERBEROSPASSWORDJWT などの他の認証タイプを指定することもできます。追加の設定が必要になる場合があります。

    node.internal-address=<authentication type>
    

オーソライザーを設定する

認証を有効にするには、インターフェース com.facebook.airlift.http.server.Authorizer を実装してバインドする必要があります。これは、受信リクエストのプリンシパルと、リクエストされているエンドポイントの許可されたロールに基づいて、実際の認証チェックを実行します。

プリセットの ConfigurationBasedAuthorizer を使用するか、独自に実装することができます。

設定ベースのオーソライザー

このプラグインを使用すると、ロールから ID を照合するための正規表現へのマッピングを指定することで、認証サポートを有効にすることができます。設定ベースのオーソライザーの使用を開始するには、次の手順に従います。

  1. ロールと ID の正規表現のマッピングを作成し、ファイルに保存します。

    user=.*
    internal=coordinator
    admin=su.*
    
  2. config.properties ファイルにマッピングファイルへのパスを指定します。

    configuration-based-authorizer.role-regex-map.file-path=<path to mapping file>
    
  3. Guice モジュール com.facebook.airlift.http.server.ConfigurationBasedAuthorizerModule をインストールします。

認証設定の構成

認証設定は config.properties ファイルで構成されます。ワーカーノードとコーディネーターノードの認証は、同じプロパティセットを使用して構成されます。

config.properties ファイルに追加する必要があるプロパティの例を以下に示します。

http-server.authorization.enabled=true
http-server.authorization.default-policy=ALLOW
http-server.authorization.default-allowed-roles=USER,ADMIN
http-server.authorization.allow-unsecured-requests=false

プロパティ

説明

http-server.authorization.enabled

Presto の認証を有効にします。true に設定する必要があります。デフォルト値は false です。

http-server.authorization.default-policy

デフォルトの認証ポリシーは、許可されたロールが指定されていないエンドポイントに適用されます。ALLOWDENYDEFAULT_ROLES に設定できます。

http-server.authorization.default-allowed-roles

default-policy が DEFAULT_ROLES に設定されている場合に、明示的に指定されていないエンドポイントにアクセスできるロール。

http-server.authorization.allow-unsecured-requests

セキュリティで保護されていないリクエストの認証チェックをスキップします。デフォルト値は false です。

警告

http-server.authorization.allow-unsecured-requests は、認証付きで HTTP から HTTPS に移行するための方法として提供されており、認証されていないリクエストが認証チェックをスキップできるため、セキュリティホールとなります。移行期間中のみ有効にし、HTTPS の使用に移行したら、この設定を無効にしてください。