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

Ranger認証

Apache Rangerは、Hadoopプラットフォーム上でのモニタリング、サービス有効化、および包括的なデータセキュリティアクセス管理に使用されるセキュリティフレームワークです。Rangerを使用すると、Ranger側で設定された権限が、認可のためのDorisでのGrant文の実行に代わって使用されます。Rangerのインストールと設定については、以下を参照してください: Installing and Configuring Doris Ranger Plugin。

Ranger例

Doris設定の変更

  1. fe/conf/fe.confファイルで、認可方式をranger access_controller_type=ranger-dorisとして設定します。

  2. すべてのFEのconfディレクトリに、以下の内容でranger-doris-security.xmlファイルを作成します:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
    <property>
    <name>ranger.plugin.doris.policy.cache.dir</name>
    <value>/path/to/ranger/cache/</value>
    </property>
    <property>
    <name>ranger.plugin.doris.policy.pollIntervalMs</name>
    <value>30000</value>
    </property>
    <property>
    <name>ranger.plugin.doris.policy.rest.client.connection.timeoutMs</name>
    <value>60000</value>
    </property>
    <property>
    <name>ranger.plugin.doris.policy.rest.client.read.timeoutMs</name>
    <value>60000</value>
    </property>
    <property>
    <name>ranger.plugin.doris.policy.rest.url</name>
    <value>http://172.21.0.32:6080</value>
    </property>
    <property>
    <name>ranger.plugin.doris.policy.source.impl</name>
    <value>org.apache.ranger.admin.client.RangerAdminRESTClient</value>
    </property>
    <property>
    <name>ranger.plugin.doris.service.name</name>
    <value>doris</value>
    </property>
    </configuration>

この中で、ranger.plugin.doris.policy.cache.dirranger.plugin.doris.policy.rest.url は実際の値に変更する必要があります。 3. クラスターを開始します。

権限の例

  1. Doris で user1 を作成します。
  2. Doris で、まず admin ユーザーを使用してCatalog: hive を作成します。
  3. Ranger で user1 を作成します。

グローバル権限

Doris 内部の認可ステートメント grant select_priv on *.*.* to user1 と同等です;

  • グローバルオプションは、catalog と同じレベルのドロップダウンボックスで見つけることができます。

  • 入力ボックスには * のみ入力できます。

    global

Catalog 権限

Doris 内部の認可ステートメント grant select_priv on hive.*.* to user1 と同等です;

catalog

Database 権限

Doris 内部の認可ステートメント grant select_priv on hive.db1.* to user1 と同等です;

database

Table 権限

ここで、「table」という用語は一般的にテーブル、ビュー、非同期マテリアライズドビューを指します。

Doris 内部の認可ステートメント grant select_priv on hive.db1.tbl1 to user1 と同等です;

table

Column 権限

Doris 内部の認可ステートメント grant select_priv(col1,col2) on hive.db1.tbl1 to user1 と同等です;

column

Resource 権限

Doris 内部の認可ステートメント grant usage_priv on resource 'resource1' to user1 と同等です;

  • resource オプションは、catalog と同じレベルのドロップダウンボックスで見つけることができます。

resource

Workload Group 権限

Doris 内部の認可ステートメント grant usage_priv on workload group 'group1' to user1 と同等です;

  • workload group オプションは、catalog と同じレベルのドロップダウンボックスで見つけることができます。

group1

行レベル権限の例

バージョン 2.1.3 でサポート

  1. 権限の例を参照して、user1internal.db1.user テーブルの select 権限を付与します。

  2. Ranger で、Row Level Filter ポリシーを追加します

    Row Policy Example

  3. user1 で Doris にログインします。select * from internal.db1.user を実行すると、条件 id > 3 かつ age = 2 を満たすデータのみが表示されます。

データマスキングの例

バージョン 2.1.3 でサポート

  1. 権限の例を参照して、user1internal.db1.user テーブルの select 権限を付与します。

  2. Ranger で、Masking ポリシーを追加します

    Data Mask Example

  3. user1 で Doris にログインします。select * from internal.db1.user を実行すると、電話番号が指定されたルールに従ってマスキングされていることが確認できます。

よくある質問

  1. Ranger アクセスが失敗した場合のログを確認するには?

    すべての FE の conf ディレクトリに以下の内容で log4j.properties ファイルを作成します:

    log4j.rootLogger = warn,stdout,D

    log4j.appender.stdout = org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target = System.out
    log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

    log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.D.File = /path/to/fe/log/ranger.log
    log4j.appender.D.Append = true
    log4j.appender.D.Threshold = INFO
    log4j.appender.D.layout = org.apache.log4j.PatternLayout
    log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

log4j.appender.D.Fileを実際のパスに変更してください。これはRangerプラグインのログを保存するために使用されます。 2. Row Level Filterポリシーが設定されているにも関わらず、ユーザーがクエリ時に権限拒否エラーに遭遇する。

Row Level Filterポリシーは、テーブルのデータ内の特定のレコードへのユーザーアクセスを制限するためのみに使用されます。ユーザーに対する認可は、ACCESS POLICYを通じて付与される必要があります。 3. サービス作成後、デフォルトでは'admin'ユーザーのみが権限を持つ` Root 'ユーザーには権限がない

図に示すように、サービス作成時に設定default.policy.usersを追加してください。フル権限を持つ複数のユーザーを設定する必要がある場合は、,で区切ってください。 default policy 4. 認証にRangerを使用した後、内部認可は依然として有効ですか?

現在、Rangerはグローバルレベルの権限設定をサポートしていないため、GRANT priv ON *.*.*のような内部認可は有効のままですが、他のレベルでの権限は機能しません。

Doris Ranger Pluginのインストールと設定

Pluginのインストール

  1. 以下のファイルをダウンロードしてください

  2. ダウンロードしたファイルをRangerサービスのranger-plugins/dorisディレクトリに配置してください。例:

    /usr/local/service/ranger/ews/webapp/WEB-INF/classes/ranger-plugins/doris/ranger-doris-plugin-3.0.0-SNAPSHOT.jar
    /usr/local/service/ranger/ews/webapp/WEB-INF/classes/ranger-plugins/doris/mysql-connector-java-8.0.25.jar
  3. Rangerサービスを再起動します。

  4. ranger-servicedef-doris.jsonをダウンロードします。

  5. 以下のコマンドを実行して、定義ファイルをRangerサービスにアップロードします:

    curl -u user:password -X POST \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    http://172.21.0.32:6080/service/plugins/definitions \
    -d@ranger-servicedef-doris.json

usernameとpasswordを、Ranger WebUIの実際のログイン認証情報に置き換えてください。

サービスアドレスとポートは、ranger-admin-site.xml設定ファイルのranger.service.http.port設定項目で確認できます。

実行が成功すると、次のようなJSON形式のサービス定義が返されます:

{
"id": 207,
"guid": "d3ff9e41-f9dd-4217-bb5f-3fa9996454b6",
"isEnabled": true,
"createdBy": "Admin",
"updatedBy": "Admin",
"createTime": 1705817398112,
"updateTime": 1705817398112,
"version": 1,
"name": "doris",
"displayName": "Apache Doris",
"implClass": "org.apache.ranger.services.doris.RangerServiceDoris",
"label": "Doris",
"description": "Apache Doris",
"options": {
"enableDenyAndExceptionsInPolicies": "true"
},
...
}

サービス定義を再作成したい場合は、以下のコマンドを使用してサービス定義を削除してから再アップロードできます:

curl -v -u user:password -X DELETE \
http://172.21.0.32:6080/service/plugins/definitions/207

207を、サービス定義作成時に返される実際のIDに置き換えてください。

削除する前に、Ranger WebUIで作成されたDorisサービスを削除する必要があります。

以下のコマンドを使用して現在のサービス定義一覧を表示し、IDを取得することもできます:

curl -v -u user:password -X GET \
http://172.21.0.32:6080/service/plugins/definitions/

プラグインの設定

インストール後、Ranger WebUIを開くと、Service Managerインターフェースでapache Dorisプラグインを確認できます:

ranger

プラグインの横にある+ボタンをクリックしてDorisサービスを追加します:

ranger2

Config Propertiesセクションには以下のパラメータがあります:

  • Username/Password:Dorisクラスターのユーザー名とパスワード。Adminユーザーの使用を推奨します。
  • jdbc.driver_class:Dorisに接続するために使用するJDBCドライバー。com.mysql.cj.jdbc.Driver
  • jdbc.url:DorisクラスターのJDBC URL接続文字列。jdbc:mysql://172.21.0.101:9030?useSSL=false
  • 追加パラメータ:
    • resource.lookup.timeout.value.in.ms:メタデータ取得のタイムアウト。10000に設定することを推奨します。これは10秒です。

Test Connectionをクリックして接続が成功するかどうかを確認できます。

Addをクリック後、Apache DorisプラグインのService Managerインターフェースで作成されたサービスを確認できます。サービスをクリックしてRangerの設定を開始します。