主コンテンツへ
Oracle® Big Data SQLインストレーション・ガイド
リリース3 (3.1)
E83729-02
目次へ移動
目次
索引へ移動
索引

前
次

6 Big Data SQLの保護

この項では、Big Data SQLを保護し、保護された環境内でソフトウェアを構成するために講じることができる対策について説明します。

6.1 Big Data SQLの通信とセキュアなHadoopクラスタ

不正な書込み/読取りアクセスを防止するために、HDFSファイル・アクセス権限を最小限に抑えておくことは、一般的に適切なセキュリティ上の措置です。このことは、HadoopクラスタがKerberosによって保護されているかどうかに関係なく言えることです。

Oracle Big Data SQLとの使用においてHadoopクラスタを保護する詳細なガイドラインは、My Oracle SupportのMOSドキュメント2123125.1を参照してください。

6.2 データベース・サーバーでのKerberosクライアントのインストール

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リポジトリからダウンロードします。

  1. OracleリポジトリID public-yum-ol6またはpublic-yum-ol5がインストールされていることを確認します。

    # yum repolist
  2. すべてのリポジトリIDを一時的に無効にし、Oracleリポジトリ(この例ではOracle Linux 6)のみを有効にします。
    # yum --disablerepo="*" --enablerepo="public-yum-ol6" 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で登録する必要があります。

6.3 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が有効になっている場合、ユーザーが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ユーザーのプリンシパルを追加します。

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

    add_principal <user>@<realm>
    quit

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

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

oracleユーザー用のKerberos Keytabの作成

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

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

    これにより、Kerberos oracleユーザー用のoracle.keytabファイルが/home/oracleディレクトリに作成されます。

  3. oracle.keytaboracle 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ユーザーとして各ノードにログオンしてチケットを取得します。

  1. oracleユーザーとしてログオンします。

  2. 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チケットが有効でない場合、セルは検疫ステータスになります。そのような検疫をすべて削除する必要があります。

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

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

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

    list quarantine
  4. bdscliにいる間に、リストにある各検疫を削除します。
    drop quarantine <id>
  5. exitと入力し、bdscliを終了します。

Kerberosチケットの自動更新による期限切れの回避

oracleユーザーには、HadoopクラスタにアクセスするすべてのOracle Databaseインスタンスで有効なKerberosチケットが必要です。有効なチケットは、Hadoopノードのoracleユーザーにも必要で、このユーザーが各Big Data SQLプロセスを所有するためです。

チケットの更新を自動化することをお薦めします。cronまたは同様のユーティリティを使用してkinitを実行し、チケットの有効期限を経過する前にユーザーの新しいチケットを取得します。(チケットの有効期間は/etc/krb5.confに記録されます。)

たとえば、すべてのノードで、次のようにoracleユーザーのcrontabにジョブを追加できます。

  1. ユーザー(oracleなど)としてログオンします。

  2. crontab -eを使用してユーザーのcrontabを編集します。

    $ crontab -e
  3. チケットの有効期限が切れる前に更新するようにスケジュールおよびコマンドを含んだ行を追加します。たとえば、チケットの有効期限が2週間ごとに切れる場合は、この例で示すように13日ごとに更新します。

    15 1,13 * * * /usr/bin/kinit oracle -k -t /home/oracle/oracle.keytab

6.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を参照してください。

6.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 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」セクションで入手できます。