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

Manage permissions with Apache Ranger

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

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

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

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

  • Apache Ranger を通じてアクセス ポリシー、マスキング ポリシー、および行レベル フィルター ポリシーを作成します。
  • Ranger の監査ログ。
  • Kerberos を使用して認証する Ranger サーバーはサポートされていません。

このトピックでは、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 のネイティブ RBAC 権限システムを使用して、StarRocks の内部テーブルおよびオブジェクトへのアクセスを管理します。

認証プロセス

  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-pluginsstarrocks フォルダーを作成します。

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

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

    ranger-admin restart

Ranger Admin で StarRocks Service を設定する

注記

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

  1. ranger-servicedef-starrocks.json を StarRocks FE マシンまたは Ranger マシンの任意のディレクトリにコピーします。

    wget https://raw.githubusercontent.com/StarRocks/ranger/master/agents-common/src/main/resources/service-defs/ranger-servicedef-starrocks.json
    注記

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

    "implClass": "",

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

    "implClass": "org.apache.ranger.services.starrocks.RangerServiceStarRocks",
  2. 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
  3. http://<ranger-ip>:<ranger-host>/login.jsp にアクセスして Apache Ranger ページにログインします。ページに STARROCKS サービスが表示されます。

    home

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

    service detail

    property

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

    次の図は設定例を示しています。

    example

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

    added service

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

  6. StarRocks クラスターの各 FE マシンで、fe/conf フォルダーに ranger-starrocks-security.xml を作成し、内容をコピーします。次の 2 つのパラメーターを変更し、変更を保存する必要があります。

    • ranger.plugin.starrocks.service.name: ステップ 4 で作成した StarRocks Service の名前に変更します。
    • ranger.plugin.starrocks.policy.rest.url: Ranger Admin のアドレスに変更します。

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

    vim ranger-starrocks-security.xml

    ...
    <property>
    <name>ranger.plugin.starrocks.service.name</name>
    <value>starrocks</value> -- StarRocks Service 名に変更します。
    <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> -- Ranger Admin アドレスに変更します。
    <description>
    URL to Ranger Admin
    </description>
    </property>
    ...
  7. (オプション) Ranger の監査ログサービスを使用したい場合は、各 FE マシンの fe/conf フォルダーに ranger-starrocks-audit.xml ファイルを作成します。内容をコピーし、xasecure.audit.solr.solr_urlsolr_url を自分の solr_url に置き換えて、ファイルを保存します。

  8. すべての FE 設定ファイルに access_control = ranger の設定を追加します。

    vim fe.conf
    access_control=ranger
  9. すべての FE マシンを再起動します。

    -- FE フォルダーに切り替えます。
    cd..

    bin/stop_fe.sh
    bin/start_fe.sh

外部テーブルへのアクセスを制御するために他のサービスを再利用する

External Catalog では、外部サービス (例えば Hive Service) を再利用してアクセス制御を行うことができます。StarRocks は異なる Catalog に対して異なる Ranger 外部サービスを一致させることをサポートしています。ユーザーが外部テーブルにアクセスする際、システムは対応する外部テーブルの Ranger Service のアクセス ポリシーに基づいてアクセス制御を実装します。ユーザー権限は同名の Ranger ユーザーと一致します。

  1. Hive の Ranger 設定ファイル ranger-hive-security.xmlranger-hive-audit.xml をすべての FE マシンの fe/conf ファイルにコピーします。Ranger の IP とポートが正しいことを確認してください。

  2. すべての FE マシンを再起動します。

  3. External Catalog を設定します。

    • External Catalog を作成する際に、プロパティ "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>"
      )
    • 既存の External Catalog にもこのプロパティを追加できます。

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

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

次のステップ

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

Rocky the happy otterStarRocks Assistant

AI generated answers are based on docs and other sources. Please test answers in non-production environments.