Ranger を使用する
    • PDF

    Ranger を使用する

    • PDF

    Article Summary

    VPC環境で利用できます。

    Data Forestで Apache Rangerを利用してポリシーを設定し、自分のリソースを他のユーザーと共有する方法を説明します。Ranger UIにアクセスして使用できます。

    Rangerにアクセス

    1. Ranger UIにアクセスします。任意の Data Forestアプリのアクセス詳細情報内の Quick links部分で [アクセスの詳細情報を見る] ボタンをクリックして Ranger UIアクセスアドレスを確認できます。
    2. Username、Passwordに Data Forestアカウントの作成時に指定したユーザー名とパスワードを入力してログインします。
      df-eco-ranger_01_vpc_ko
    3. Rangerホーム画面で権限を設定できるコンポーネントが確認できます。
      • HDFS、Hiveに関する ACLを設定できます。この設定は 「Policy」という単位で構成されます。
        df-eco-ranger_02_vpc_ko
    参考

    YARNキューに対する権限は修正できません。YARNに対する ACLは、専用キューの機能を導入してから提供される予定です。

    HDFS ACLの設定

    HDFS ACLを設定する方法は、以下のとおりです。

    1. Apache Rangerホーム画面で HDFS > df_hadoop_koya または df_hadoop_tata をクリックします。
      • Df_hadoop_koya:: koyaネームスペースの下のファイルに対する ACL管理
      • Df_hadoop_tata: tataネームスペースの下のファイルに対する ACL管理
    2. [Add New Policy] ボタンをクリックします。
      • exampleユーザーが作成したディレクトリとファイル(/user/example/foo/user/example/bar)についての権限を example2に追加します。
        df-eco-ranger_04_vpc_ko
    3. Policyを設定します。
      • Policy Name: Policyの名前を設定(既に使用中の Policy名は使用不可)
      • Resource Path: ACLを設定する HDFSパスを入力
        • Data Forestユーザーは、HDFSでホームディレクトリhdfs:///user/$usernameパスにのみアクセスでき、ホームディレクトリ下位のファイルに対してのみ ACLを管理できる。(hdfs:///tmpと同様なパスは使用不可)
        • 前に hdfs:// schemeは入力せず、/user/$usernameで始まるパスを入力
        • 複数個入力可能
        • パスが有効かどうかを確認しないので、正確に入力
        • パスが「/」で終わらないように注意(例えば、/user/example/foo/とパスを入力するとfooにはアクセスできず、その下位に存在するサブディレクトリにのみアクセス可能)
      • Select Group: 権限を付与するグループを指定
        • このグループに属するすべてのユーザーに権限を付与
        • Data Forestですべてのユーザーはusersグループに属する。アカウント作成時、別途グループは指定不可
      • Select User: 権限を付与するユーザーを指定
      • Permission: 付与する権限を選択。(権限: Excute、Read、Write)
        • ディレクトリの場合、Execute権限がないとディレクトリ内のファイルリスト(lsコマンド)を取得できない
      • Delegate Admin
        • ユーザー/グループの Delegate Adminにチェックして管理者権限を委任した場合、そのユーザー/グループは Policyを管理可能。不特定多数に管理者権限を委任しないように注意が必要
      • Add Validity Period: 特定の期間中だけ Policyが適用されるように設定可能
        df-eco-ranger_05_vpc_ko
    4. [Add] ボタンをクリックします。Policyの作成が完了するまで約5分かかります。
    5. 新しい Policyが作成されたか確認します。
      df-eco-ranger_06_vpc_ko

    /user/exampleの構造は、以下のとおりです。
    パーミッションは'drwx------'です。Policyを追加してもこの権限自体は変更されません。

    $ hadoop fs -ls /user/example
    Found 9 items
    ...
    drwx------   - example services          0 2021-04-14 18:01 /user/example/bar
    drwx------   - example services          0 2021-04-14 18:01 /user/example/foo
    drwx------   - example services          0 2021-04-14 18:07 /user/example/foobar
    

    Policyで権限を付与したexample2アカウントで/user/example/foobarにアクセスしようとすると、foobarにのみ権限を与えたため、アクセスできないことが確認できます

    $ hadoop fs -ls /user/example/foobar
    s: Permission denied: user=example2, access=READ_EXECUTE, inode="/user/example/foobar":example:services:drwx------
    

    Policyで権限を付与したfoobarには正常にアクセスできることが確認できます。

    $ hadoop fs -ls /user/example/foo
    Found 1 items
    -rw-------   3 example services          0 2021-04-14 18:13 /user/example/foo/foo.txt
    $ hadoop fs -ls /user/example/bar
    Found 1 items
    -rw-------   3 example services          0 2021-04-14 18:14 /user/example/bar/bar.txt
    

    Read、Write、Execute権限を付与したため、以下のようにファイルをコピーできます。

    $ hadoop fs -copyToLocal /user/example/foo/foo.txt
    

    Hive ACLの設定

    Hiveデータベースとテーブルを作成する場合、所有者のみアクセスできます。他のユーザーがアクセスできるようにするには、Rangerを通じて権限を付与する必要があります。

    Hive ACLを設定する方法は、以下のとおりです。

    1. Rangerホーム画面で Hive > df_hive をクリックします。
    2. [Add New Policy] ボタンをクリックします。
    3. 情報を入力します。
      • Exampleユーザーのテーブルに対する権限をexample__db_foo.bar_tableに対する権限を example2に付与する例
        df-eco-ranger_08_vpc_ko
      • Policy Name: Policyの名前を設定。既に使用中の Policy名は使用不可
      • Database: ACLを設定するデータベースを入力。複数個を入力でき、当該データベースの存在有無は確認しない。
      • Table: ACLを設定するテーブルを入力
        • このテーブルの存在有無は確認しない
        • *ですべてのテーブルを指定可能
      • Hive Column: Data Forestはコラムレベルの ACLをサポートしなし。*を入力
      • Select Group: 権限を付与するグループを指定
        • このグループに属するすべてのユーザーに権限を付与
        • Data Forestですべてのユーザーはusersグループに属し、アカウントの作成時に別途グループの作成は指定不可
      • Select User: 権限を付与するユーザーを指定
      • Permission: 付与する権限を選択
      • Delegate Admin: ユーザー/グループの Delegate Adminにチェックして管理者権限を委任すると、そのユーザー/グループは当該 Policyが管理可能。不特定多数に管理者権限を委任しないように注意が必要
      • Add Validity Period: 権限の適用期間を設定可能
    4. [Add] ボタンをクリックします。Policyの作成が完了するまで約5分かかります。
    5. 新しい Policyが作成されたか確認します。
      df-eco-ranger_09_vpc_ko

    HDFS ACLの適用

    Hiveテーブルデータは HDFSに保存されているため、Hive ACL設定だけでなく HDFS ACLも提供します。HDFS ACLを設定しない場合、照会クエリが失敗します。

    テーブル照会のための HDFS ACL

    bar_tableにのみアクセス権限を付与します。bar_tableの下位にはすべて権限が付与されます(recursive)。

    Service: df_hadoop_koya
    Resource Path: /user/example/warehouse/example__db_foo.db/bar_table   (recursive)
    Select User: example2
    Permissions: Read/Execute
    

    データベースを使用するためのための HDFS ACL

    example__db_fooを使用するための権限です。以下のすべてのテーブルに権限を与えないため、non-recursiveに設定します。

    Service: df_hadoop_koya
    Resource Path: /user/example/warehouse/example__db_foo.db   (non-recursive)
    Select User: example2
    Permissions: Read/Execute
    
    参考

    DBまたはテーブル名にワイルドカード(*?)を使用できます。example__db_*と入力すると、exampleユーザーが作成したすべてのデータベースにアクセスできます。

    「Example2」アカウントで example__db_foo.bar_tableに対してクエリを実行できます。

    権限の設定前

    権限エラーが返されます。

    0: jdbc:hive2://zk1.kr.df.naverncp.com:2181,z> select * from example__db_foo.bar_table;
    Error: Error while compiling statement: FAILED: SemanticException Unable to fetch table bar_table. java.security.AccessControlException: Permission denied: user=example2, access=EXECUTE, inode="/user/example":example:services:drwx------
    
    0: jdbc:hive2://zk1.kr.df.naverncp.com:2181,z> use example__db_foo;
    Error: Error while compiling statement: FAILED: SemanticException MetaException(message:java.security.AccessControlException: Permission denied: user=example2, access=EXECUTE, inode="/user/example":example:services:drwx------
    

    権限の設定後

    権限の設定後に正常にアクセスすることを確認します。

    0: jdbc:hive2://zk1.kr.df.naverncp.com:2181,z> select * from example__db_foo.bar_table;
    INFO  : Compiling command(queryId=hive_20210415150318_9cd21ba3-9862-4310-9a53-69c5af0dd105): select * from example__db_foo.bar_table
    INFO  : Semantic Analysis Completed (retrial = false)
    INFO  : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:bar_table.id, type:bigint, comment:null)], properties:null)
    INFO  : Completed compiling command(queryId=hive_20210415150318_9cd21ba3-9862-4310-9a53-69c5af0dd105); Time taken: 0.096 seconds
    INFO  : Executing command(queryId=hive_20210415150318_9cd21ba3-9862-4310-9a53-69c5af0dd105): select * from example__db_foo.bar_table
    INFO  : Completed executing command(queryId=hive_20210415150318_9cd21ba3-9862-4310-9a53-69c5af0dd105); Time taken: 0.001 seconds
    INFO  : OK
    +---------------+
    | bar_table.id  |
    +---------------+
    +---------------+
    No rows selected (0.122 seconds)
    0: jdbc:hive2://zk1.kr.df.naverncp.com:2181,z> use example__db_foo;
    INFO  : Compiling command(queryId=hive_20210415150322_ac4aa103-4ae3-483f-b388-43040cede0b5): use example__db_foo
    INFO  : Semantic Analysis Completed (retrial = false)
    INFO  : Returning Hive schema: Schema(fieldSchemas:null, properties:null)
    INFO  : Completed compiling command(queryId=hive_20210415150322_ac4aa103-4ae3-483f-b388-43040cede0b5); Time taken: 0.02 seconds
    INFO  : Executing command(queryId=hive_20210415150322_ac4aa103-4ae3-483f-b388-43040cede0b5): use example__db_foo
    INFO  : Starting task [Stage-0:DDL] in serial mode
    INFO  : Completed executing command(queryId=hive_20210415150322_ac4aa103-4ae3-483f-b388-43040cede0b5); Time taken: 0.01 seconds
    INFO  : OK
    No rows affected (0.039 seconds)
    0: jdbc:hive2://zk1.kr.df.naverncp.com:2181,z> select * from bar_table;
    INFO  : Compiling command(queryId=hive_20210415150324_448ce1be-b913-4396-8232-92f76feb40e5): select * from bar_table
    INFO  : Semantic Analysis Completed (retrial = false)
    INFO  : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:bar_table.id, type:bigint, comment:null)], properties:null)
    INFO  : Completed compiling command(queryId=hive_20210415150324_448ce1be-b913-4396-8232-92f76feb40e5); Time taken: 0.096 seconds
    INFO  : Executing command(queryId=hive_20210415150324_448ce1be-b913-4396-8232-92f76feb40e5): select * from bar_table
    INFO  : Completed executing command(queryId=hive_20210415150324_448ce1be-b913-4396-8232-92f76feb40e5); Time taken: 0.001 seconds
    INFO  : OK
    +---------------+
    | bar_table.id  |
    +---------------+
    +---------------+
    

    この記事は役に立ちましたか?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.