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 の内部テーブルおよびオブジェクトへのアクセスを管理します。
認証プロセス
- ユーザー認証には LDAP を使用し、Ranger を使用して LDAP ユーザー を同期し、アクセス ルールを設定することもできます。StarRocks も LDAP を通じてユーザーのログイン認証を完了できます。
- ユーザーがクエリを開始すると、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 を使用できません。ただし、それはサービスを正常に作成できないことを意味するわけではありません。
-
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.jar をダウンロードし、
starrocksフォルダーに配置します。 -
Ranger Admin を再起動します。
ranger-admin restart