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が使用されないことを確認します。
手順
-
各ノードでホスト名がDNSによって解決され、NTPが設定されていることを確認します。
-
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
-
Kerberos認証はシステム時刻の影響を受けます。システム・クロックを手動で設定すると、問題の原因となる可能性があります。各ノードで、NTPが構成され実行されていることを確認します。
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
-
各ノードにKerberosをインストールします。
-
レルムの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
-
Key Distribution Center(KDC)サーバーで、各ノードのサービス・プリンシパルとキータブを作成します。
-
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 -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
- オプション:
listprincs
コマンドをkadmin
内で実行して、プリンシパルが追加されていることを確認します。
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レルムです(すべて大文字で指定する必要があります)。
-
各ノードのキータブ・ファイルを作成して、プリンシパルのキーをノードごとに追加します。
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
- オプション:
各キータブ・ファイルのプリンシパルを表示するには、
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
はキータブ・ファイルとそのタイムスタンプを表示します。
-
KDCサーバーからノードにキータブ・ファイルを配布します。DSE Kerberos構成を容易にするため、ファイル名が各ノードで同じであることを確認します。
scp /tmp/node1.keytab node_admin@node_hostname:/etc/dse/dse.keytab
-
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 |