Isilon:「Isilon:Amberiでの自動Kerberos構成(英語)」
Summary: この記事では、Ambariが管理するHadoopクラスターを使用したKerberosセキュリティの構成について説明します。
Symptoms
Cause
Resolution
この記事では、Ambariが管理するHadoopクラスターを使用してKerberosセキュリティを構成する方法について説明します。
Kerberosは、Hadoopの強力な認証と暗号化の中心ですが、構成と管理が難しい場合があります。Ambari 2.0では、ウィザード主導の自動Kerberos構成が導入されました。これにより、プロセスがはるかに高速になり、エラーが発生しやすくなります。OneFS 8.0.0.1以降、Dell EMC Isilonのお客様はこの優れた機能を活用できます。
必要条件
- OneFS 8.0.0.1以降。
- Ambari 2.0以降。
- MIT KDC実行中(Heimdalはサポートされていません)。Kerberosインフラストラクチャをセットアップするには、次の手順に従います。
- すべてのホスト間でDNSを正引きまたは逆引きします。
- すべてのサービスが、Ambariダッシュボードで実行されています(緑色)。
Kerberosの有効化
事前構成
ウィザードを起動する前に、2つの構成を設定し、すべてのサービスを再起動する必要があります。- HDFS -> カスタム コア サイトが「hadoop.security.token.service.use_ip」を「false」に設定
- MapReduce2 -> Advanced mapred-siteでは、「mapreduce.application.classpath」の先頭に「'hadoop classpath':」を追加します。コロンとバックスティックをメモします(ただし、引用符はコピーしないでください)。
開始
Admin -> Kerberosに移動し、[Enable Kerberos]ボタンを押します。このセクション内のタイトルは、Kerberosウィザード ページのタイトルを参照します。
[Existing MIT KDC]を選択し、前提条件が満たされていることを確認して、[Next]をクリックします。IsilonはJavaを使用せず、JCEは必要ありません。
Kerberosの構成/Kerberosクライアントのインストールとテスト
すべてのKDCと管理サーバーの情報を入力します。ステップ3(Kerberosクライアントのインストールとテスト)で、Ambariサーバーは、Kerberosが正しく構成されていることを確認するための煙テストを実行します。
IDの設定/設定の確認
a)Ambariユーザー プリンシパル(UPN)
Ambariは $ -$ @$ の形式でユーザー プリンシパルを作成し、 core-site.xmlのhadoop.security.auth_to_local を使用して、ファイル システム上のプリンシパルをわずか $ にマッピングします。Isilonはマッピング ルールを尊重しないため、「Ambari Principals」セクションのすべてのプリンシパルから -$ を削除する必要があります。Isilonは @$ をストライピングするため、エイリアスは必要ありません。HDFS、YARN、MapReduce2、Tez、Hive、HBase、Pig、Sqoop、Oozie、Zookeeper、Falcon、Storm、Flume、Accumulo、Ambari Metrics、Kafka、Knox、Mahout、Slider、Sparkを実行しているAmbari 2.2.1クラスターで、[General]タブで次の変更を行います。
- Smokeuserプリンシパル名: ${cluster-env/smokeuser}-$ @$ => ${cluster-env/smokeuser}@$
- spark.history.kerberos.principal: ${spark-env/spark_user}-$ @$ => ${spark-env/spark_user}-@$
- ストーム プリンシパル名: ${storm-env/storm_user}-$ @$ => ${storm-env/storm_user}-@$
- HBaseユーザー プリンシパル: ${hbase-env/hbase_user}-$ @$ => ${hbase-env/hbase_user}@$
- HDFSユーザー プリンシパル: ${hadoop-env/hdfs_user}-$ @$ => ${hadoop-env/hdfs_user}@$
- accumulo_principal_name: ${accumulo-env/accumulo_user}-$ @$ => ${accumulo-env/accumulo_user}@$
- trace.user: tracer-$ @$ => tracer@$
b)SPN(サービス プリンシパル)
Ambariは、UNIXユーザー名とは異なるサービス プリンシパルを作成します。繰り返しますが、Isilonはマッピング ルールを尊重しないため、UNIXユーザー名に一致するようにプリンシパル名を変更する必要があります。Ambari 2.2.1クラスターで、[Advanced]タブで次の変更を行います。
- HDFS -> dfs.namenode.kerberos.principal: nn/_HOST@$ => hdfs/_HOST@$
- YARN -> yarn.resourcemanager.principal: rm/_HOST@$ => yarn/_HOST@$
- YARN -> yarn.nodemanager.principal: nm/_HOST@$ => yarn/_HOST@$
- MapReduce2 :> mapreduce.jobhistory.principal: jhs/_HOST@$ => mapred/_HOST@$
- Falcon -> *.dfs.namenode.kerberos.principal: nn/_HOST@$ => hdfs/_HOST@$

適切なプリンシパルを構成したら、[Next]を押します。[設定の確認]画面で[次へ]を押します。
サービス/Kerberizeクラスターの停止
サービスの停止とKerberizingは成功するはずです。

次の手順を実行しないでください。Isilonでは、AmbariはIsilonプリンシパルのキータブを作成できません。代わりに、次の手順を使用してIsilonでKerberosを手動で構成する必要があります。
a)Isilon認証プロバイダーとしてKDCを作成する
メモ: このIsilonゾーンがすでにMIT KDCを使用するように構成されている場合は、これらの手順をスキップできます。
isi auth krb5 create --realm=$REALM --admin-server=$admin_server --kdc=$kdc_server --user=$admin_principal --password=$admin_password
isi zone zones modify --zone=$isilon_zone --add-auth-provider=krb5:$REALM
b) HDFSおよびHTTP(WebHDFSの場合)のサービス プリンシパルを作成します。
isi auth krb5 spn create --provider-name=$REALM --spn=hdfs/$isilon_smartconnect@$REALM --user=$admin_principal --password=$admin_password
isi auth krb5 spn create --provider-name=$REALM --spn=HTTP/$isilon_smartconnect@$REALM --user=$admin_principal --password=$admin_password
c)必要なプロキシ ユーザーを作成する
セキュアでないクラスターでは、任意のユーザーが他のユーザーを偽装できます。セキュアなクラスターでは、プロキシ ユーザーを明示的に指定する必要があります。
HiveまたはOozieを使用している場合は、適切なプロキシ ユーザーを追加します。
isi hdfs proxyusers create oozie --zone=$isilon_zone --add-user=ambari-qa
isi hdfs proxyusers create hive --zone=$isilon_zone --add-user=ambari-qa
d)シンプル認証の無効化
Kerberosまたは委任トークン認証のみが許可されます。
isi hdfs settings modify --zone=$isilon_zone --authentication-mode=kerberos_only
Isilonも構成したので、Ambariで[Next]を押してウィザードの最後のステップに進みます。
サービスの開始とテスト

サービスが開始されない場合は、Kerberosの問題をデバッグするためのいくつかのテクニックを次に示します。
- YARNのバグにより、「yarn.resourcemanager.principal」をYARN->Custom yarn-siteのyarn/$rm_hostname@$REALMに設定する必要があります。「_HOST」構文は、Kerberosが有効な場合は機能しません。
- Java GSSAPI/Kerberosエラーをデバッグするには、「-Dsun.security.krb5.debug=true」をHADOOP_OPTSに追加します。
- HTTP 401エラーの場合は、追加のデバッグ情報として curl with -iv を使用します。
- すべてのホスト間で正引きおよび逆引きDNSが設定されていることを確認します。
HDFSでは、>カスタム コア サイトが「hadoop.rpc.protection」を「整合性」または「プライバシー」に設定します。認証に加えて、整合性保証メッセージは改ざんされておらず、プライバシーはすべてのメッセージを暗号化します。
ジョブを実行します。
任意のクライアント ホストから、MapReduceジョブを試してください。
kinit <some-user> yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar pi 1 1000
Job Finished in 37.635 seconds
Estimated value of Pi is 3.14800000000000000000
Congratulations--you have secured your cluster with Kerberos!
(オプション)Kerberosの無効化
Isilonのクリーンアップ
最初にIsilonをクリーンアップする必要があります。これは基本的に、Kerberosを有効にする逆関数です。
a)Kerberos認証の無効化
isi hdfs settings modify --authentication-mode=simple_only --zone=$isilon_zone
b)すべてのプロキシ ユーザーを削除する
isi hdfs proxyusers delete oozie --zone=$isilon_zone
isi hdfs proxyusers delete hive --zone=$isilon_zone
c)プリンシパルの削除
isi auth krb5 spn delete --provider-name=$REALM --spn=hdfs/$isilon_smartconnect@$REALM --all
isi auth krb5 spn delete --provider-name=$REALM --spn=HTTP/$isilon_smartconnect@$REALM --all
上記のコマンドは、Isilonからこれらのプリンシパルのみを削除しますが、KDCからは削除しないことに注意してください。次のコマンドを使用して、KDCからIsilonプリンシパルを削除します。
kadmin -p $admin_principal
kadmin: delete_principal hdfs/$isilon_smartconnect@$REALM
kadmin: delete_principal HTTP/$isilon_smartconnect@$REALM
d)Isilon認証プロバイダーとしてKDCを削除する
isi zone zones modify --zone=$isilon_zone --remove-auth-provider=krb5:$REALM
isi auth krb5 delete --provider-name=$REALM
Ambariを使用したクライアントのクリーンアップ
Admin -> Kerberosで[Disable Kerberos]を押します。すべてのサービスが緑色に表示されます。