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 MongoDB MongoDB Ops ManagerOps Managerインターフェースまたは CustomResourceDefinition を使用して X. ユーザーを追加できます。
前提条件
データベースユーザーを管理する前に、 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 ユーザー リソース仕様の関連行を変更する方法がガイドします。
キー | タイプ | 説明 | 例 | |||
---|---|---|---|---|---|---|
metadata.name | string | データベースユーザー リソースの名前。 リソース名は 44 文字以下にする必要があります。 | mms-user-1 | |||
spec.username | string | Kubernetes CA (Kubernetes CA)によって署名された x509 クライアント証明書の件名。 重要: ユーザー名は RFC2253 3に準拠する必要があります。 LDAPv 識別名 標準。 X.509 証明書の件名を取得するには、次のコマンドを実行します。
| 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 | readWriteAnyDatabase |
ユーザーの追加のロールを 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 シークレット を自動的に作成します。 。Kubernetes シークレット には、新しいデータベースユーザーに関する次の情報が含まれています。
username
: データベースユーザーのユーザー名password
: データベースユーザーのパスワードconnectionString.standard
: このデータベース ユーザーとしてデータベースに接続できる標準接続string 。connectionString.standardSrv
: このデータベースユーザーとしてデータベースに接続できるDNS シード リスト接続string 。
注意
あるいは、spec.connectionStringSecretName
MongoDB ユーザー リソース仕様 で任意の フィールドを指定して、string KubernetesOperator が作成する接続 シークレットの名前を指定することもできます。
データベースユーザーの削除
データベースユーザーを削除するには、ユーザーmetadata.name
ConfigMap から を渡します 次のコマンドに渡す追加オプション。
kubectl delete mdbu <metadata.name>