Linuxコマンドモードは、Kerberosがオンになった後、ハイブ歩哨許可の配布を実現します

1. Hiveクラスターのすべてのノードにリーダーとライターの2つのグループを作成し、対応するグループの下にそれぞれリーダーとライターのユーザーを作成します
[root@fan102 ~]# groupadd reader
[root@fan102 ~]# useradd -g reader reader
[root@fan102 ~]# passwd reader

[root@fan102 ~]# groupadd writer
[root@fan102 ~]# useradd -g writer writer
[root@fan102 ~]# passwd writer

2. Sentry管理者ユーザーハイブを使用して、beelineクライアントを介してHiveServer2に接続します

​[root@fan102 ~]# kinit -kt /var/keytab/hive.keytab hive/[email protected]
[root@fan102 ~]# beeline -u "jdbc:hive2://fan102:10000/;principal=hive/[email protected]"

2.1.1创建ロール(reader_role、writer_role)

> CREATE ROLE reader_role;
> CREATE ROLE writer_role;

2.1.2役割の破棄(writer_role)

> DROP ROLE writer_role;

2.2.1ロールに権限を付与する

> GRANT select ON DATABASE dd TO ROLE reader_role;
> GRANT insert ON DATABASE dd TO ROLE writer_role;

2.2.2権限がテーブルに対して正確である場合は、次の方法を使用できます。

> GRANT insert ON TABLE dd.teacher TO ROLE writer_role;

2.2.3権限の取り消し(GRANTと組み合わせると権限変更操作を実現できます)

> REVOKE insert ON DATABASE dd FROM ROLE writer_role;
> REVOKE insert ON TABLE dd.teacher FROM ROLE writer_role;

2.3.1ユーザーグループに役割を付与する

> GRANT ROLE reader_role TO GROUP reader;
> GRANT ROLE writer_role TO GROUP writer;

2.3.2ユーザーグループに付与されたロールを取り消す

> REVOKE ROLE writer_role FROM GROUP writer;

3.付与された権限を表示します

3.1すべての役割(管理者)を表示する
> SHOW ROLES;

3.2指定したユーザーグループの役割(管理者)を表示する

> SHOW ROLE GRANT GROUP reader;

3.3現在認証されているユーザーの役割を表示する

> SHOW CURRENT ROLES;

3.4指定されたROLE(管理者)の特定の権限を表示する

> SHOW GRANT ROLE reader_role;

 

3.5役割の承認されたすべてのグループを表示する

現在、ロールの下で許可されたすべてのユーザーグループを取得する(SHOW GRANT ROLE reader_role;)のようなステートメントはありませんが、Hue管理インターフェイスを介して、またはSQLを使用してSentryデータベースに直接クエリを実行して取得できます。

SELECT g.GROUP_NAME
FROM SENTRY_GROUP g
JOIN SENTRY_ROLE_GROUP_MAP rg
on rg.GROUP_ID = g.GROUP_ID
JOIN SENTRY_ROLE r
ON r.ROLE_ID = rg.ROLE_ID
WHERE r.ROLE_NAME='reader_role'

4.許可テスト

4.1リーダーとライター用のKerberosプリンシパルを作成する

[root@fan102 ~]# kadmin.local -q "addprinc reader/reader"
Authenticating as principal root/[email protected] with password.
WARNING: no policy specified for reader/[email protected]; defaulting to no policy
Enter password for principal "reader/[email protected]": (输入密码)
Re-enter password for principal "reader/[email protected]": (输入密码)
Principal "writer/[email protected]" created.

[root@fan102 ~]# kadmin.local -q "addprinc writer/writer"
Authenticating as principal root/[email protected] with password.
WARNING: no policy specified for writer/[email protected]; defaulting to no policy
Enter password for principal "reader/[email protected]": (输入密码)
Re-enter password for principal "writer/[email protected]": (输入密码)
Principal "writer/[email protected]" created.

4.2指定されたディレクトリ/ var / keytab /にkeytabファイルを生成します

[root@fan102 ~]# kadmin.local -q "xst -k /var/keytab/writer.keytab writer/[email protected]"
[root@fan102 ~]# kadmin.local -q "xst -k /var/keytab/reader.keytab reader/[email protected]"

4.3リーダーを使用してHiveServer2にログインし、ddライブラリ内の任意のテーブルをクエリします

[root@fan102 ~]# kinit -kt /var/keytab/reader.keytab reader/[email protected]
[root@fan102 ~]# beeline -u "jdbc:hive2://fan102:10000/;principal=hive/[email protected]"

4.4ライターを使用してHiveServer2にログインし、ddライブラリ内の任意のテーブルをクエリします

[root@fan102 ~]#  kinit -kt /var/keytab/writer.keytab writer/[email protected]
[root@fan102 ~]# beeline -u "jdbc:hive2://fan102:10000/;principal=hive/[email protected]"

4.5クエリ結果

reader有对于dd库中表的查询权限,而writer没有。说明授权生效。

5. hdfsユーザー(作成されない)の例は、cat1ユーザーファイルを作成し、ドメイン内のcatsユーザーのcat1ユーザーに属することです。

hadoop fs -mkdir /user/cat1
hadoop fs -chown cats:cat1 /user/cat1

6.補足

  ユーザー グループ 調子
Linux 個別に作成できます
ケルベロス 同時に作成
hdfs 同時に作成
ハイブ     Kerberosエンティティに従って区別されるユーザーを作成する必要はありません

+++++++++++++++++++++++++++++++++++++++++++ご不明な点がございまし
たら、 + Q:1602701980一緒に話し合う
++++++++++++++++++++++++++++++++++++++++++

おすすめ

転載: blog.csdn.net/shenyuye/article/details/107353047