ANNOUNCEMENT: Voyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas.
Learn more
Docs Menu

X.509 認証を使用したデータベースユーザーの管理

Kubernetes Operator は、 TLSおよび X.509 内部クラスター認証を有効にして実行されている配置のデータベースユーザーの管理をサポートしています。

Kubernetes Operator は、作成する配置で SCRAM、LDAP、および X. 509認証メカニズムをサポートします。 Kubernetes Operator によって作成された配置では、 MongoDB Ops Managerを使用して次の操作を実行することはできません。

  • 配置用のその他の認証メカニズムを構成します。

  • SCRAM、LDAP、または X.509 認証を使用せずにユーザーを管理します。

X.509 認証を有効にすると、509 インターフェースまたは CustomResourceDefinitionMongoDB Ops Manager を使用して X. ユーザーを追加できます 。

データベースユーザーを管理する前に、 TLS X.509 を有効にして レプリカセット または シャーディングされたクラスター を配置する必要があります。

MongoDB ユーザーの X.509 証明書を生成する必要がある場合は、「 X.509 クライアント証明書の生成 」を参照してください。

1

まだ作成していない場合は、次のコマンドを実行して、作成した名前空間ですべての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>
2
---
apiVersion: mongodb.com/v1
kind: MongoDBUser
metadata:
name: <resource-name>
spec:
username: <rfc2253-subject>
db: "$external"
mongodbResourceRef:
name: '<MongoDB-Resource-name>'
roles:
- db: <database-name>
name: <role-name>
...
3
4

次の表を使用すると、 MongoDB ユーザー リソース仕様の関連行を変更する方法がガイドします。

キー
タイプ
説明

metadata.name

string

データベースユーザー リソースの名前。

リソース名は 44 文字以下にする必要があります。

mms-user-1

spec.username

string

Kubernetes CA (Kubernetes CA)によって署名された x509 クライアント証明書の件名。

重要: ユーザー名は RFC2253 3に準拠する必要があります。 LDAPv 識別名 標準。

X.509 証明書の件名を取得するには、次のコマンドを実行します。

openssl x509 -noout \
-subject -in <my-cert.pem> \
-nameopt RFC2253

CN=mms-user,U=My Organizational Unit,O=My Org,L=New York,ST=New York,C=US

spec.opsManager.configMapRef.name

string

ユーザーが追加される MongoDB database を含むプロジェクトの名前。 spec.cloudManager.configMapRef.name設定はこの設定のエイリアスであり、代わりに使用できます。

my-project

spec.roles.db

string

ロールが操作できるデータベース。

admin

spec.mongodbResourceRef.name

string

このユーザーが関連付けられているMongoDB リソースの名前。

my-resource

spec.roles.name

string

データベースユーザーに付与するロールの名前。 ロール名は、 MongoDBCloud Managerまたは に存在する任意 の ロール または カスタムロールMongoDB Ops Manager にすることができます。

readWriteAnyDatabase

5

次の例で定義されている形式を使用して、このユーザーに追加のロールを付与できます。

---
apiVersion: mongodb.com/v1
kind: MongoDBUser
metadata:
name: mms-user-1
spec:
username: CN=mms-user,U=My Organizational Unit,O=My Org,L=New York,ST=New York,C=US
project: my-project
db: "$external"
roles:
- db: admin
name: backup
- db: admin
name: restore
...
6

次の Kubernetes コマンドを呼び出して、データベースユーザーを作成します。

kubectl apply -f <database-user-conf>.yaml

新しい MongoDB データベースユーザーを作成すると、Kubernetes Operator は新しい Kubernetes シークレット を自動的に作成します。 。Kubernetes シークレット には、新しいデータベースユーザーに関する次の情報が含まれています。

  • username : データベースユーザーのユーザー名

  • password : データベースユーザーのパスワード

  • connectionString.standard: このデータベースユーザーとしてデータベースに接続できる標準接続string

  • connectionString.standardSrv: このデータベースユーザーとしてデータベースに接続できるDNS シードリスト接続string

注意

あるいは、spec.connectionStringSecretNameMongoDB ユーザー リソース仕様 で任意の フィールドを指定して、string KubernetesOperator が作成する接続 シークレットの名前を指定することもできます。

これらの認証情報を使用して、Kubernetes 内から MongoDB Database リソースに接続できます。

7

新しく作成されたユーザーは、 Cloud ManagerまたはMongoDB Ops Managerで表示できます。

  1. プロジェクトのDeploymentビューから、 Securityタブをクリックします。

  2. [ MongoDB Users ] ネストされたタブをクリックします。

データベースユーザーを削除するには、ユーザーmetadata.name ConfigMap から を渡します 次のコマンドに渡す追加オプション。

kubectl delete mdbu <metadata.name>