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 の監査ログを使用します。
Kerberos を使用して認証する Ranger サーバーはサポートされていないことに注意してください。
このトピックでは、Ranger 統合による権限制御方法と統合プロセスについて説明します。データ セキュリティを管理するための Ranger でのセキュリティ ポリシーの作成方法については、Apache Ranger 公式ウェブサイト を参照してください。
設定可能なリソース オブジェクトと特権については、privilege items を参照してください。
権限制御方法
StarRocks は Apache Ranger と統合され、次の権限制御方法を提供します。
- グローバル アク セス制御: 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 を通じてユーザーのログイン認証を完了することもできます。
前提条件
-
Apache Ranger 2.1.0 以降がインストールされています。Apache Ranger のインストール手順については、Ranger quick start を参照してください。
-
すべての FE ノード (または弾性クラスターのコーディネーター ノード) が Apache Ranger にネットワーク アクセスできる必要があります。各ノードで次のコマンドを実行して確認できます。
telnet <ranger-ip> <ranger-port>
Connected to <ip>
が表示された場合、接続は成功しています。
StarRocks を Ranger と統合する
(オプション) 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
-
plugin-starrocks/target/ranger-starrocks-plugin-3.0.0-SNAPSHOT.jar と mysql-connector-j をダウンロードし、
starrocks
フォルダーに配置します。 -
Ranger Admin を再起動します。
ranger-admin restart