Kerberos用のDSEノードの準備

Kerberosクライアント・ライブラリをDSEノードにインストールし、DNSエントリーとシステム時刻設定を検証して、サービス・プリンシパルを設定する手順の例。

ここに示す手順は、Kerberosクライアント・ライブラリをDSEノードにインストールし、DNSエントリーとシステム時刻設定を検証するためのガイドラインとして使用してください。クラスター内のノードごとに、DNSが正しく機能し、NTPが有効になっていて、システム時刻が同期され、Kerberosクライアント・ライブラリがインストールされている必要があります。

注: DataStax EnterpriseのアップグレードとKerberosの設定を同時に行わないでください。「アップグレードの制限事項」を参照してください。

始める前に

以下の前提条件が満たされていることを確認します。
  • ホスト名を正しいIPアドレスに解決するDNSエントリーが各ノードにある
  • 各ノードがシステム時刻にNTPを使用している
  • KDSのすべての要件が満たされている。「Kerberosのガイドライン」を参照してください。
  • Oracle Java 8を使用する場合は、最新バージョンの使用が推奨されますが、最小バージョンは 1.8.0_40
  • 各ノードにJava Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Filesがインストールされている。「JCEのインストール」を参照してください。
    注: JCE Unlimited Strength Jurisdiction Policyを使用していない場合は、プリンシパルを付与したチケットでAES-256が使用されないことを確認します。

手順

  1. 各ノードでホスト名がDNSによって解決され、NTPが設定されていることを確認します。
    1. Kerberosでは、ホスト名がサービス・プリンシパル名に使用されるため、ホスト名が正しいIPアドレスに解決される必要があります。確認するには、以下のコマンドを実行します。
      nslookup $(hostname --fqdn) && hostname --fqdn && hostname -i
      Server:		10.200.1.10
      Address:	10.200.1.10#53
      
      Name:	node.example.com
      Address: 10.200.182.183
      
      node.example.com
      10.200.182.183
    2. Kerberos認証はシステム時刻の影響を受けます。システム・クロックを手動で設定すると、問題の原因となる可能性があります。各ノードで、NTPが構成され実行されていることを確認します。
      $ ntpq -p
      
      remote           refid            st t when poll reach   delay   offset  jitter
      ==============================================================================
      *li506-17.member 209.51.161.238   2  u 331 1024  377   80.289    1.384   1.842
      -tock.eoni.com   216.228.192.69   2  u 410 1024  377   53.812    1.706  34.692
      +time01.muskegon 64.113.32.5      2  u 402 1024  377   59.378   -1.635   1.840
      -time-a.nist.gov .ACTS.           1  u 746 1024  151  132.832   26.931  55.018
      +golem.canonical 131.188.3.220    2  u 994 1024  377  144.080   -1.732  20.072
  2. 各ノードにKerberosをインストールします。
    • RHELベースのシステム:
      sudo yum install krb5-workstation krb5-libs krb5-pkinit-openssl
    • Debianベースのシステム:
      sudo apt-get install krb5-user krb5-config krb5-pkinit
  3. レルムのkrb5.confは、各DataStax Enterpriseノードの/etcディレクトリーにあります。
    krb5.confファイルには、Kerberosに必要なレルム構成が含まれています。MIT Kerberos krb5.confのドキュメントを参照してください。KDCのDNS検索とレルム・エントリーは使用しないでください。DNSを使用すると、パフォーマンスと機能性に悪影響を及ぼすことがあります。libdefaultsセクションに以下のエントリーが含まれていることを確認します。
    [libdefaults]
    dns_lookup_kdc = false
    dns_lookup_realm = false
    
  4. Key Distribution Center(KDC)サーバーで、各ノードのサービス・プリンシパルとキータブを作成します。
    1. kadminコマンドを使用して、各ノードのDSEサービス・プリンシパルとHTTPプリンシパルを追加します。
      kadmin -p user_name/admin
      addprinc -randkey service_name/FQDN
      addprinc -randkey HTTP/FQDN
      quit
      パラメーター 説明
      kadmin add権限を持つ管理者アカウントを使用して、Kerberos管理シェルを起動します。
      addprinc 各DSEノードに新しいサービス・プリンシパルを作成します。
      dse サービス名はdseです。
      FQDN DSEノードの完全修飾ドメイン名。
      -randkey プリンシパルのキーをランダムな値に設定します。
      ヒント: kadminの使用の詳細については、kadminのヘルプを参照してください。
      例:
      kadmin -p kadmin/admin
      kadmin: addprinc -randkey dse/node1.example.com
      kadmin: addprinc -randkey HTTP/node1.example.com
      kadmin: addprinc -randkey dse/node2.example.com
      kadmin: addprinc -randkey HTTP/node2.example.com
    2. オプション: listprincsコマンドをkadmin内で実行して、プリンシパルが追加されていることを確認します。
      kadmin: listprincs
      HTTP/node1.example.com@EXAMPLE.COM
      HTTP/node2.example.com@EXAMPLE.COM
      dse/node1.example.com@EXAMPLE.COM
      dse/node2.example.com@EXAMPLE.COM
      kadmin/admin@EXAMPLE.COM
      ここで、node*.example.comはFQDNであり、EXAMPLE.COMはKerberosレルムです(すべて大文字で指定する必要があります)。
    3. 各ノードのキータブ・ファイルを作成して、プリンシパルのキーをノードごとに追加します。
      kadmin: ktadd -k keytabfilename dse/FQDN
      kadmin: ktadd -k keytabfilename HTTP/FQDN

      ここで、ktadd -kはDSEサービスとHTTPプリンシパルのキーを作成または追加書き込みします。

      例:
      kadmin: ktadd -k /tmp/node1.keytab dse/node1.example.com
      kadmin: ktadd -k /tmp/node1.keytab HTTP/node1.example.com
      kadmin: ktadd -k /tmp/node2.keytab dse/node2.example.com
      kadmin: ktadd -k /tmp/node2.keytab HTTP/node2.example.com
    4. オプション: 各キータブ・ファイルのプリンシパルを表示するには、klistコマンドを使用します。
      例を次に示します。
      sudo klist -e -kt /tmp/node1.keytab
      
      Keytab name: FILE:/tmp/node1.keytab
      KVNO Timestamp        Principal
      ---- ---------------- ----------------------------------------------
      2    14/02/16 22:03   HTTP/node1FQDN@YOUR_REALM (des3-cbc-sha1)
      2    14/02/16 22:03   HTTP/node1FQDN@YOUR_REALM (arcfour-hmac)
      2    14/02/16 22:03   HTTP/node1FQDN@YOUR_REALM (des-hmac-sha1)
      2    14/02/16 22:03   HTTP/node1FQDN@YOUR_REALM (des-cbc-md5)
      2    14/02/16 22:03   dse/node1FQDN@YOUR_REALM (des3-cbc-sha1)
      2    14/02/16 22:03   dse/node1FQDN@YOUR_REALM (arcfour-hmac)
      2    14/02/16 22:03   dse/node1FQDN@YOUR_REALM (des-hmac-sha1)
      2    14/02/16 22:03   dse/node1FQDN@YOUR_REALM (des-cbc-md5)
      ここで、-eは暗号化タイプを表示し、-ktはキータブ・ファイルとそのタイムスタンプを表示します。
    5. KDCサーバーからノードにキータブ・ファイルを配布します。DSE Kerberos構成を容易にするため、ファイル名が各ノードで同じであることを確認します。
      scp /tmp/node1.keytab node_admin@node_hostname:/etc/dse/dse.keytab
    6. dse.keytabのパーミッションを変更して、dse_service_accountユーザーだけがキータブ・ファイルの読み取りと書き込みを行えるようにします。
      sudo chown dse:dse /etc/dse/dse.keytab && sudo chmod 600 /etc/dse/dse.keytab
      dse.yamlファイルの場所は、インストールのタイプによって異なります。

      パッケージ・インストールInstaller-Servicesインストール

      /etc/dse/dse.yaml

      tarボール・インストールInstaller-No Servicesインストール

      installation_location/resources/dse/conf/dse.yaml