8 Oracle Big Data SQLインストールの保護
この項では、Oracle Big Data SQLが提供するセキュリティ機能について説明します。また、Oracle Big Data SQLインストールを保護するために講じることができる対策についても説明し、保護された環境内でOracle Big Data SQLインストールを構成するために必要な情報へのポインタを提供します。
8.1 セキュリティの概要
この項では、インストーラ、ネットワーク、ファイルおよびパスワードのセキュリティについて説明します。
ネットワーク・セキュリティ
Oracle Big Data SQLでは、データベースとHadoopクラスタ間のネットワーク・トラフィックは、プライベート・インフィニバンド・ネットワークを経由することが保証されなくなりましたが、クライアント・ネットワーク経由で行われることがあります。このネットワーク・トラフィックは現在保護されていません。このため、保護されているHadoopクラスタ(Kerberos対応のRPC暗号化など)を運用している場合、Oracle Big Data SQLでは次のいずれかが必要になります。
- クライアント・ネットワークのすべてのメンバーが信頼されていること
- プライベート・ネットワーク接続が、HadoopノードとOracleデータベース・インスタンスの間の通信にのみ使用されること。
このプライベート・ネットワークは、一般に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は、サードパーティ・プロジェクトなど他のインストールされたソフトウェアに依存します。このようなソフトウェアを最新のセキュリティ・パッチで最新の状態に保つのは、顧客の責任です。このようなソフトウェアには次のものがありますが、これに限定されません。
-
Python
-
Perl
8.2 Big Data SQLの通信とセキュアなHadoopクラスタ
不正な書込み/読取りアクセスを防止するために、HDFSファイル・アクセス権限を最小限に抑えておくことは、一般的に適切なセキュリティ上の措置です。このことは、HadoopクラスタがKerberosによって保護されているかどうかに関係なく言えることです。
Oracle Big Data SQLとの使用においてHadoopクラスタを保護する詳細なガイドラインは、My Oracle SupportのMOSドキュメント2123125.1を参照してください。
8.2.1 保護されているクラスタと保護されていないクラスタの両方へのデータベースの接続
Oracle Big Data SQLは、1つのデータベースを複数のKerberosで保護されているクラスタまたは保護されていないクラスタに同時に接続できます。
データベースで、保護されているクラスタと保護されていないクラスタの両方への接続が混在する場合、Hiveメタデータ問合せの使用には制限があります。デフォルト(使用可能な最初の接続)が保護されている場合、保護されていないクラスタのHiveメタデータにはアクセスできません。逆も同様です。デフォルトのクラスタが保護されていない場合は、保護されたクラスタのHiveメタデータにはアクセスできません。これは、データベースがサポートできるHadoop認証方式は1つのみであるためです。
データベースにcluster_1 (デフォルトのクラスタ、保護されている)、cluster_2 (保護されていない)、cluster_3 (保護されている)という接続があるとします。この場合、次のような問合せは、cluster_1に対して成功します(cluster_1はデフォルトであるため)。これは、cluster_3に対しても成功します。ただし、保護されていないcluster_2に対しては失敗します。
select cluster_id, database_name, table_name from all_hive_tables;
cluster_1 (デフォルト)が保護されていない場合は、かわりにこの問合せはcluster_2に対して成功し、cluster_3に対して失敗します。
メタデータ(他のツールを使用して取得できる)がすでにわかっている場合は、Hiveソースを介して外部表を正常に作成できます。たとえば、次のcreate tableコマンドは、デフォルトのクラスタのステータスに関係なく、保護されているクラスタと保護されていないクラスタの両方に対して機能します。
create table myhivetable (
id number(10),
name varchar2(4000),
type varchar2(4000))
organization external (
type ORACLE_HIVE
default directory default_dir
access parameters (
com.oracle.bigdata.cluster=<cluster name>
com.oracle.bigdata.tablename=<Hive database name>.<Hive table name>)
)
parallel 2 reject limit unlimited;
8.3 Kerberosで保護された環境でのOracle Big Data SQLの構成
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クラスタのノードのみがインターコネクト・ネットワークにアクセスできるようにします。他のユーザー通信にインターコネクト・ネットワークを使用しないでください。
8.3.1 Kerberos化されたクラスタへのOracle Big Data SQLアクセスの有効化
ユーザー・アクセスが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が有効になっている場合、データベース所有者のプリンシパルまたは別のLinuxユーザー・アカウントのプリンシパルを認証に使用できます。ユーザーにアクセス権を付与するには、次のことが必要です。
Linuxユーザーは、Kerberosキー配布センター(KDC)サーバーのKerberosデータベースでプリンシパルとして認証できる必要があります。Hadoop側のプリンシパルには、Oracle Big Data SQLによってリクエストされる基礎となるHadoopデータへのアクセス権が必要です。
-
およびKerberosクライアント・ソフトウェアのインストール。
-
KDCからのKerberos構成ファイルのコピー。
-
Linuxユーザー用にKDCで生成されたKerberos keytabファイルのコピー。
-
Linuxユーザー用の有効なKerberosチケット。
Kerberosクライアントのインストール
Kerberosクライアントがインストールされていない場合、Kerberosクライアントのインストール手順については、Oracle DatabaseノードでのKerberosクライアントのインストールを参照してください。
ユーザー用のKerberosプリンシパルの作成
Kerberosキー配布センター(KDC)サーバーで、root
となってkadmin.local
を使用し、認証用に選択されたユーザーのプリンシパルを追加します。
# kadmin.local
-
kadmin.local内で、次のように入力します。
add_principal <user>@<realm> quit
次のように、パスワードを入力することもできます。
add_principal <user>@<realm> -pw <password> quit
ユーザー用のKerberos Keytabの作成
-
KDCで、
root
となって次を実行します。# kadmin.local
-
kadmin.local
内で、次のように入力します。xst –norandkey -k /home/oracle/oracle.keytab <user> quit
これにより、Kerberosプリンシパルの
<user>.keytab
ファイルが/home/oracle
ディレクトリに作成されます。ノート:
-norandkey
オプションを指定せずにxst(ktadd)コマンドを実行すると、このユーザーに対して以前に作成された他のキータブが無効になります。 -
keytabが指定されたLinuxユーザーによって所有され、そのユーザーのみが読取り可能であることを確認します。
$ chown <user> <user>.keytab $ chmod 400 <user>.keytab
Oracle Big Data SQLで自動化されるKerberosタスク
次のKerberosタスクが自動化されるようになりました。
-
KeytabとKerberos構成ファイルの配布ファイルの配布。
プリンシパルのkeytabおよびKerberos構成ファイルがHadoop DataNode (およびOracle Databaseコンピュート・ノード)に自動的に配布されるように、Oracle Big Data SQLインストールを構成できるようになりました。これが実行されるのは、プリンシパル名およびkeytabファイルの場所のパラメータがJaguar構成ファイルに設定されている場合です。この自動化は、Hadoopで実行され、プリンシパルが同じ場合はOracle Database側でも実行されます。そうでない場合は、データベース側で代替プリンシパルを指定できます。
Oracle Big Data Applianceで、keytabファイルの配布は
oracle
アカウントに対してデフォルトで実行されるため、このアカウントのプリンシパルおよびkeytabファイルのパスを構成ファイルに追加する必要はありません。 -
指定されたプリンシパルのKerberosチケットの取得。
インストールでは、各Hadoop DataNodeおよびOracle DBのコンピュート・ノードでKerberosチケットが取得されます。
-
チケット更新
インストールは、構成のプリンシパルごとにkinitで新しいチケットを毎日4回取得するように、HadoopクラスタおよびOracle Databaseでcronジョブを自動的に設定します。
チケットの有効期限後のクリーン・アップ
bd_cellプロセスが保護されたHadoopクラスタのノードで実行されているのに、Kerberosチケットが有効でない場合、セルは検疫ステータスになります。そのような検疫をすべて削除する必要があります。
-
すべてのHadoopクラスタ・ノードで、プリンシパルが有効なKerberosチケットを持っていることを確認します。
-
各クラスタ・ノードで、
oracle
になり、次のコマンドを実行します。$ /opt/oracle/bd_cell/cellsrv/bin/bdscli
-
bdscliシェルで、次のように入力します。
list quarantine
-
bdscliにいる間に、リストにある各検疫を削除します。
drop quarantine <id>
-
exit
と入力し、bdscliを終了します。
8.3.2 Oracle DatabaseノードでのKerberosクライアントのインストール
Oracle DatabaseシステムがKerberosで保護されている場合、Oracle Big Data SQLを使用するには、Kerberosクライアントが必要です。クライアントがデータベースの各コンピュート・ノードにインストールされている必要があります。
コモディティ・サーバーの場合、選択したリポジトリからKerberosクライアント・ソフトウェアをダウンロードします。データベース・サーバーがOracle Exadata Database Machineの場合は、次に示すOracleリポジトリからソフトウェアをダウンロードしてインストールします。このプロセスは、Oracle以外のリポジトリからのダウンロードの場合と同様です。
rootとしてデータベース・サーバーにログオンし、yumを使用してkrb5-libs
パッケージとkrb5-workstation
パッケージをインストールします。適切なOracle Linuxリポジトリ(ol7またはol6)からダウンロードします。
-
正しいOracleリポジトリIDがインストールされていることを確認します。
# yum repolist
-
すべてのリポジトリIDを一時的に無効にし、Oracleリポジトリ(この例ではOracle Linux 7)のみを有効にします。
# yum --disablerepo="*" --enablerepo="public-yum-ol7" list available
-
Kerberosのパッケージをインストールします。
# yum install krb5-libs krb5-workstation
-
/etc/krb5.conf
ファイルをキー配布センター(KDC)からデータベース・サーバー上の同じパスにコピーします。
このステップは、各Oracle Databaseノードに対して実行する必要があります。
また、「Kerberos化されたクラスタへのOracle Big Data SQLアクセスの有効化」の説明に従って、oracle
Linuxユーザー(または他のLinuxユーザー)およびパスワードをクラスタのKDCで登録する必要があります。
8.4 Oracle Secure External Password Storeを使用したOracle Big Data SQLのデータベース・アクセスの管理
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を参照してください。
8.5 Oracle Big Data Applianceでのデータ・セキュリティについて
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のセキュリティの概要。8.6 Oracle DatabaseおよびOracle Big Data SQLオフロード・セル・サーバー・プロセス間の認証
このガイドで説明するデータベース認証機能を使用すると、不正で悪意のある可能性があるプロセス(どこからでも開始できます)がHadoopクラスタのDataNodeにあるOracle Big Data SQLセル・サーバー・プロセスに接続するのを防ぐことができます。
Oracle DatabaseとOracle Big Data SQL間の接続にイーサネットが選択されている場合、デフォルトでインストール時にこの保護された認証フレームワークが自動的に設定されます。データベース認証は、インフィニバンド接続の構成オプションとしても使用できます。
8.7 オブジェクト・ストアへのアクセスの保護
Oracle Big Data SQLを使用すると、Oracle Databaseから、およびHadoopノードで実行されるOracle Big Data SQLオフロード・サーバーからもオブジェクト・ストアにアクセスできます。
オブジェクト・ストアにアクセスするには、Oracle Big Dataオフロード・サーバーに適したプロキシ設定が必要です。これらは、Jaguar構成ファイルにcell_http_proxy
パラメータまたはcell_no_proxy
パラメータのいずれかを含めることによって設定されます。
ノート:
Hadoopノードからオブジェクト・ストアへのアウトバウンドHTTP接続は保護する必要があります。ファイアウォールを使用して、ターゲット・オブジェクト・ストアのドメイン名をホワイトリストに登録することをお薦めします。オブジェクト・ストアへのアクセスに必要な資格証明情報は、Oracle DatabaseからOracle Big Data SQLオフロード・サーバーに送信される前に暗号化されます。
関連項目:
- Jaguar構成パラメータおよびコマンド・リファレンスでは、オブジェクト・ストアへのアクセスにプロキシ・パラメータを適用する方法について説明しています。
- ユーザーへのOracle Big Data SQLへのアクセス権の付与では、オブジェクト・ストアへのアクセスを認可する前に、Oracle Database側で付与する必要のあるいくつかの権限について説明しています。