この項では、Big Data SQLを保護し、保護された環境内でソフトウェアを構成するために講じることができる対策について説明します。
不正な書込み/読取りアクセスを防止するために、HDFSファイル・アクセス権限を最小限に抑えておくことは、一般的に適切なセキュリティ上の措置です。このことは、HadoopクラスタがKerberosによって保護されているかどうかに関係なく言えることです。
Oracle Big Data SQLとの使用においてHadoopクラスタを保護する詳細なガイドラインは、My Oracle SupportのMOSドキュメント2123125.1を参照してください。
HadoopシステムでKerberosが有効になっている場合、Kerberosと連携するようにデータベース・サーバーでOracle Big Data SQLを構成する必要があります。そのためには、Kerberosクライアントがデータベースの各ノードで必要になります。
コモディティ・サーバーの場合、選択したリポジトリからKerberosクライアント・ソフトウェアをダウンロードします。データベース・サーバーがOracle Exadata Database Machineの場合は、次に示すOracleリポジトリからソフトウェアをダウンロードしてインストールします。このプロセスは、Oracle以外のリポジトリからのダウンロードの場合と同様です。
rootとしてデータベース・サーバーにログオンし、yumを使用してkrb5-libs
パッケージとkrb5-workstation
パッケージをインストールします。必要に応じて、Oracle Linux 6またはOracle Linux 5リポジトリからダウンロードします。
OracleリポジトリID public-yum-ol6
またはpublic-yum-ol5
がインストールされていることを確認します。
# yum repolist
# yum --disablerepo="*" --enablerepo="public-yum-ol6" list available
Kerberosのパッケージをインストールします。
# yum install krb5-libs krb5-workstation
/etc/krb5.conf
ファイルを鍵配布センター(KDC)からデータベース・サーバー上の同じパスにコピーします。
この手順は、各Oracle Databaseノードに対して実行する必要があります。
また、「Kerberos化されたクラスタへのOracle Big Data SQLアクセスの有効化」の説明に従って、oracle
Linuxユーザー(または他のLinuxユーザー)およびパスワードをクラスタのKDCで登録する必要があります。
ユーザー・アクセスがKerberosによって管理される環境では、Kerberosを使用するようにOracle Big Data SQLを構成する必要があります。
これが必要となる状況には、次の2つがあります。
Kerberosが有効化されたクラスタでOracle Big Data SQLを有効化する場合。
Oracle Big Data SQLがすでにインストールされているクラスタでKerberosを有効化する場合。
Oracle Big Data SQLプロセスは、Hadoop クラスタのノードでoracle
Linuxユーザーとして実行します。Oracle Databaseサーバーでは、Oracle Databaseプロセスの所有者も(通常)oracle
Linuxユーザーです。HadoopシステムでKerberosが有効になっている場合、ユーザーがHDFSにアクセスできるようにするには、次のことが必要です。
oracle
Linuxユーザーは、Kerberos鍵配布センター(KDC)サーバーのKerberosデータベースでプリンシパルとして認証できる必要があります。Kerberosでのプリンシパル名が'oracle'である必要はありません。ただし、プリンシパルには、Oracle Big Data SQLによってリクエストされる基礎となるHadoopデータへのアクセス権が必要です。
Oracle Big Data SQLを実行しているすべてのOracle DatabaseノードおよびすべてのHadoopクラスタ・ノードで、次のことが必要です。
Kerberosクライアント・ソフトウェアがインストールされていること。
KDCからのKerberos構成ファイルのコピー。
oracle
ユーザー用にKDCで生成されたKerberos keytabファイルのコピー。
oracle
Linuxユーザー用の有効なKerberosチケット。
Kerberosクライアントのインストール
Kerberosクライアントがインストールされていない場合、Kerberosクライアントのインストール手順については、「データベース・サーバーでのKerberosクライアントのインストール」を参照してください。
oracleユーザー用のKerberosプリンシパルの作成
Kerberos鍵配布センター(KDC)サーバーで、root
となってkadmin.local
を使用し、oracle
ユーザーのプリンシパルを追加します。
# kadmin.local
kadmin.local内で、次のように入力します。
add_principal <user>@<realm> quit
次のように、パスワードを入力することもできます。
add_principal <user>@<realm> -pw <password> quit
oracleユーザー用のKerberos Keytabの作成
KDCで、root
となって次を実行します。
# kadmin.local
kadmin.local
内で、次のように入力します。xst –norandkey -k /home/oracle/oracle.keytab oracle quit
これにより、Kerberos oracle
ユーザー用のoracle.keytab
ファイルが/home/oracle
ディレクトリに作成されます。
oracle.keytab
をoracle
Linuxユーザーが所有し、そのユーザーのみが読み取れるようにします。$ chown oracle oracle.keytab $ chmod 400 oracle.keytab
KeytabおよびKerberos構成ファイルの配布
KDCにログオンし、これらのローカル・ファイルを、Oracle Big Data SQLを使用する各Hadoopクラスタ・ノードおよびすべてのOracle Databaseコンピュート・ノード上の同じパスにコピーします。
oracle
ユーザーになって/home/oracle/oracle.keytab
を各ノードの/home/oracle/oracle.keytab
にコピーします。
root
になってKerberos構成ファイル/etc/krb5.conf
を各ノードの/etc/krb5.conf
にコピーします。
ファイルに対する元の権限を必ず保有しておきます。
各ノードでのoracle用のKerberosチケットの取得
各Hadoop DataNodeのoracle
ユーザーおよび各Oracle Databaseコンピュート・ノードのデータベース所有者(通常oracle
Linuxユーザーでもある)には、Kerberosを使用して接続するために有効なチケットが必要です。
Kerberosクライアントをインストールし、krb5.conf
ファイルとoracle.keytab
ファイルを所定の場所に配置した後、oracle
ユーザーとして各ノードにログオンしてチケットを取得します。
oracle
ユーザーとしてログオンします。
oracle
アカウントに対してkinit
を実行します。
$ /usr/bin/kinit oracle -k -t /home/oracle/oracle.keytab
この例で示すようにユーザーのkeytabが定義されている場合、パスワードは不要です。keytabファイルを渡さずに/usr/bin/kinit oracle
を使用することもできますが、その場合、プリンシパルに定義されているパスワードの入力を求められます。
有効なチケットの確認
ノードごとにチケットを取得した後、(または、チケットの妥当性が不確かな場合)、klist
を使用して有効なチケットを確認できます。
$ /usr/bin/klist Kerberos Utilities for Linux: Version 12.1.0.2.0 - Production on 19-SEP-2016 07:45:20 Copyright (c) 1996, 2014 Oracle. All rights reserved. Ticket cache: /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/krbcache Default principal: <userID>@<realm>
有効なチケットがない場合は、次のようなメッセージが表示されます。
klist: No credentials cache found
チケットの有効期限後のクリーン・アップ
bd_cellプロセスが保護されたHadoopクラスタのノードで実行されているのに、Kerberosチケットが有効でない場合、セルは検疫ステータスになります。そのような検疫をすべて削除する必要があります。
すべてのHadoopクラスタ・ノードで、oracle
ユーザーが有効なKerberosチケットを持っていることを確認します。
各クラスタ・ノードで、oracle
になり、次のコマンドを実行します。
$ /opt/oracle/bd_cell/cellsrv/bin/bdscli
bdscliシェルで、次のように入力します。
list quarantine
drop quarantine <id>
exit
と入力し、bdscliを終了します。
Kerberosチケットの自動更新による期限切れの回避
oracle
ユーザーには、HadoopクラスタにアクセスするすべてのOracle Databaseインスタンスで有効なKerberosチケットが必要です。有効なチケットは、Hadoopノードのoracle
ユーザーにも必要で、このユーザーが各Big Data SQLプロセスを所有するためです。
チケットの更新を自動化することをお薦めします。cron
または同様のユーティリティを使用してkinit
を実行し、チケットの有効期限を経過する前にユーザーの新しいチケットを取得します。(チケットの有効期間は/etc/krb5.conf
に記録されます。)
たとえば、すべてのノードで、次のようにoracle
ユーザーのcrontabにジョブを追加できます。
ユーザー(oracle
など)としてログオンします。
crontab -e
を使用してユーザーのcrontabを編集します。
$ crontab -e
チケットの有効期限が切れる前に更新するようにスケジュールおよびコマンドを含んだ行を追加します。たとえば、チケットの有効期限が2週間ごとに切れる場合は、この例で示すように13日ごとに更新します。
15 1,13 * * * /usr/bin/kinit oracle -k -t /home/oracle/oracle.keytab
Oracle Databaseサーバーで、Oracle Secure External Password Store (SEPS)を使用して、Oracle Big Data SQLのデータベース・アクセス資格証明を管理できます。
そのためには、oracle
Linuxユーザー(または他のデータベース所有者)用にOracleウォレットを作成します。Oracleウォレットは、認証の格納と資格証明への署名のために使用されるパスワード保護されたコンテナで、SSLで必要とされる秘密鍵、証明書および信頼できる証明書が含まれます。
SEPSをOracle Big Data SQLとともに使用する方法の詳細は、My Oracle SupportでMOSドキュメント2126903.1を参照してください。
HadoopシステムがOracle Big Data Applianceである場合、セキュリティを強化するために次のツールがすでに使用可能です。
Kerberos認証: ユーザーおよびクライアント・ソフトウェアは、クラスタにアクセスする前に資格証明を提供する必要があります。
Apacheセキュリティ認証: データおよびメタデータにファイングレインのロールベース認証を提供します。
HDFSでの透過的暗号化: ディスクにあるデータを保護します。データの暗号化と復号化は、データを使用するアプリケーションに対して透過的です。
Oracle Audit Vault and Database Firewall監視: Oracle Big Data Appliance上のAudit Vaultプラグインは、MapReduce、HDFSおよびOozieサービスから監査およびロギング・データを収集します。そうすると、Audit Vault Serverを使用してOracle Big Data Appliance上でこれらのサービスを監視できるようになります。
関連項目:
使用可能なセキュリティ機能の詳細は、Oracle Big Data Applianceガイドを参照してください。Oracle Big Data Applianceソフトウェアのご使用のリリースに関するこのガイドおよびその他のドキュメントは、Oracle Help Centerの「Big Data」セクションで入手できます。