問合せサーバーへの接続

Oracle Cloud SQL問合せサーバーでは、Kerberosとパスワード・データベースの両方の認証がサポートされます。

問合せサーバー・データベースへの接続について

問合せサーバーがインストールされている場合、Hadoopクラスタのデータを問い合せるために、ユーザーは問合せサーバーに接続できます。Big Data SQLのインストール中、Big Data SQLインストーラによって、指定したエッジ・ノードにBDSQLUSR問合せサーバー・データベースが作成されてインストールされます。また、Hadoopクラスタのデータを問い合せることができるように、そのエッジ・ノードで必要なその他すべてのものもインストールされます。

問合せサーバー・ユーザーは、BDSQLUSRというプラガブル・データベースに接続します。データベースに接続する方法は複数あり、クラスタがセキュアかセキュアでないかに応じて異なります。

セキュアでないクラスタでは、ユーザーはデータベース・ユーザー名/パスワードを使用して接続できます。セキュアなクラスタでは、ユーザーはKerberosプリンシパルまたは通常のデータベース・ユーザー/パスワード(あるいはその両方)を使用してデータベースに接続できます。

セキュアなクラスタとセキュアでないクラスタの両方で、DBMS_BDSQS_ADMIN PL/SQLパッケージを使用してデータベース・ユーザーを作成する必要があります。さらに、セキュアでないクラスタでは、問合せサーバーにbdsqlという単一の事前構成済データベース・ユーザーがあり、そのパスワードは問合せサーバーのインストール時に設定されます。

デフォルトでは、問合せサーバーはTLS接続を使用するように構成されます。TLSで接続するには、まずクライアント・ウォレットを問合せサーバーからクライアント・ノードにコピーする必要があります。TLSが無効な場合、クライアント・ウォレットは必要ありません。

セキュアでないHadoopクラスタへの接続

問合せは、問合せサーバー認可の構成方法に応じて、2人のユーザーのいずれかとしてクラスタで実行されます。問合せサーバーがマルチユーザー認可で設定されている場合、問合せはOSユーザーbdsqlとしてHadoopクラスタで実行されます。マルチユーザー認可が構成されていない場合、シングルユーザー・モデルが使用され、問合せはユーザーoracleとして実行されます。

シングルユーザー・モデルでは、管理者が問合せサーバーのインストール中に選択したパスワードを使用して、すべてのユーザーがBDSQLUSR問合せサーバー・データベースにユーザーbdsqlとして接続します。

問合せは、oracleユーザー権限でクラスタ上で実行されます。つまり、Sentry権限(CDHクラスタ内)またはHDFS認可(あるいはその両方)を使用して、基礎となるHadoopデータへのアクセスをoracleユーザーに対して認可する必要があります。たとえば、次のようにSQL*Plusを使用して問合せサーバー・データベースに接続できます:

sqlplus BDSQL/<bdsql_password>@BDSQLUSR 
ノート

前述のコマンドの<bdsql_password>は、管理者がOracle Big Data SQLのインストール中に指定した実際のBDSQLパスワードに置き換えてください。
BDSQLユーザー・パスワードの変更
セキュアでないクラスタにクラウドSQL問合せサーバーをインストールする場合は、次のようにALTER USERを使用してBDSQLユーザーのパスワードを変更できます:
sqlplus / as sysdba
sql> alter user user identified by 'new_password' replace 'current_password';

現在のセッションのパスワードのみを変更することもできます:

# su - oracle
sqlplus / as sysdba
sql> alter session set container=bdsqlusr;
sql> alter user bdsql identified by "new_password";
ノート

new_passwordを新しいパスワードに置き換えてください。新しいパスワードは、必要なOracleのセキュアなパスワードに関するガイドラインに準拠している必要があります。新しいパスワードの選択の詳細は、Oracle Databaseセキュリティ・ガイドパスワードの保護に関するガイドラインを参照してください。

Kerberosで保護されているクラスタでは、ユーザーBDSQLは無効になります。

Kerberos認証を使用したセキュアなHadoopクラスタへの接続

セキュアなクラスタでは、Kerberosプリンシパルに対応する外部で識別されたデータベース・ユーザーを使用して接続できます。問合せサーバーに接続する前に、kinitを使用してKerberosで認証される必要があります。

このモードは、Kerberosプリンシパルに対応する、外部で識別されるユーザー・アカウントが複数存在する場合に使用します。bds-config.json構成ファイルでimpersonation_enabledパラメータがtrueに設定されている場合、Hadoopクラスタでの認可には接続ユーザーのアイデンティティ(Kerberosプリンシパル)が使用されます。このパラメータがfalseに設定されている場合、Hadoopクラスタでの認可はユーザーoracleとして実行されます。Sentryは、Cloudera Distribution including Hadoopを使用しているクラスタ上で使用されます。HDFS認可は、Oracle Distribution including Apache Hadoopを使用するクラスタで使用されます。

ノート

Hadoop Secure Impersonationを使用して、他の指定ユーザーにかわってタスクを実行するようにoracleアカウントに指示する方法について学習するには、『Oracle Big Data SQLユーザーズ・ガイド』マルチユーザー認可モデルを参照してください。
ユーザーのかわりにクラスタ上で実行されているHadoop問合せは、認証済ユーザーとしてHadoopノードに表示され、対応する権限を持ちます。Hive問合せおよび統計収集操作についても、同様です。問合せサーバーに接続するには、kinitを使用してKerberosで認証されている必要があります。セキュア・クラスタでBig Data問合せサーバーをインストールまたは再構成すると、Jaguarによって、Hadoop DataNodeもインストールされているノード上で稼働しているキー配布センター(KDC)からすべてのプリンシパルが収集されます。プリンシパルごとに、外部で識別されるユーザーがBig Data SQL問合せサーバー上に作成されます。このインストール時の動作は、bds-config.json構成ファイルのsyncPrincipalsパラメータによって制御されます。この操作は、次のコマンドを実行して呼び出すこともできます(Jaguar操作のスペルが異なることに注意してください):
jaguar sync_principals
問合せサーバーのユーザーを追加および削除するプロシージャを含む、DBMS_BDSQS_ADMINパッケージを使用することもできます。この問合せサーバー・ユーザーは、HadoopクラスタにアクセスするKerberosプリンシパルと同じです。
DBMS_BDSQS_ADMIN.ADD_KERBEROS_PRINCIPALS(principals_list varchar2, op_semantics varchar2 DEFAULT 'STOP_ON_FIRST_ERROR')

DBMS_BDSQS_ADMIN.DROP_KERBEROS_PRINCIPALS(principals_list varchar2, op_semantics varchar2 DEFAULT 'STOP_ON_FIRST_ERROR')  
ノート

DBMS_BDSQS_ADMINパッケージのプロシージャを実行する前に、OS認証を使用してOracle Big Data SQL問合せサーバーにユーザーsysとして接続する必要があります。たとえば、SQL*PlusにOSユーザーoracleとしてログインできます。Oracle Big Data SQLユーザーズ・ガイドOracle Big Data SQLリファレンスを参照してください。この情報はクラウドSQLにも適用されます。
マルチユーザー・モードのユーザーは、次のようにパスワードを指定せずにSQL*Plusに接続できます:
[user_name@cluster_name ~]$ kinit user_name 
Password for user_name@cluster_name.mycompany.com: 
[user_name@cluster_name ~]$ sqlplus /@BDSQLUSR

SQL*Plus: Release 18.0.0.0.0 - Production on Tue Oct 2 13:54:39 2018
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

Last Successful login time: Tue Oct 02 2018 13:54:20 -05:00

Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

SQL>
ノート

前述の例では、user_nameおよびcluster_nameに実際のユーザー名およびクラスタ名が反映されています。
パスワードベースのデータベース認証を使用したセキュアなHadoopクラスタへの接続

Kerberosプリンシパルを使用する以外に、パスワードを使用してデータベース・ユーザーとしてセキュアなクラスタ上の問合せサーバーに接続することもできます。

  1. TLS対応接続のクライアント・ウォレットを取得します。

  2. クライアントのユーザー名およびパスワードを使用して問合せサーバーに接続します。

    たとえば、ユーザーbdsql_user1として接続するには、次を使用できます:
    > connect bdsql_user1/"<example-password>"@BDSQLUSR