Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/
Kubernetes Operator 用のMongoDBドライバー
/ /

X.509 クライアント証明書の生成

MongoDB Controls for Kubernetes Operator は、X.509認証を有効にしてMongoDBインスタンスを配置できます。配置で X.509認証が有効になっている場合は、配置に接続するために X.509 証明書を生成して使用する必要があります。この新しいクライアント証明書は、 MongoDBデプロイのサーバー証明書に署名するのと同じ CA によって署名されている必要があります。

このドキュメントで説明されている手順に従って、X.509 証明書を使用して X.509 対応の MongoDB 配置に接続します。

HashiCorp Vault を シークレットストレージツール として使用している場合は、代わりに Vault シークレットを作成 できます。

注意

MongoDB Ops Manager配置の証明書更新を自動化するには、 certs Manager 統合のセットアップ を検討してください。

注意

Transport Layer Security(TLS)、公開キー基盤(PKI)証明書、および認証局についての詳細な説明は、このドキュメントの範囲外です。 このページは TLS および X.509 認証に関する予備知識を前提としています。

最初にクライアント証明書を作成します。 次に、MongoDB ユーザーを作成し、X.509 対応の配置に接続します。

1

実稼働環境で使用する場合、 MongoDBデプロイには、 CA によって生成および署名された有効な証明書を使用する必要があります。ユーザーまたは組織は、cert-manager などの Kubernetes ネイティブ ツールを使用して、独立した CA を生成および維持できます。

証明書の取得と管理については、このドキュメントの範囲外です。

重要

.pemファイルでクライアントのTLS証明書と証明書のキーを連結する必要があります。 X.509 対応の MongoDB 配置に接続するときに、この.pemファイルを提示する必要があります。

クライアント証明書が持つ必要があるプロパティの詳細については、MongoDB マニュアルの 「クライアント証明書の要件」 を参照してください。

2

まだ作成していない場合は、次のコマンドを実行して、作成した名前空間ですべてのkubectlコマンドを実行します

注意

MongoDB Ops Manager リソースを複数の Kubernetes クラスター MongoDB 配置に配置している場合、次の手順に従います。

  • contextを中央クラスターの名前に設定します(例: kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"

  • MongoDB のマルチ配置に使用したのと同じスコープ(例: kubectl config --namespace "mongodb"--namespaceを設定します。

kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
3

次の ConfigMap をx509-mongodb-user.yamlとして保存します。

1---
2apiVersion: mongodb.com/v1
3kind: MongoDBUser
4metadata:
5 name: new-x509-user
6spec:
7 username: "CN=my-x509-authenticated-user,OU=organizationalunit,O=organization"
8 db: "$external"
9 mongodbResourceRef:
10 name: '<name of the MongoDB resource>'
11 roles:
12 - db: "admin"
13 name: "readWriteAnyDatabase"

この ConfigMap .yamlファイルはMongoDBUserカスタム オブジェクトを記述します。 これらのカスタム オブジェクトを使用して、MongoDB ユーザーを作成できます。 詳しくは、「 MongoDB ユーザー リソースの仕様 」を参照してください。

この例では、ConfigMap はユーザーを X.509 ユーザーとして説明し、クライアントは対応する X.509 証明書を使用して MongoDB に接続するために使用できます。

4

次のコマンドを実行して ConfigMap を適用し、X.509 MongoDB ユーザーを作成します。

kubectl apply -f x509-mongodb-user.yaml

次のような出力が表示されます。

mongodbuser.mongodb.com/new-x509-user created
5

次のコマンドを実行して、 new-x509-userの状態を確認します。

kubectl get mdbu/new-x509-user -o yaml

次のような出力が表示されます。

NAME CREATED AT
new-x509-user 8m
6

次のコマンドを実行して、各ポッドのどこに Kubernetes Operator がCAシークレットをマウントしているかを見つけます。

kubectl get statefulset <metadata.name> -o yaml

出力で、 secret-caマウントを見つけます。

volumeMounts:
- mountPath: /opt/scripts
name: database-scripts
readOnly: true
- mountPath: /var/lib/mongodb-automation/secrets/ca
name: secret-ca
readOnly: true
- mountPath: /var/lib/mongodb-automation/secrets/certs
name: secret-certs
readOnly: true

データベース配置に接続するときに、次の手順で、 mountPathsecret-caを追加します。これは完全パスを形成します。

/var/lib/mongodb-automation/secrets/ca/secret-ca
7

X.509 ユーザーを作成したら、MongoDB Shell( mongosh )を使用して配置に接続してみてください。

mongosh --host {host} --port {port} --tls \
--tlsCAFile </path/to/secret-ca> \
--tlsCertificateKeyFile <your-cert>.pem \
--authenticationMechanism MONGODB-X509 \
--authenticationDatabase '$external'
mongosh --host {host} --port {port} --ssl \
--sslCAFile </path/to/secret-ca> \
--sslPEMKeyFile <your-cert>.pem \
--authenticationMechanism MONGODB-X509 \
--authenticationDatabase '$external'

戻る

プロジェクトを 1 つ作成

項目一覧