HadoopTimes

実践 機械学習:レコメンデーションにおけるイノベーション
技術情報

Hive設定ファイルのHive Metastoreパスワードを削除するキーステップ

hive

通常メタストアにMySQLを使用してHiveを構築した場合、クリアテキストで設定ファイルへパスワードを記述します。この場合、以下のリスクが考えられます。

  1. 権限の無いアクセスでもHiveメタデータを破壊または変更できる。この為、ワークフローが崩壊する可能性や悪意のあるユーザがHiveの権限を変更するまたはメタデータを破壊する可能性がある。
  2. このパスワードは、hiveserver2 – thrift – MySQL間の通信を許可する。

このリスクを避けるためにJavaキーストアファイルをパスワードの代わりに使う必要があります。

最低限必要な作業:

  • chown mapr:mapr hive-site.xml
  • chmod 400 hive-site.xml

上記の作業を行うことで、mapr以外のユーザはhive-site.xmlを読み込む事が出来なくなります。この為ローカルでのジョブ実行を制限することが出来ます。

パスワードを格納/参照処理を行うためにCredential Providerを設定します。その設定で暗号化したキーストアファイルを使用を指定することで、Hive設定のHive metastoreパスワードをクリアテキストで保存する必要がなくなります。

ステップ1:HadoopコマンドでCredentialProviderの作成

パスワードを暗号化し、Javaキーストアファイルとして保存するためにCredentialProviderを作成します。

[root@ip-10-0-10-219 ~]# hadoop credential create
javax.jdo.option.ConnectionPassword -provider
jceks://maprfs/user/mapr/hive.jceks
Enter password:
Enter password again:
javax.jdo.option.ConnectionPassword has been successfully created.
org.apache.hadoop.security.alias.JavaKeyStoreProvider has been updated.

パスワードのプロンプトが表示されたら、Hiveメタデータベース認証を入力する必要があります。
注意:MapR Distributionでは、HDFSパスのmaprfsを入力する必要があります。jceks://user/mapr/filename.jceks」 の様なダイレクトパスは機能しません。maprfsを入力してください。例)jceks://maprfs/user/mapr/filename.jceks

ステップ2:パスワードエイリアス確認

パスワードエイリアスがJCEKS providerファイルとしてリスト出力されることで、適切に設定されていることを確認します。次のコマンドを実行します。

For Listing details of alias
[root@ip-10-0-10-219 ~]# hadoop credential list -provider
jceks://maprfs/user/mapr/hive.jceks
Listing aliases for CredentialProvider: jceks://maprfs/user/mapr/hive.jceks
javax.jdo.option.connectionpassword

providerファイルからjavax.jdo.option.connection (エイリアス) のリストが出力されます。

ステップ3:Hive metastoreパスワードエントリーの削除

Hiveメタデータベースへ接続するために、Hive設定ファイルはCredentialProviderロケーションで更新する必要があります。

hive-site.xmlを編集し、以下の変更を行ってください。

    1. Hive設定からHive metastoreパスワードエントリー (jdo.option.ConnectionPassword) を削除する。エントリーを削除することでCredenditalProviderが代わりに利用されます。
    2. CredentialProvider用にhive-siteに以下のエントリーを作成します。
<!-- <Configure credential store for passwords> -->
<property>
<name>hadoop.security.credential.provider.path</name>
<value>jceks://maprfs/user/mapr/hive.jceks</value>
</property>

ステップ4:Hive Metastore Server及びHiveServer2を再起動

Hive Metastore Server/HiveServer2を再起動し設定を有効化します。

maprcli node services -name hivemeta -action stop -nodes hivemetastorehostname
maprcli node services -name hs2 -action stop -nodes hiveserver2hostname

maprcli node services -name hivemeta -action start -nodes hivemetastorehostname
maprcli node services -name hs2 -action start -nodes hiveserver2hostname

ログを検証しHiveサーバーがエラーなく正常に起動したことを確認します。

ステップ5:Hiveの動作確認

Hiveにログオンし、データベースとテーブルへアクセス出来ることを確認するためにリストを出力します。

注意:Hiveシェルの利用には読み取り権限が必要です。この為、すべてのHiveユーザ向けにJavaキーストアファイルへ読み取り権限 (644) を要求されます。

読み取り権限をユーザーグループに与えることは、安全性を損なうことになります。読み取り権限がある人は、キーストアファイルを使いDBアクセスを行うことができます。読み取り権限は、エンドユーザのHiveシェルアクセスの全てに必要ではないので、アクセスできるエンドユーザー数を制限するためにHiveユーザをグループで分割し、必要に応じてキーストアファイルへのアクセス (640) を禁止して下さい。

詳しい説明は、Hadoop Commands Guideを読んで下さい。

以上で、暗号化したキーストアファイルを使用することで、Hive設定ファイルへクリアテキストでのmetastoreパスワードを保存しない方法をご紹介しました。

著者情報

Arun Nallusamy

アルン・ナルサミー

(MapR Technologies データエンジニア)

「いまさら聞けない」データ分析の総ざらい

「いまさら聞けない」データ分析の総ざらい
昨今、「データ分析」の重要性が強く叫ばれています。ただ、それはアナリストやデータ・サイエンティストと呼ばれる“専門家だけが担うことができる難解なもの”という誤解を持たれてはいないでしょうか。

データ分析という手法は、IT のパワーを活用することで、どんな企業も導入・実践することができる“現実解”なのです。

データ分析とはいかなるものなのか――。

この資料では、これからデータ分析を始める方や始めたが、もう一度初歩知識を復習したい方々向けにデータ分析の基本を解説します。

無料ダウンロードはこちら

こちらの記事もおすすめです