Docs Menu
Docs Home
/
MongoDB Enterprise Kubernetes 演算子
/ /

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>