統合認証を用いたcqlshの使用

統合認証を用いてcqlshを使用する構成手順。

統合認証を用いてcqlshを使用するには、ログインのたびに認証情報を入力しなくてもいいようにパスワード認証を構成します。サンプル・ファイルから始め、--debug optionを使用して認証の問題を発見し、解決します。

dse.yamlファイルの場所は、インストールのタイプによって異なります。
Installer-Services /etc/dse/dse.yaml
パッケージ・インストール /etc/dse/dse.yaml
Installer-No Services install_location/resources/dse/conf/dse.yaml
tarボール・インストール install_location/resources/dse/conf/dse.yaml

パスワード認証 

  • cqlshを使用してログインするたびに認証情報を入力しなくてもすむように、~/.cassandraディレクトリーにcqlshrcファイルを作成します。このcqlshrcファイルが存在する場合は、デフォルトのログイン情報がcqlshに渡されます。cqlshrcファイルに以下のエントリーを追加します。
    [authentication]
    username = ユーザー名
    password = パスワード
    ここで、ユーザー名はCassandraロールです。
  • 未承認ユーザーがデータベースのログイン情報にアクセスできないように、必ず正しいパーミッションを設定し、このcqlshrcファイルを安全に保護してください。

サンプル・ファイル 

DataStax Enterpriseでは、Kerberos、SSL、KerberosおよびSSL用の認証を構成するためのサンプル・ファイルと例が提供されています。

お使いの環境に合わせて、編集してください。

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

Kerberosの例 

DataStax Enterpriseでは、出発点として使用できるサンプル・ファイルcqlshrc.sample.kerberosが提供されています。

cqlshrc.sample.kerberosファイルのデフォルトの場所は、インストールのタイプによって異なります。
Installer-Servicesおよびパッケージのインストール /usr/share/doc/dse-libcassandra/cqlshrc.sample.kerberos
Installer-No Servicesおよびtarボールのインストール install_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値を指定できますが、サーバーに指定できるのは1つのQOP値のみです(dse.yamlファイルで指定)。

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を使用する方法については、「KerberosとSSLの同時使用」を参照してください。

KerberosとSSLの両方を使用するには、上記の例のKerberos用のセクションとSSL用のセクションの両方を設定します。

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

cqlsh認証のデバッグ 

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