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プロキシ・ユーザーのルールで適切に構成されている必要があります。

関連項目:

4.3.2 Sentryのグループ、ユーザーおよびロールベースのアクセス制御

Oracle Big Data SQLは、Hive表へのアクセスを直接制御しません。Hiveデータベース管理者によって定義されたアクセス制御が考慮されます。Sentryの場合、これらの制御はロールベースです。特定のユーザーのアクセス権は、グループ・メンバーシップおよびそのグループに割り当てられたロールによって定義されます。

管理者は、HiverServer2 Beelineユーティリティなどのツールを使用して、Hive表とその列に権限(SELECTおよびINSERTなど)を割り当てます。また、管理者は、Sentryロールの作成、別のユーザー・グループへのロールの割当ておよびそれらのロールへの権限の付与を行います。Hadoop環境で操作するHadoopユーザーは、自分のグループに割り当てられた各ロールからすべての権限を継承します。

たとえば、給与データへのアクセスを提供するために、管理者はこの目的のためにロールを作成して、そのロールにSELECT権限を付与できます。
CREATE ROLE auditfixedcosts;
GRANT SELECT ON TABLE salary TO ROLE auditfixedcosts;
また、他のサーバー上または他のデータベース、表または列内のデータにアクセスするために、auditfixedcostsロールに権限を付与することもできます。

管理者は、auditfixedcostsロールをグループに割り当てます。

GRANT ROLE fixedcosts TO GROUP finance;

財務グループのメンバーは、給与表のすべてのデータに対するSELECTアクセス権、auditfixedcostsロールに付与されたその他のSELECTアクセス権、および財務グループに付与されたその他のロールから継承したアクセス権を持っています。

関連項目:

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>”