Kubernetes Operator は、 TLSおよび X.509 内部クラスター認証を有効にして実行されている配置のデータベースユーザーの管理をサポートしています。
サポートされている認証メカニズム
Kubernetes Operator は、作成する配置で SCRAM、LDAP、OpenID Connect、および X.509認証メカニズムをサポートします。Kubernetes Operator によって作成された配置では、MongoDB Ops Manager を使用して次の操作を行うことはできません。
配置用のその他の認証メカニズムを構成します。
SCRAM、LDAP、または X.509 認証を使用せずにユーザーを管理します。
X.509認証を有効にすると、MongoDB Ops ManagerインターフェースまたはCustomResourceDefinitionを使用して X.509 ユーザーを追加できます。
前提条件
データベースユーザーを管理する前に、 TLS と X. を有効にして、 レプリカセット または シャーディングされたクラスター509 を配置する必要があります。
MongoDB ユーザーの X.509 証明書を生成する必要がある場合は、「 X.509 クライアント証明書の生成 」を参照してください。
データベースユーザーの追加
kubectl
を名前空間にデフォルトします。
まだ作成していない場合は、次のコマンドを実行して、作成した名前空間ですべての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>
次の例をコピーします CustomResourceDefinition 。
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> ...
任意のテキスト エディターを開き、カスタムリソースデフォルト の例を新しいテキストファイルに貼り付けます。
必要に応じて、次のパラメーターの行を変更します。
次の表を使用すると、 MongoDB ユーザー リソース仕様の関連行を変更する方法がガイドします。
キー | タイプ | 説明 | 例 | |||
---|---|---|---|---|---|---|
| string | データベースユーザー リソースの名前。 リソース名は 44 文字以下にする必要があります。 |
| |||
| string | Kubernetes CA (Kubernetes CA)によって署名された x509 クライアント証明書の件名。 重要: ユーザー名はRFC 2253 LDAPv3識別名基準に準拠する必要があります。 X.509 証明書の件名を取得するには、次のコマンドを実行します。
|
| |||
| string | ユーザーが追加される MongoDB database を含むプロジェクトの名前。 |
| |||
| string | ロールが操作できるデータベース。 |
| |||
| string | このユーザーが関連付けられているMongoDB リソースの名前。 |
| |||
| string |
|
ユーザーの追加のロールを CustomResourceDefinition に追加します。
次の例で定義されている形式を使用して、このユーザーに追加のロールを付与できます。
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 ...
ユーザーを作成します。
次の Kubernetes コマンドを呼び出して、データベースユーザーを作成します。
kubectl apply -f <database-user-conf>.yaml
新しいMongoDBデータベースユーザーを作成すると、 Kubernetes Operator は自動的に新しいKubernetes secret を作成します。Kubernetesシークレットには、新しいデータベースユーザーに関する次の情報が含まれています。
username
: データベースユーザーのユーザー名password
: データベースユーザーのパスワードconnectionString.standard
: このデータベース ユーザーとしてデータベースに接続できる標準接続string 。connectionString.standardSrv
: このデータベースユーザーとしてデータベースに接続できるDNS シード リスト接続string 。
注意
あるいは、spec.connectionStringSecretName
MongoDB ユーザー リソース仕様 で任意の フィールドを指定して、string KubernetesOperator が作成する接続 シークレットの名前を指定することもできます。
データベースユーザーの削除
データベースユーザーを削除するには、ユーザー ConfigMap から次のコマンドに metadata.name
を渡します。
kubectl delete mdbu <metadata.name>