Cassandra 用の TLS の構成

このトピックでは、Cassandra ノード間の通信、およびクライアントと Cassandra ノード間の通信に認証を構成する方法について説明します。

ランタイム プレーンの Cassandra 用に TLS を構成する方法

Cassandra は、クライアント マシンとデータベース クラスタの間、およびクラスタ内のノード間で安全な通信を提供します。暗号化を有効にすると、転送中のデータが侵害されず、転送のセキュリティが確保されます。Apigee ハイブリッドでは、Cassandra ノード間、およびクライアントと Cassandra ノード間の通信に対して、TLS がデフォルトで有効になります。

このトピックで説明するように、オーバーライド ファイルに直接配置するか、Kubernetes Secret に追加することで、ユーザー名とパスワードの組み合わせを使用して認証を構成できます。

Cassandra ユーザー認証について

Hybrid プラットフォームでは、Cassandra がランタイム プレーン データのバックエンド データストアとして使用されます。デフォルトでは、クライアントから Cassandra への通信には認証が必要です。クライアントで Cassandra との通信に使用されるユーザーは 3 種類あります。こうしたユーザーにはデフォルト パスワードが提供されており、そのパスワードを変更する必要はありません。

デフォルト ユーザーを含むこれらのユーザーは、次のとおりです。

  • DML ユーザー: クライアントによる Cassandra からのデータの読み取りと Cassandra へのデータの書き込みに使用されます(KMS、KVM、キャッシュ、割り当て)。
  • DDL ユーザー: キースペースの作成、更新、削除などのデータ定義タスクのために MART によって使用されます。
  • 管理者ユーザー: Cassandra クラスタで実行される管理アクティビティに使用されます。
  • デフォルト Cassandra ユーザー: 認証が有効になっている場合、cassandra という名前のデフォルト ユーザーが Cassandra によって自動的に作成されます。
  • JMX ユーザー: Cassandra JMX インターフェースによる認証と通信に使用されます。
  • Jolokia ユーザー: Cassandra JMX API による認証と通信に使用されます。

オーバーライド ファイルのデフォルト パスワードを変更する

Apigee Hybrid では、Cassandra ユーザーにデフォルト パスワードが用意されています。各ユーザーのデフォルト パスワードを変更する場合は、overrides.yaml ファイルで行います。次の構成を追加してデフォルト パスワード(「iloveapis123」)を自由に変更し、その変更をクラスタに適用します。

cassandra:
   auth:
     default:  ## the password for the new default user (static username: cassandra)
       password: "iloveapis123"
     admin: ## the password for the admin user (static username: admin_user)
       password: "iloveapis123"
     ddl: ## the password for the DDL User (static username: ddl_user)
       password: "iloveapis123"
     dml: ## the password for the DML User (static username: dml_user)
       password: "iloveapis123"
     jmx:
       username: "jmxuser" ## the username for the JMX User
       password: "iloveapis123" ## the password for the JMX User
     jolokia:
       username: "jolokiauser" ## the username to access jolokia interface
       password: "iloveapis123" ## the password for jolokia user

次の点にご注意ください。

  • 認証局(CA)のローテーションはサポートされていません。
  • パスフレーズ付きで生成されたサーバー証明書はサポートされていません。

Kubernetes Secret でユーザー名とパスワードを設定する

このセクションでは、認証に Kubernetes Secret を使用するように Cassandra を構成する方法について説明します。

Secret を作成する

次のテンプレートを使用して Kubernetes Secret を構成します。テンプレートをファイルに保存し、必要な属性を編集します。このオプションを使用する場合は、ユーザー名とパスワードを指定する必要があります。

apiVersion: v1
kind: Secret
metadata:
  name: $SECRET_NAME
  namespace: $APIGEE_NAMESPACE
type: Opaque
data:
  default.password: $PASSWORD   #base64-encoded string
  admin.user: $USERNAME   #base64-encoded string
  admin.password: $PASSWORD   #base64-encoded string
  dml.user: $USERNAME   #base64-encoded string
  dml.password: $PASSWORD   #base64-encoded string
  ddl.user: $USERNAME   #base64-encoded string
  ddl.password: $PASSWORD   #base64-encoded string
  jmx.user: $USERNAME   #base64-encoded string
  jmx.password: $PASSWORD   #base64-encoded string
  jolokia.user: $USERNAME   #base64-encoded string
  jolokia.password: $PASSWORD   #base64-encoded string
  

ここでは、$SECRET_NAME は Secret に付ける名前、$APIGEE_NAMESPACE は Apigee Pod がデプロイされている名前空間(デフォルトは apigee)、$USERNAME$PASSWORD は各ユーザーのユーザー名とパスワードです。ユーザー名とパスワードは Base64 でエンコードする必要があります。

Secret をクラスタに適用します。次に例を示します。

kubectl apply -f $SECRET_FILE

Secret をオーバーライド ファイルに追加します。

cassandra:
  auth:
    secret: $SECRET_NAME

更新された Cassandra のオーバーライドをクラスタに適用します。

$APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --datastore

Cassandra のログを確認する

Cassandra が起動したらすぐにログを確認します。次のログは、Cassandra のクライアント接続が暗号化されていることを示しています。

kubectl logs apigee-cassandra-2 -n apigee -f

INFO  00:44:36 Starting listening for CQL clients on /10.0.2.12:9042 (encrypted)...
INFO  00:44:36 Binding thrift service to /10.0.2.12:9160
INFO  00:44:36 enabling encrypted thrift connections between client and server
INFO  00:44:36 Listening for thrift clients...