メインコンテンツまでスキップ

Apache Ranger で権限を管理する

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

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

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

StarRocks(CelerData を支えるデータベース エンジン)は、組み込みの RBAC 特権システムに加えて、Apache Ranger と統合してアクセス制御を行うこともできます。現在、以下のことが可能です。

  • Apache Ranger を通じてアクセス ポリシー、マスキング ポリシー、行レベル フィルター ポリシーを作成する。
  • Ranger の監査ログを使用する。
  • 既存のアクセス制御ポリシーを再利用し、外部データ ソースの監査ログを有効にする。
  • Trust Store または Key Store を介して安全な接続を有効にする。
注記

認証に Kerberos を使用する Ranger サーバーはサポートされていません。

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

設定可能なリソース オブジェクトと特権については、privilege items を参照してください。

権限制御方法

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

  • グローバル アクセス制御: Ranger を使用して、StarRocks 内部テーブル、外部テーブル、およびその他のオブジェクトへのアクセスを一元的に管理します。アクセス制御は、StarRocks Service に設定されたアクセス ポリシーに従って実行されます。
  • Ranger を使用して、StarRocks 内部テーブルおよびオブジェクトへのアクセスを管理します。外部カタログについては、Ranger 上の対応する外部サービス(Hive Service など)のポリシーを再利用してアクセス制御を行います。StarRocks は、Ranger サービスと外部カタログを一致させることができます。
  • StarRocks の組み込み RBAC システムを使用して、StarRocks 内部テーブルおよびオブジェクトへのアクセスを管理します。Ranger 上の外部サービスのポリシーを再利用して、外部データ ソースへのアクセスを管理します。

認証プロセス

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

StarRocks を Ranger と統合する

注記

前提条件

Apache Ranger 2.1.0 以降が必要です。Apache Ranger のインストール方法については、Ranger quick start を参照してください。

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

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

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

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

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

    • Ranger 0.5.x の場合:

      ranger-admin restart
    • Ranger 2.x 以降の場合:

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

Ranger Admin で StarRocks Service を設定する

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

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

    • Ranger の自動補完機能が不要な場合(つまり、ranger-starrocks-plugin をインストールしていない場合)、implClass を空に設定する必要があります("implClass": "",)。
    • Ranger の自動補完機能が必要な場合(つまり、ranger-starrocks-plugin をインストールした場合)、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 Web UI にログインします。ページに STARROCKS サービスが表示されます。

    home

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

    service detail

    property

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

    以下の画像は設定例を示しています。

    example

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

    added service

  5. Test connection をクリックして接続性をテストし、接続が成功したら保存します。

ファイルを準備する

以下にリストされたファイルを準備し、必要な変更を加え、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 に変更します。

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

  • 必須: いいえ
  • 説明: 安全な接続を有効にするために使用される Trust Store または Key Store のパスとクレデンシャル。
    • Trust Store の場合、truststore.jkstruststore.jceks が必要です。
    • Key Store の場合、keystore.jkskeystore.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. CelerData Cloud BYOC コンソール にサインインします。

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

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

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

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

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

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

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

    d. (オプション) Ranger の安全な接続を有効にする場合は、Secure connection セクションのスイッチをオンにし、シナリオに基づいて Trust Store または Key Store を選択し、Trust Store または Key Store のパスとクレデンシャルの場所を指定します。

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

    f. (オプション) 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. CelerData Cloud BYOC コンソール にサインインします。

  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 データにアクセスすると、これらのポリシーに基づいてアクセス制御が実施されます。