この項では、Oracle Big Data SQLが備えるセキュリティ機能、Big Data SQLを保護するために講じることができる対策、および保護された環境内でOracle Big Data SQLを構成するために必要な情報へのポインタについて説明します。
ネットワーク・セキュリティ
Oracle Big Data SQLでは、データベースとHadoopクラスタ間のネットワーク・トラフィックは、プライベート・インフィニバンド・ネットワークを経由することが保証されなくなりましたが、クライアント・ネットワーク経由で行われることがあります。このネットワーク・トラフィックは現在保護されていません。このため、保護されたHadoopクラスタ(たとえば、Kerberos対応のRPC暗号化)を運用している場合、Oracle Big Data SQLを使用するには、クライアント・ネットワークのすべてのメンバーが信頼できるものであるか、またはプライベート・ネットワーク接続がHadoopノードとOracle Databaseインスタンス間の通信専用に使用されている必要があります。このプライベート・ネットワークは、一般にBig Data SQLインターコネクト・ネットワークと呼ばれます。インターコネクト・ネットワークは、信頼できるユーザーのみのプライベート・ネットワークで、少なくとも1つのスイッチといくつかの10ギガビット・イーサネット・アダプタを使用する必要があります。HadoopクラスタおよびOracle RACクラスタのノードのみがインターコネクト・ネットワークにアクセスできるようにします。他のユーザー通信にインターコネクト・ネットワークを使用しないでください。
インストーラ・ファイルのセキュリティ
新しいJaguarインストーラは、セキュアなLinuxインストーラおよびアプリケーションを実現するために、次のベスト・プラクティスを組み込んでいます。
全ユーザーに書込み権限がある一時ファイルまたは永続ファイルは作成されません。
setuidファイルまたはsetgidファイルは使用されません。
また、インストーラは、Cloudera CDHおよびHortonworks HDPのセキュリティ・ドキュメントで説明されているように、堅牢なOracle Database環境の他、堅牢なCDHおよびHDPクラスタとも連携して機能します
パスワードの安全性
Jaguarインストーラは、次のパスワード・セキュリティ対策を備えています。
AmbariおよびCloudera Managerサーバー(管理サーバー)のパスワードは、コマンドラインでは渡されず、インストール時またはインストールの完了後、あるいはその両方で永続ファイルに保存されることもありません。
パスワードは、ログ・ファイルやトレース・ファイルに記録されません。
関連するソフトウェアのセキュリティ
Oracle Big Data SQLは、サードパーティ・プロジェクトなど他のインストールされたソフトウェアに依存します。このようなソフトウェアを最新のセキュリティ・パッチで最新の状態に保つのは、顧客の責任です。このようなソフトウェアには次のものがありますが、これに限定されません。
Java JDK
Python
Perl
不正な書込み/読取りアクセスを防止するために、HDFSファイル・アクセス権限を最小限に抑えておくことは、一般的に適切なセキュリティ上の措置です。このことは、HadoopクラスタがKerberosによって保護されているかどうかに関係なく言えることです。
Oracle Big Data SQLとの使用においてHadoopクラスタを保護する詳細なガイドラインは、My Oracle SupportのMOSドキュメント2123125.1を参照してください。
HadoopシステムでKerberosが有効になっている場合、Kerberosと連携するようにデータベース・サーバーでOracle Big Data SQLを構成する必要があります。このためには、Oracle Big Data SQLがインストールされる各データベース・ノード上にKerberosクライアントが必要です。また、データベースを所有するOSアカウント(oracleまたは別のアカウント)は、ユーザー・プリンシパルとしてプロビジョニングする必要があります。
保護されたHadoopクラスタ(たとえば、Kerberos対応のRPC暗号化)を運用している場合、Oracle Big Data SQLを使用するには、クライアント・ネットワークのすべてのメンバーが信頼できるものであるか、またはプライベート・ネットワーク接続がHadoopノードとOracle Databaseインスタンス間の通信専用に使用されている必要があります。このプライベート・ネットワークは、一般にBig Data SQLインターコネクト・ネットワークと呼ばれます。インターコネクト・ネットワークは、信頼できるユーザーのみのプライベート・ネットワークで、少なくとも1つのスイッチといくつかの10ギガビット・イーサネット・アダプタを使用する必要があります。HadoopクラスタおよびOracle RACクラスタのノードのみがインターコネクト・ネットワークにアクセスできるようにします。他のユーザー通信にインターコネクト・ネットワークを使用しないでください。
ユーザー・アクセスが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クライアントのインストール手順については、Oracle DatabaseノードでのKerberosクライアントのインストールを参照してください。
oracleユーザー用のKerberosプリンシパルの作成
Kerberos鍵配布センター(KDC)サーバーで、rootとなってkadmin.localを使用し、oracleユーザーのプリンシパルを追加します。
# kadmin.localkadmin.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
Oracle Big Data SQLで自動化されるKerberosタスク
次のKerberosタスクが自動化されるようになりました。
KeytabとKerberos構成ファイルの配布ファイルの配布。
Oracle Big Data SQLインストールは、oracleユーザーやその他のデータベース所有者のkeytabおよびKerberos構成ファイルをHadoop DataNode (およびOracle Databaseコンピュート・ノード)に自動的に配布するように構成できるようになりました。これが実行されるのは、プリンシパル名およびkeytabファイルの場所のパラメータがJaguar構成ファイルに設定されている場合です。この自動化は、Hadoop側とOracle Database側の両方で実行されます。
Oracle Big Data Applianceで、keytabファイルの配布はoracleアカウントに対してデフォルトで実行されるため、このアカウントのプリンシパルおよびkeytabファイルのパスを構成ファイルに追加する必要はありません。
指定されたプリンシパルのKerberosチケットの取得。
Jaguar構成ファイルにリストされたoracleとその他のプリンシパルの場合、インストールは各Hadoop DataNodeおよびOracle DBコンピュート・ノードでKerberosチケットを取得します
チケット更新
インストールは、構成のプリンシパルごとにkinitで新しいチケットを毎日4回取得するように、HadoopクラスタおよびOracle Databaseでcronジョブを自動的に設定します。
チケットの有効期限後のクリーン・アップ
bd_cellプロセスが保護されたHadoopクラスタのノードで実行されているのに、Kerberosチケットが有効でない場合、セルは検疫ステータスになります。そのような検疫をすべて削除する必要があります。
すべてのHadoopクラスタ・ノードで、oracleユーザーが有効なKerberosチケットを持っていることを確認します。
各クラスタ・ノードで、oracleになり、次のコマンドを実行します。
$ /opt/oracle/bd_cell/cellsrv/bin/bdscli
bdscliシェルで、次のように入力します。
list quarantine
drop quarantine <id>
exitと入力し、bdscliを終了します。
Oracle Databaseシステムが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で登録する必要があります。
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での透過的暗号化: ディスクにあるデータを保護します。データの暗号化と復号化は、データを使用するアプリケーションに対して透過的です。
HTTPS/ネットワーク暗号化: Cloudera Manager、Hue、OozieおよびHadoop Web UIにHTTPSを提供します。また、YARNシャッフルやRPCを通じて行われた転送など、他の内部Hadoopデータ転送に対してネットワーク暗号化を有効にします。
関連項目:
使用可能なセキュリティ機能の詳細は、『Oracle Big Data Applianceソフトウェア・ユーザーズ・ガイド』を参照してください。Oracle Big Data Applianceソフトウェアのご使用のリリースに関するこのガイドおよびその他のドキュメントは、Oracle Help Centerの「Big Data」セクションで入手できます。このガイドで説明するデータベース認証機能を使用すると、不正で悪意のある可能性があるプロセス(どこからでも開始できます)がHadoopクラスタのDataNodeにあるOracle Big Data SQLセル・サーバー・プロセスに接続するのを防ぐことができます。
Oracle DatabaseとOracle Big Data SQL間の接続にイーサネットが選択されている場合、デフォルトでインストール時にこの保護された認証フレームワークが自動的に設定されます。データベース認証は、インフィニバンド接続の構成オプションとしても使用できます。
マルチユーザー認可機能により、Hadoop Secure Impersonationを使用して、oracleアカウントに対し、他の指定のユーザーのかわりにタスクを実行するように指示できます。これにより、唯一のoracleユーザーだけでなく、問合せを現在実行しているユーザーに基づいてHDFSデータにアクセスできるようになります。
管理者は、問合せユーザー(現在接続されているユーザー)を識別し、このユーザーを偽装ユーザーにマップするためのルールを設定できます。ユーザーがOracle Databaseに接続する方法が多数あるため、データベース・ユーザー、LDAPを元にするユーザー、Kerberosを元にするユーザー、他のソースを元にするユーザーなどがこのユーザーになります。ファイルに対する認可ルールは問合せユーザーに適用され、監査により、そのユーザーが問合せユーザーであると識別されます。
関連項目:
『Oracle Big Data SQLユーザーズ・ガイド』のDBMS_BDSQL PL/SQLパッケージに関する項では、マルチユーザー認可セキュリティ表およびその表に対してユーザー・マップを追加および削除するためのプロシージャについて説明しています。