8 Oracle Big Data SQLインストールの保護

この項では、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データへのアクセス権が必要です。

Oracle Big Data SQLを実行しているすべてのOracle DatabaseノードおよびすべてのHadoopクラスタ・ノードで、次のことが必要です。
  • およびKerberosクライアント・ソフトウェアのインストール。

  • KDCからのKerberos構成ファイルのコピー。

  • Linuxユーザー用にKDCで生成されたKerberos keytabファイルのコピー。

  • Linuxユーザー用の有効なKerberosチケット。

Kerberosクライアントのインストール

Kerberosクライアントがインストールされていない場合、Kerberosクライアントのインストール手順については、Oracle DatabaseノードでのKerberosクライアントのインストールを参照してください。

ユーザー用のKerberosプリンシパルの作成

Kerberosキー配布センター(KDC)サーバーで、rootとなってkadmin.localを使用し、認証用に選択されたユーザーのプリンシパルを追加します。

  1. # kadmin.local
  2. kadmin.local内で、次のように入力します。

    add_principal <user>@<realm>
    quit

    次のように、パスワードを入力することもできます。

    add_principal <user>@<realm> -pw <password> 
    quit

ユーザー用のKerberos Keytabの作成

  1. KDCで、rootとなって次を実行します。

    # kadmin.local
  2. kadmin.local内で、次のように入力します。
    xst –norandkey -k /home/oracle/oracle.keytab <user>
    quit

    これにより、Kerberosプリンシパルの<user>.keytabファイルが/home/oracleディレクトリに作成されます。

    ノート:

    -norandkeyオプションを指定せずにxst(ktadd)コマンドを実行すると、このユーザーに対して以前に作成された他のキータブが無効になります。
  3. 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チケットが有効でない場合、セルは検疫ステータスになります。そのような検疫をすべて削除する必要があります。

  1. すべてのHadoopクラスタ・ノードで、プリンシパルが有効なKerberosチケットを持っていることを確認します。

  2. 各クラスタ・ノードで、oracleになり、次のコマンドを実行します。

    $ /opt/oracle/bd_cell/cellsrv/bin/bdscli
  3. bdscliシェルで、次のように入力します。

    list quarantine
  4. bdscliにいる間に、リストにある各検疫を削除します。
    drop quarantine <id>
  5. 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)からダウンロードします。

  1. 正しいOracleリポジトリIDがインストールされていることを確認します。

    # yum repolist
  2. すべてのリポジトリIDを一時的に無効にし、Oracleリポジトリ(この例ではOracle Linux 7)のみを有効にします。
    # yum --disablerepo="*" --enablerepo="public-yum-ol7" list available 
  3. Kerberosのパッケージをインストールします。

    # yum install krb5-libs krb5-workstation 
  4. /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 SupportMOSドキュメント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オフロード・サーバーに送信される前に暗号化されます。

関連項目: