問合せサーバーへの接続
Oracle Cloud SQL問合せサーバーでは、Kerberosとパスワード・データベースの両方の認証がサポートされます。
問合せサーバーがインストールされている場合、Hadoopクラスタのデータを問い合せるために、ユーザーは問合せサーバーに接続できます。Big Data SQLのインストール中、Big Data SQLインストーラによって、指定したエッジ・ノードにBDSQLUSR
問合せサーバー・データベースが作成されてインストールされます。また、Hadoopクラスタのデータを問い合せることができるように、そのエッジ・ノードで必要なその他すべてのものもインストールされます。
問合せサーバー・ユーザーは、BDSQLUSR
というプラガブル・データベースに接続します。データベースに接続する方法は複数あり、クラスタがセキュアかセキュアでないかに応じて異なります。
セキュアでないクラスタでは、ユーザーはデータベース・ユーザー名/パスワードを使用して接続できます。セキュアなクラスタでは、ユーザーはKerberosプリンシパルまたは通常のデータベース・ユーザー/パスワード(あるいはその両方)を使用してデータベースに接続できます。
セキュアなクラスタとセキュアでないクラスタの両方で、DBMS_BDSQS_ADMIN
PL/SQLパッケージを使用してデータベース・ユーザーを作成する必要があります。さらに、セキュアでないクラスタでは、問合せサーバーにbdsql
という単一の事前構成済データベース・ユーザーがあり、そのパスワードは問合せサーバーのインストール時に設定されます。
デフォルトでは、問合せサーバーはTLS接続を使用するように構成されます。TLSで接続するには、まずクライアント・ウォレットを問合せサーバーからクライアント・ノードにコピーする必要があります。TLSが無効な場合、クライアント・ウォレットは必要ありません。
問合せは、問合せサーバー認可の構成方法に応じて、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
パスワードに置き換えてください。 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プリンシパルに対応する外部で識別されたデータベース・ユーザーを使用して接続できます。問合せサーバーに接続する前に、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ユーザーズ・ガイド』のマルチユーザー認可モデルを参照してください。
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にも適用されます。[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
に実際のユーザー名およびクラスタ名が反映されています。Kerberosプリンシパルを使用する以外に、パスワードを使用してデータベース・ユーザーとしてセキュアなクラスタ上の問合せサーバーに接続することもできます。
-
TLS対応接続のクライアント・ウォレットを取得します。
-
クライアントのユーザー名およびパスワードを使用して問合せサーバーに接続します。
たとえば、ユーザーbdsql_user1
として接続するには、次を使用できます:> connect bdsql_user1/"<example-password>"@BDSQLUSR