DLF-Auth は Data Lake Formation (DLF) のコンポーネントです。DLF のデータ権限機能を有効にし、データベース、テーブル、列、関数にきめ細かいアクセス制御を提供します。これにより、データレイクのデータ権限を統合的に管理できます。このトピックでは、DLF-Auth の権限を有効にする方法について説明します。
背景情報
Data Lake Formation (DLF) は、クラウドでデータレイクを迅速に構築するためのフルマネージドサービスです。データレイクに、統合された権限管理とメタデータ管理を提供します。詳細については、「Product Introduction」をご参照ください。
前提条件
OpenLDAP サービスが選択された E-MapReduce クラスターがあること。詳細については、「Create a cluster」をご参照ください。
「ソフトウェア構成」ページでは、Metadata のデフォルト値は DLF 統合メタデータ です。
制限事項
-
Data Lake Formation (DLF) の権限管理は、Resource Access Management (RAM) ユーザーにのみ対応しています。EMR コンソールのユーザー管理ページでユーザーを追加できます。
-
Data Lake Formation (DLF) のデータ権限管理機能に対応するリージョンについては、「Supported regions and endpoints」をご参照ください。
-
DLF-Auth で Hive または Spark を有効にした場合、Ranger で有効化または無効化することはできません。逆も同様です。
-
次の表に、DLF-Auth が対応する EMR バージョンとコンピューティングエンジンを示します。
EMR メジャーバージョン
Hive
Spark
Presto
Impala
EMR 3.x
EMR 3.39.0 以前
非対応
非対応
非対応
非対応
EMR-3.40.0
対応
対応
対応
非対応
EMR 3.41.0 ~ EMR 3.43.1
対応
対応
非対応
非対応
EMR 3.44.0 以降
対応
対応
対応
対応
EMR 5.x
EMR 5.5.0 以前
非対応
非対応
非対応
非対応
EMR 5.6.0
対応
対応
対応
非対応
EMR 5.7.0 ~ EMR 5.9.1
対応
対応
非対応
非対応
EMR 5.10.0 以降
対応
対応
対応
対応
操作手順
次の手順に従って DLF-Auth を有効にし、データレイクにフルマネージドの統合権限管理を実装します。
手順 1:Hive アクセスコントロールの有効化
-
DLF-Auth ページに移動します。
-
EMR on ECS にログインします。
-
上部メニューで、必要に応じてリージョンとリソースグループを選択します。
-
[EMR on ECS] ページで、管理したいクラスターを探し、[操作] 列の Services をクリックします。
-
Services ページで、DLF-Auth サービスセクションの Status をクリックします。
-
-
Hive アクセスコントロールを有効にします。
-
DLF-Auth サービスページで、[enableHive] スイッチをオンにします。
-
表示されるダイアログボックスで、OK をクリックします。
-
-
HiveServer を再起動します。
-
Services ページで、[Hive] サービスをクリックします。
-
Hive サービスページで、[HiveServer] を見つけ、アクション列で をクリックします。
-
表示されるダイアログボックスで、Execution Reason を入力し、OK をクリックします。
-
Confirm ダイアログボックスで、OK をクリックします。
-
手順 2:RAM ユーザーの追加
ユーザー管理機能を使用してユーザーを追加します。
-
ユーザー管理ページに移動します。
-
EMR on ECS にログインします。
-
上部メニューで、必要に応じてリージョンとリソースグループを選択します。
-
EMR on ECS ページで、管理したいクラスターを探し、操作列の Services をクリックします。
-
Users タブをクリックします。
-
-
Users ページで、Add User をクリックします。
-
Add User ダイアログボックスで、Username ドロップダウンリストから既存の RAM ユーザーを EMR ユーザー名として選択し、Password と Confirm Password フィールドにパスワードを入力します。
-
OK をクリックします。
手順 3:権限の検証
RAM ユーザーに AliyunDLFDssFullAccess 権限が付与されているか、AdministratorAccess が付与されている場合、その RAM ユーザーはすべてのきめ細かい DLF リソースへのアクセス権限を持ちます。この場合、データ権限を付与する必要はありません。
-
新しい権限を付与する前に、現在のユーザーの権限を検証します。
-
Secure Shell (SSH) プロトコルを使用してクラスターにログインします。詳細については、「Log on to a cluster」をご参照ください。
-
次のコマンドを実行して HiveServer2 にアクセスします。
beeline -u jdbc:hive2://master-1-1:10000 -n <user> -p <password>説明<user> と <password> は、「手順 2:RAM ユーザーの追加」で設定したユーザー名とパスワードを表します。
-
既存テーブルの情報を表示します。
たとえば、テストテーブルの情報を表示するには、次のコマンドを実行します。
testdb.testは実際の情報に置き換えてください。select * from testdb.test;現在のユーザーには必要な権限がないため、クエリは失敗し、権限エラーが返されます。
0: jdbc:hive2://xxx:10000> select * from testdb.test; 22/07/07 19:03:32 [main]: WARN conf.HiveConf: HiveConf of name hive.metastore.delta.compatible.mode.enabled does not e xist Error: Error while compiling statement: FAILED: HiveAccessControlException Permission denied: user [dlf-test] does not have [SELECT] privilege on [database=testdb/table=test/*]. Permission denied: DLF checkPermission failed. message=[Ac tion: CHECK_PERMISSIONS ErrorCode: NoPermission Message: Authorization Failed [4019], You have NO privilege 'Select' o n {acs:dlf:cn-hangzhou:xxx:metastore/catalogs/xxx/databases/testdb/tables/test}. Deny as def ault for Resource. Context ID:dd198392-9b30-4899-9b32-61e1a993bd55. --->Tips: Principal:acs:ram::xxx: user/dlf-test Not pass by dlf permission check. RequestId: C4EC27BE-31ED-5A4B-AD40-2C8EF60359C0] (state=42000,code=400 00)
-
-
RAM ユーザーに権限を追加します。
-
Data Lake Formation コンソールにログインします。
-
左側のナビゲーションペインで、 を選択します。
-
Grant Permissions ページで、Add Authorization をクリックします。
-
Add Authorization ページで、以下のパラメーターを設定します。
パラメーター
説明
[Principal]
[Principal Type]
デフォルトは RAM ユーザーです。
[Choose Principal]
Choose Principal ドロップダウンリストから、ステップ 2: RAM ユーザーの追加 で追加したユーザーを選択します。
[Resources]
[Authorization Method]
デフォルトはリソースベースの権限付与です。
[リソースタイプ]
適切なオプションを選択します。
この例では、メタデータテーブルを選択します。
[Permission]
[Data Permission]
この例では、[選択] を使用します。
[Permissions]
-
OK をクリックします。
-
-
新しい権限を付与した後に、現在のユーザーの権限を検証します。
ステップ 1 のサブステップ a の手順に従って、テーブル情報を再度表示します。必要な権限が付与されたため、クエリはテーブル情報を返すようになりました。
(オプション) 手順 4:Hive LDAP 認証の有効化
DLF-Auth 権限を有効にする場合は、Hive LDAP 認証も有効にすることを推奨します。これにより、Hive に接続するユーザーは、スクリプトを実行する前に LDAP によって認証されます。
-
クラスターサービスページに移動します。
-
EMR on ECS にログインします。
-
上部メニューで、必要に応じてリージョンとリソースグループを選択します。
-
[EMR on ECS] ページで、管理する クラスターを見つけ、「操作」列の Services をクリックします。
-
LDAP 認証を有効にします。
[サービス] タブで、Hive セクションの [ステータス] をクリックします。
enableLDAP スイッチをオンにします。
EMR V5.11.1 以降および EMR V3.45.1 以降の場合
[サービス概要] セクションで、[enableLDAP] スイッチをオンにします。
ダイアログボックスで、決定 をクリックします。
EMR V5.11.0 以前および EMR V3.45.0 以前の場合
Components セクションで [HiveServer] を見つけ、[アクション] 列で を選択します。
表示されるダイアログボックスで、Execution Reason フィールドに実行理由を入力し、決定 をクリックします。
[確認] ダイアログボックスで、決定 をクリックします。
HiveServer を再起動します。
[コンポーネントリスト] セクションで、[HiveServer] の [アクション] 列にある [再起動] をクリックします。
表示されるダイアログボックスで、[実行理由] フィールドに理由を入力し、[OK] をクリックします。
[確認] ダイアログボックスで、[OK] をクリックします。
> [enableLDAP]