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 サーバーを操作する権限がない場合や、この機能が不要な場合は、このステップをスキップできます。
-
Ranger Admin ディレクトリ
ews/webapp/WEB-INF/classes/ranger-pluginsにstarrocksフォルダーを作成します。mkdir {path-to-ranger}/ews/webapp/WEB-INF/classes/ranger-plugins/starrocks -
Ranger plugin と mysql-connector-j をダウンロードし、
starrocksフォルダーに配置します。 -
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 オブジェクトのアクセス制御を実行できるようにします。
-
ranger-servicedef-starrocks.json を Ranger サーバーにダウンロードし、ファイル内で必要な変更を行います。
- Ranger の自動補完機能が不要な場合(つまり、
ranger-starrocks-pluginをインストールしていない場合)、implClassを空に設定する必要があります("implClass": "",)。 - Ranger の自動補完 機能が必要な場合(つまり、
ranger-starrocks-pluginをインストールした場合)、implClassをorg.apache.ranger.services.starrocks.RangerServiceStarRocksに設定する必要があります("implClass": "org.apache.ranger.services.starrocks.RangerServiceStarRocks",)。
- Ranger の自動補完機能が不要な場合(つまり、
-
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 -
http://<ranger-ip>:<ranger-host>/login.jspにアクセスして Apache Ranger Web UI にログインします。ページに STARROCKS サービスが表示されます。
-
STARROCKS の後のプラス記号(
+)をクリックして StarRocks Service を設定し、次のように設定します。

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

以下の画像は追加されたサービスを示しています。
-
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.jksとtruststore.jceksが必要です。 - Key Store の場合、
keystore.jksとkeystore.jceksが必要です。
- Trust Store の場合、
ranger-hive-security.xml
- 必須: いいえ
- 説明: Hive Catalog のために Ranger のアクセス制御を有効にするために使用される設定ファイル。
- ダウンロードリンク: ranger-hive-security.xml
ranger-hive-audit.xml
- 必須: いいえ
- 説明: Hive Catalog のために Ranger の監査ログサービスを有効にするために使用される設定ファイル。
- ダウンロードリンク: ranger-hive-audit.xml
Ranger 統合を作成する
-
CelerData Cloud BYOC コンソール にサインインします。
-
左側のナビゲーション ペインで Integration Hub を選択します。
-
Integration Hub ページで、Apache Ranger カードをクリックします。
-
Apache Ranger ページで、Create Configuration をクリックします。
-
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 -
Submit をクリックして統合を作成します。
クラスターに統合を適用する
-
CelerData Cloud BYOC コンソール にサインインします。
-
Clusters ページで、統合を適用したいクラスターをクリックします。
-
クラスター詳細ページの Cluster parameters タブで、Apache Ranger integration セクションの Apache Ranger Configurations ドロップダウン リストからクラスター用に作成した Ranger 統合を選択します。
-
Validate をクリックして、構成がクラスターに適用できるかどうかを確認します。
注記クラスターが実行中の状態にある場合にのみ、Ranger 構成を検証および適用できます。
-
検証が成功した場合、Apply をクリックして構成を適用します。
-
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 データにアクセスすると、これらのポリシーに基づいてアクセス制御が実施されます。