メインコンテンツまでスキップ
バージョン: 4.1 Preview

Apache Ranger で権限を管理する

Apache Ranger は、ユーザーが視覚的なウェブページを通じてアクセス ポリシーをカスタマイズできる集中型のセキュリティ管理フレームワークを提供します。これにより、どの役割がどのデータにアクセスできるかを決定し、Hadoop エコシステム内のさまざまなコンポーネントとサービスに対してきめ細かいデータ アクセス制御を実行できます。

Apache Ranger は次のコア モジュールを提供します。

  • Ranger Admin: Ranger のコア モジュールで、組み込みのウェブページがあります。ユーザーはこのページまたは REST インターフェースを通じてセキュリティ ポリシーを作成および更新できます。Hadoop エコシステムのさまざまなコンポーネントのプラグインは、定期的にこれらのポリシーをポーリングして取得します。
  • Agent Plugin: Hadoop エコシステムに埋め込まれたコンポーネントのプラグイン。これらのプラグインは、Ranger Admin から定期的にセキュリティ ポリシーを取得し、ポリシーをローカル ファイルに保存します。ユーザーがコンポーネントにアクセスすると、対応するプラグインが設定されたセキュリティ ポリシーに基づいてリクエストを評価し、認証結果を対応するコンポーネントに送信します。
  • User Sync: ユーザーおよびユーザー グループ情報を取得し、ユーザーおよびユーザー グループの権限データを Ranger のデータベースに同期するために使用されます。

StarRocks v3.1.9 では、ネイティブの RBAC 特権システムに加えて、Apache Ranger を通じたアクセス制御もサポートしています。現在、StarRocks は以下をサポートしています。

  • Apache Ranger を通じてアクセス ポリシー、マスキング ポリシー、および行レベル フィルタ ポリシーを作成します。
  • Ranger の監査ログ。
  • Kerberos を使用して認証する Ranger サーバーはサポートされていません。
  • 同じ Apache Ranger サービスに複数の StarRocks サービスを登録することで、異なる StarRocks クラスタでの権限管理を行うことができます。

このトピックでは、StarRocks と Apache Ranger の権限制御方法と統合プロセスについて説明します。Ranger でセキュリティ ポリシーを作成してデータ セキュリティを管理する方法については、Apache Ranger 公式ウェブサイト を参照してください。

権限制御方法​

StarRocks は Apache Ranger と統合され、次の権限制御方法を提供します。

  • Ranger で StarRocks Service を作成して権限制御を実装します。ユーザーが StarRocks の内部テーブル、外部テーブル、またはその他のオブジェクトにアクセスする際、StarRocks Service に設定されたアクセス ポリシーに従ってアクセス制御が実行されます。
  • ユーザーが外部データ ソースにアクセスする場合、Apache Ranger 上の外部サービス (Hive Service など) を再利用してアクセス制御を行うことができます。StarRocks は、異なる External Catalog に対して Ranger サービスを一致させ、データ ソースに対応する Ranger サービスに基づいてアクセス制御を実装します。

StarRocks が Apache Ranger と統合された後、次のアクセス制御パターンを実現できます。

  • Apache Ranger を使用して、StarRocks の内部テーブル、外部テーブル、およびすべてのオブジェクトへのアクセスを一元管理します。
  • Apache Ranger を使用して、StarRocks の内部テーブルおよびオブジェクトへのアクセスを管理します。External Catalog については、Ranger 上の対応する外部サービスのポリシーを再利用してアクセス制御を行います。
  • Apache Ranger を使用して、外部データ ソースに対応するサービスを再利用することで External Catalog へのアクセスを管理します。StarRocks の内部テーブルおよびオブジェクトへのアクセスは、StarRocks のネイティブ RBAC 特権システムを使用して管理します。

認証プロセス

  1. ユーザー認証には LDAP を使用し、Ranger を使用して LDAP ユーザーを同期し、アクセス ルールを設定することもできます。StarRocks も LDAP を通じてユーザーのログイン認証を完了できます。
  2. ユーザーがクエリを開始すると、StarRocks はクエリ文を解析し、ユーザー情報と必要な特権を Apache Ranger に渡します。Ranger は、対応するサービスに設定されたアクセス ポリシーに基づいてユーザーが必要な特権を持っているかどうかを判断し、認証結果を StarRocks に返します。ユーザーがアクセス権を持っている場合、StarRocks はクエリ データを返し、そうでない場合はエラーを返します。

前提条件​

  • Apache Ranger 2.1.0 以降がインストールされています。Apache Ranger のインストール方法については、Ranger クイック スタート を参照してください。

  • すべての StarRocks FE マシンが Apache Ranger にアクセスできること。各 FE マシンで次のコマンドを実行して確認できます。

    telnet <ranger-ip> <ranger-port>

    Connected to <ip> と表示されれば、接続は成功です。

StarRocks Service を Ranger と統合する​

(オプション) ranger-starrocks-plugin をインストールする​

注記

このステップの主な目的は、Ranger のリソース名自動補完機能を使用することです。Ranger Admin でポリシーを作成する際、ユーザーはアクセスを保護する必要があるリソースの名前を入力する必要があります。ユーザーがリソース名を入力しやすくするために、Ranger Admin は自動補完機能を提供しており、入力された内容に一致するサービス内の利用可能なリソースを検索し、リソース名を自動的に補完します。

Ranger クラスターを操作する権限がない場合や、この機能が必要ない場合は、このステップをスキップできます。

また、ranger-starrocks-plugin をインストールしなかった場合、StarRocks サービスを作成する際に test connection を使用できませんが、それはサービスを正常に作成できないことを意味するわけではありません。

  1. Ranger Admin ディレクトリ ews/webapp/WEB-INF/classes/ranger-plugins に starrocks フォルダーを作成します。

    mkdir {path-to-ranger}/ews/webapp/WEB-INF/classes/ranger-plugins/starrocks
  2. plugin-starrocks/target/ranger-starrocks-plugin-3.0.0-SNAPSHOT.jar と mysql-connector-j.jar をダウンロードし、starrocks フォルダーに配置します。

  3. Ranger Admin を再起動します。

    • Ranger 0.5.x:

      ranger-admin restart
    • Ranger 2.x and above:

      ./ews/ranger-admin-services.sh restart

Ranger Admin で StarRocks Service を設定する​

注記

このステップでは、Ranger 上で StarRocks Service を設定し、ユーザーが Ranger を通じて StarRocks オブジェクトに対するアクセス制御を実行できるようにします。

  1. ranger-servicedef-starrocks.json を Ranger サーバーにダウンロードし、ファイル内で必要な変更を行います。

    wget -O ranger-servicedef-starrocks.json https://releases.starrocks.io/resources/ranger-servicedef-starrocks-ee-20251231.json
注記

Ranger の自動補完機能が必要ない場合 (つまり、ranger-starrocks-plugin をインストールしていない場合)、.json ファイルの implClass を空に設定する必要があります。

"implClass": "",

Ranger の自動補完機能が必要な場合 (つまり、ranger-starrocks-plugin をインストールしている場合)、.json ファイルの implClass を org.apache.ranger.services.starrocks.RangerServiceStarRocks に設定する必要があります。

"implClass": "org.apache.ranger.services.starrocks.RangerServiceStarRocks",
  1. Ranger 管理者として次のコマンドを実行して StarRocks Service を追加します。

    curl -u <ranger_adminuser>:<ranger_adminpwd> \
    -X POST -H "Accept: application/json" \
    -H "Content-Type: application/json" http://<ranger-ip>:<ranger-port>/service/plugins/definitions -d@ranger-servicedef-starrocks.json
  2. http://<ranger-ip>:<ranger-host>/login.jsp にアクセスして Apache Ranger ページにログインします。ページに STARROCKS サービスが表示されます。

    home

  3. STARROCKS の後のプラス記号 (+) をクリックして StarRocks Service を設定します。

    service detail

    property

    • Service Name: サービス名を入力する必要があります。
    • Display Name: STARROCKS の下に表示するサービスの名前。指定しない場合は Service Name が表示されます。
    • Username と Password: ポリシー作成時にオブジェクト名を自動補完するために使用される FE ユーザー名とパスワード。この 2 つのパラメーターは StarRocks と Ranger の接続性には影響しません。自動補完を使用する場合は、db_admin ロールがアクティブなユーザーを少なくとも 1 人設定してください。
    • jdbc.url: StarRocks FE の IP アドレスとポートを入力します。

    以下の図は、設定例を示しています。

    example

    以下の図は、追加されたサービスを示しています。

    added service

  4. Test connection をクリックして接続性をテストし、接続が成功したら保存します。ranger-starrocks-plugin をインストールしていない場合は、接続テストをスキップして直接作成できます。

ファイルを準備する​

以下にリストされたファイルを準備し、必要な変更を加え、Ranger と統合したいクラスターのデータクレデンシャルで参照されている リモートストレージ バケット(コンテナ) にファイルをアップロードします。

注記

外部カタログについては、Ranger 上の外部サービス(Hive Service など)のアクセス ポリシーを再利用してアクセス制御を行うことができます。StarRocks は外部カタログと Ranger 外部サービスを一致させることをサポートしています。ユーザーが外部テーブルにアクセスすると、システムはその外部テーブルに対応する Ranger サービスのアクセス ポリシーを再利用してアクセス制御を実行します。

ranger-starrocks-security.xml​

  • 必須: はい
  • 説明: StarRocks と Apache Ranger の間で使用される設定ファイル。
  • ダウンロードリンク: ranger-starrocks-security.xml
  • 次の設定を変更します:
    • ranger.plugin.starrocks.service.name: ステップ 4 で作成した StarRocks Service の名前に変更します。
    • ranger.plugin.starrocks.policy.rest.url: Ranger Admin のアドレスに変更します。

他の設定を変更する必要がある場合は、Apache Ranger の公式ドキュメントを参照してください。たとえば、ranger.plugin.starrocks.policy.pollIntervalM を変更してポリシー変更の取得間隔を変更できます。

例:

...
<property>
<name>ranger.plugin.starrocks.service.name</name>
<value>starrocks</value>
<description>
Name of the Ranger service containing policies for this StarRocks instance
</description>
</property>
...

...
<property>
<name>ranger.plugin.starrocks.policy.rest.url</name>
<value>http://localhost:6080</value>
<description>
URL to Ranger Admin
</description>
</property>
...

ranger-starrocks-audit.xml​

  • 必須: いいえ
  • 説明: Ranger の監査ログサービスを有効にするために使用される設定ファイル。
  • ダウンロードリンク: ranger-starrocks-audit.xml
  • 次の設定を変更します:
    • xasecure.audit.solr.solr_url: 自分の solr_url に変更します。

ranger-policymgr-ssl.xml​

  • 必須: いいえ
  • 説明: Trust Store または Key Store に対応するファイルの実際のローカルパス(サーバー上)を指定するために使用される設定ファイル。
  • ダウンロードリンク: ranger-policymgr-ssl.xml

Trust Store または Key Store のクレデンシャル​

  • 必須: いいえ
  • 説明: 安全な接続を有効にするために使用される Trust Store または Key Store のパスとクレデンシャル。
    • Trust Store の場合、truststore.jks と truststore.jceks が必要です。
    • Key Store の場合、keystore.jks と keystore.jceks が必要です。

ranger-hive-security.xml​

  • 必須: いいえ
  • 説明: Hive Catalog のために Ranger のアクセス制御を有効にするために使用される設定ファイル。
  • ダウンロードリンク: ranger-hive-security.xml

ranger-hive-audit.xml​

  • 必須: いいえ
  • 説明: Hive Catalog のために Ranger の監査ログサービスを有効にするために使用される設定ファイル。
  • ダウンロードリンク: ranger-hive-audit.xml

Ranger 統合を作成する​

  1. PhoenixAI Cloud コンソール にサインインします。

  2. 左側のナビゲーション ペインで Integration Hub を選択します。

  3. Integration Hub ページで、Apache Ranger カードをクリックします。

  4. Apache Ranger ページで、Create Configuration をクリックします。

  5. Create Ranger Configuration ダイアログ ボックスで、次のように設定します。

    a. Name フィールドに構成の名前を入力します。

    b. Ranger が管理するアクセス制御の範囲を選択します。All catalogs を選択した場合、Ranger は内部 Catalog(ネイティブデータが格納されているdefault_catalog)と外部 Catalog の両方に対するアクセス制御を管理します。External catalogs only を選択した場合、Ranger は外部 Catalog に対するアクセス制御のみを管理します。

    c. リモートストレージにアップロードした ranger-starrocks-security.xml の場所を指定します。

    d. (オプション) Ranger の監査ログサービスを使用する場合は、Enable Audit Logs セクションのスイッチをオンにし、リモートストレージにアップロードした ranger-starrocks-audit.xml の場所を Audit XML フィールドに指定します。

    e. (オプション) Ranger の安全な接続を有効にする場合は、Secure connection セクションのスイッチをオンにし、シナリオに基づいて Trust Store または Key Store を選択し、Policy Manager SSL XML フィールドに ranger-policymgr-ssl.xml の場所を指定し、Trust Store または Key Store のパスとクレデンシャルの場所を指定します。

    f. (オプション) Hive Catalog に対する Ranger のアクセス制御を再利用する場合は、Apply to Hive Catalog セクションのスイッチをオンにし、リモートストレージにアップロードした ranger-hive-security.xml の場所を Hive Security XML フィールドに指定します。

    g. (オプション) Hive Catalog のために Ranger の監査ログサービスを使用する場合は、Enable audit logs for Hive セクションのスイッチをオンにし、リモートストレージにアップロードした ranger-hive-audit.xml の場所を Hive Audit XML フィールドに指定します。

    注記

    リモートストレージ場所の形式は以下の通りです:

    -- AWS S3
    s3://bucket_name/path1
    -- Google Cloud Storage
    gs://bucket_name/path1
    -- Azure Blob Storage
    azblob://storage_account_name/container_name/path1
  6. Submit をクリックして統合を作成します。

クラスターに統合を適用する​

  1. PhoenixAI Cloud コンソール にサインインします。

  2. Clusters ページで、統合を適用したいクラスターをクリックします。

  3. クラスター詳細ページの Cluster parameters タブで、Apache Ranger integration セクションの Apache Ranger Configurations ドロップダウン リストからクラスター用に作成した Ranger 統合を選択します。

  4. Validate をクリックして、構成がクラスターに適用できるかどうかを確認します。

    注記

    クラスターが実行中の状態にある場合にのみ、Ranger 構成を検証および適用できます。

  5. 検証が成功した場合、Apply をクリックして構成を適用します。

  6. Hive Catalog に対する Ranger のアクセス制御を再利用したい場合は、db_admin ロールがアクティブ化されたユーザーとしてクラスターにログインし、外部カタログを次のように設定する必要があります。

    • 外部カタログを作成する際に、プロパティ "ranger.plugin.hive.service.name" を追加します。

      CREATE EXTERNAL CATALOG hive_catalog_1
      PROPERTIES (
      "type" = "hive",
      "hive.metastore.type" = "hive",
      "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
      "ranger.plugin.hive.service.name" = "<ranger_hive_service_name>"
      )
    • 既存の外部カタログにこのプロパティを追加することもできます。

      ALTER CATALOG hive_catalog_1
      SET ("ranger.plugin.hive.service.name" = "<ranger_hive_service_name>");

      この操作により、既存のカタログの認証方法が Ranger ベースの認証に変更されます。

次のステップ​

StarRocks Service を追加した後、そのサービスをクリックしてアクセス制御ポリシーを作成し、異なるユーザーまたはユーザー グループに異なる権限を割り当てることができます。ユーザーが StarRocks データにアクセスする際、これらのポリシーに基づいてアクセス制御が実施されます。