4.3 Oracle Big Data SQLでのSentry認証
Oracle Big Data SQLでは、HDFSファイル・アクセスの認可のサポートに加えて、Hiveメタデータへのアクセスを認可するSentryポリシーもサポートしています。Sentryによって、列レベルまでのユーザー・アクセスをきめ細かく制御できます。
ノート: Oracle Database 12.1システム上のBig Data SQLインストールでは、Sentryはサポートされていません。
4.3.1 Sentryおよびマルチユーザー認可
Oracle Big Data SQLは、HadoopクラスタでSentryが有効になっている場合は常に、Sentryポリシーを使用します。Oracle Big Data SQLでのSentryのサポートは、マルチユーザー認可システムと併用する場合に最も効果的です。マルチユーザー認可では、現在接続しているユーザーの実際のアイデンティティに基づいて、Sentry認証を有効にします。
マルチユーザー認可が有効になっていない場合は、すべての問合せの認可にoracle
プロキシ・ユーザーが使用されます。Sentryは、oracle
プロキシ・ユーザーのルールで適切に構成されている必要があります。
関連項目:
- この章の前の項のマルチユーザー認可モデル。
- DBMS_BDSQL PL/SQLパッケージには、SYS.BDSQL_USER_MAP、および表を管理するためのプロシージャについて説明が示されています。
- Oracle Big Data SQLインストレーション・ガイドのJaguar構成パラメータおよびコマンド・リファレンスでは、Jaguarパラメータを使用してOracle Big Data SQLのセキュリティ機能を構成する方法について説明しています。
impersonation_enabled
パラメータは、マルチユーザー認可(ApacheのHadoop Secure Impersonationに基づく)を有効または無効にします。
4.3.2 Sentryのグループ、ユーザーおよびロールベースのアクセス制御
Oracle Big Data SQLは、Hive表へのアクセスを直接制御しません。Hiveデータベース管理者によって定義されたアクセス制御が考慮されます。Sentryの場合、これらの制御はロールベースです。特定のユーザーのアクセス権は、グループ・メンバーシップおよびそのグループに割り当てられたロールによって定義されます。
管理者は、HiverServer2 Beelineユーティリティなどのツールを使用して、Hive表とその列に権限(SELECTおよびINSERTなど)を割り当てます。また、管理者は、Sentryロールの作成、別のユーザー・グループへのロールの割当ておよびそれらのロールへの権限の付与を行います。Hadoop環境で操作するHadoopユーザーは、自分のグループに割り当てられた各ロールからすべての権限を継承します。
CREATE ROLE auditfixedcosts;
GRANT SELECT ON TABLE salary TO ROLE auditfixedcosts;
また、他のサーバー上または他のデータベース、表または列内のデータにアクセスするために、auditfixedcostsロールに権限を付与することもできます。 管理者は、auditfixedcostsロールをグループに割り当てます。
GRANT ROLE fixedcosts TO GROUP finance;
財務グループのメンバーは、給与表のすべてのデータに対するSELECTアクセス権、auditfixedcostsロールに付与されたその他のSELECTアクセス権、および財務グループに付与されたその他のロールから継承したアクセス権を持っています。
関連項目:
- ClouderaのWebサイトのHive SQL Syntax for Use with Sentryでは、Sentryの権限を構成する方法について説明しています。
- 詳細は、https://sentry.apache.orgにあるApache Foundationのドキュメントを参照してください。
4.3.3 Oracle Big Data SQLでSentryを使用する方法
Oracle Big Data SQLでSentryを使用すると、Hive表を介してOracle外部表への問合せを試行する個々のOracle Databaseユーザーに対して、SELECT権限を付与または保留できます。
そのため、SentryポリシーをOracle外部表にレプリケートする(GRANTを使用する)必要がなくなり、管理が簡単になります。
Sentryを使用して、次のスコープ・レベルでSELECT権限を制御できます。
- サーバー(クラスタ・ノード)
- Hiveデータベース
- Hive表内の特定の列
Big Data SQLはDML操作をサポートしていません。そのため、SELECT権限のみがBig Data SQL問合せに適用されます。Sentryの権限ALL、OWNER、CREATE、INSERTおよびREFRESHは、Big Data SQLアクセスには関係ありません。
Big Data SQLがSentryを使用して問合せの実行時にアクセスを決定する方法
Big Data SQLは、最初にマルチユーザー認証を使用して対応するクラスタ・ユーザーを決定します。マルチユーザー認証が有効になっていない場合、oracle
ユーザーを使用します。ユーザーがHive表を介してOracle外部表に対して問合せを実行すると、Big Data SQLはHadoopユーザーに付与されたロールベースのSentryの権限をチェックし、現在のHive表に対して作成されたOracle外部表にこれらを適用します。次に、これらを問合せの実行に必要な権限と比較します。ユーザーに付与された権限が問合せの要件を満たしていない場合は、例外が発生します。
4.3.4 Sentryに対するOracle Big Data SQL権限関連の例外
ユーザーのSentry権限が問合せの実行に十分でない場合、Oracle Big Data SQLは2つの例外のいずれかを発生させます。
例外およびエラーは次のように返されます。
- 表レベルの権限の例外:
"User <the user> does not have SELECT privileges on oracle table <external table name> for Server=<server name>->Db=<Hive db name>->Table=<table name>”
- 列レベルの権限の例外:
"User <the user> does not have SELECT privileges on oracle table <external table name> column <column name> for Server=<server name>->Db=<Hive db name>->Table=<table name>->Field=<field name>”