Kerberos認証またはユーザー認証でのcqlshの使用

DataStax Unified Authentication(DataStax統合認証)でcqlshを使用するための構成手順。

cqlshをDataStax Unified Authentication(DataStax統合認証)で使用するために、ファイルで認証情報を構成して、ログインの度に認証情報を渡さなくても済むようにできます。サンプル・ファイルを開始点として使用し、--debugオプションを使用すると、認証問題を特定して解決できます。

dse.yamlファイルの場所は、インストールのタイプによって異なります。

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

/etc/dse/dse.yaml

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

installation_location/resources/dse/conf/dse.yaml

サンプル・ファイル

DataStax Enterpriseには、認証の構成に役立つサンプル・ファイルと例が用意されています。

環境に合わせて変更を行ってください。

cqlshrc.sampleファイルのデフォルトの場所は、インストールのタイプによって異なります。
  • パッケージ・インストールおよびInstaller-Services:/etc/dse/cassandra
  • tarボール・インストールおよびInstaller-No Services:installation_location/resources/cassandra/conf

Kerberosの例

DataStax Enterpriseには、開始点として使用できるサンプルとしてcqlshrc.sample.kerberosファイルが用意されています。

cqlshrc.sample.kerberosファイルのデフォルトの場所は、インストールのタイプによって異なります。

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

/etc/dse/cassandra/cqlshrc.sample.kerberos

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

installation_location/resources/cassandra/conf/cqlshrc.sample.kerberos

Kerberos認証に必要な設定:

[connection]
hostname = 192.168.1.2
port = 9042

[kerberos]
service = dse ;; If not set, the default is dse
qops = auth ;; Optional, see the paragraph below
[connection] hostname[kerberos] service設定は、dse.yaml構成ファイルの値と一致するか、環境変数として設定する必要があります。
  • dse.yamlファイルのkerberos_optionsセクションで、service_principalを設定します。service_principalは、dse.yamlファイル、キータブ、cqlshrcファイル(service_principalservice/hostnameに分けられている)などのあらゆる場所で整合性が保たれている必要があります。
  • 環境変数(KRB_HOST、KRB_SERVICE、およびKRB_PRINCIPAL)は、dse.yamlに設定されているオプションをオーバーライドします。

    環境変数KRB_SERVICEおよびQOPSは、.cqlshrcファイルのオプションをオーバーライドします。設定の読み込み順は、環境変数、.cqlshrc設定、デフォルトです。

デフォルト(auth)は、qopsを指定しない場合に使用されます。クライアント側では、qopsオプションは接続用にクライアントが許可したQOP値のコンマ区切りリストです。
  • クライアント(cqlsh)の値リストには、サーバーで指定されているQOP値が少なくとも1つ含まれている必要があります。
  • クライアントには複数のQOP値を指定することができますが、サーバーに指定できるのは、dse.yamlファイルで指定されている1つのQOP値のみです。

SSLの例

DataStax Enterpriseでは、サンプルのcqlshrc.sample.sslファイルを開始点として用意しています。

[authentication]
username = fred
password = !!bang!!$

[connection]
hostname = 127.0.0.1
port = 9042
 
[ssl]
certfile = ~/keys/cassandra.cert
validate = false ;; Optional, true by default. See the paragraph below.

[certfiles] ;; Optional section, overrides the default certfile in the [ssl] section.
10.209.182.160 = /etc/dse/cassandra/conf/dsenode0.cer 
10.68.65.199 = /etc/dse/cassandra/conf/dsenode1.cer
注: 証明書を生成するときは、ノードのホスト名にCNを設定してください。
検証が有効になっている場合は、cqlshrcファイルで使用されるpemキーを作成する必要があります。例を次に示します。
$ keytool -importkeystore -srckeystore .keystore -destkeystore user.p12 -deststoretype PKCS12 openssl pkcs12 -in user.p12 -out user.pem -nodes

このpemキーは、証明書のホストと接続先のマシンのホストを比較するために必要です。SSL証明書は構成ファイルまたは環境変数として提供する必要があります。環境変数(SSL_CERTFILEおよびSSL_VALIDATE)は、このファイルに設定されているオプションをすべてオーバーライドします。

KerberosおよびSSL

SSLでのKerberosの使用に関する詳細については、「CQLシェル(cqlsh)でSSLを使用する」を参照してください。

KerberosとSSLの両方を使用する設定では、これらの例にあるKerberosおよびSSLセクションの組み合わせを使用します。

サポートされている環境変数は、KRB_SERVICE、SSL_CERTFILE、およびSSL_VALIDATE変数です。

cqlsh認証のデバッグ

cqlshに関する認証問題のトラブルシューティングを行うには、--debugオプションを使用します。cqlshが実行しようとしている認証のタイプがデバッグ・ログ・メッセージに記録されるように、--debugオプションをcqlshに渡します。