このトピックでは、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...