LDAP 認証を使用したデータベースユーザーの管理
Kubernetes Operator は、 TLSおよび LDAP クラスター認証を有効にして実行されている配置のデータベースユーザーの管理をサポートしています。
Considerations
LDAP経由で認証されたユーザーの構成は、LDAP クエリ テンプレート と MongoDB が確立するマッピングに依存します。
詳細については、MongoDB Server ドキュメントの次のセクションを参照してください。
サポートされている認証メカニズム
Kubernetes Operator は、作成する配置で SCRAM、LDAP、および X. 509認証メカニズムをサポートします。 Kubernetes Operator によって作成された配置では、 MongoDB Ops Managerを使用して次の操作を実行することはできません。
配置用のその他の認証メカニズムを構成します。
SCRAM、LDAP、または X.509 認証を使用せずにユーザーを管理します。
前提条件
データベースユーザーを管理する前に、 LDAP を有効にして レプリカセット または シャーディングされたクラスター をデプロイする必要があります。有効になっている。 オプションで、 TLSを有効にできます。 詳細については、「データベース リソースの保護 」を参照してください。
データベースユーザーの追加
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: ldap-user-1 spec: username: "uid=mdb0,dc=example,dc=org" db: "$external" mongodbResourceRef: name: ldap-replica-set roles: - db: "admin" name: "clusterAdmin" - db: "admin" name: "readWriteAnyDatabase" - db: "admin" name: "dbAdminAnyDatabase" ...
任意のテキスト エディターを開き、カスタムリソース デフォルトの例を新しい テキストファイルに貼り付けます。
必要に応じて、次のパラメーターの行を変更します。
次の表を使用すると、 MongoDB ユーザー リソース仕様の関連行を変更する方法をガイドします。 LDAP ユーザー設定の完全なリストについては、 Kubernetes Operator MongoDB リソース仕様 のセキュリティ設定を参照してください。
キー | タイプ | 説明 | 例 |
---|---|---|---|
metadata.name | string | MongoDB データベース ユーザーのリソースの名前。 リソース名は 44 文字以下にする必要があります。 | ldap-user-1 |
spec.db | string | ユーザーが追加される MongoDB database の名前。 この値は $external である必要があります。 | $external |
spec.mongodbResourceRef.name | string | このユーザーが関連付けられているMongoDB リソースの名前。 | my-resource |
spec.opsManager.configMapRef.name | string | ユーザーが追加される MongoDB database を含むプロジェクトの名前。 spec.cloudManager.configMapRef.name 設定はこの設定のエイリアスであり、代わりに使用できます。 | my-project |
spec.roles.db | string | ロールが操作できるデータベース。 | admin |
spec.roles.name | string | readWriteAnyDatabase | |
spec.username | string |
詳細については、MongoDB マニュアルの「 LDAP クエリ テンプレート」を参照してください。 | uid=mdb0,dc=example,dc=org |
ユーザーの追加のロールを CustomResourceDefinition に追加します。
次の例で定義されている形式を使用して、このユーザーに追加のロールを付与できます。
apiVersion: mongodb.com/v1 kind: MongoDBUser metadata: name: ldap-user-1 spec: username: "uid=mdb0,dc=example,dc=org" db: "$external" mongodbResourceRef: name: ldap-replica-set roles: - db: "admin" name: "clusterAdmin" - db: "admin" name: "readWriteAnyDatabase" - db: "admin" name: "dbAdminAnyDatabase" ...
ユーザーを作成します。
次の Kubernetes コマンドを呼び出して、データベースユーザーを作成します。
kubectl apply -f <database-user-conf>.yaml
stringLDAP次の例は、Kubernetes MongoDBOperator の配置で による認証を有効にするときに使用できる接続 の形式を示しています。これらの例では、 mongodb
名前空間とreplica-set-ldap
という名前のレプリカセットの配置を使用します。 シャーディングされたクラスターでも、例は同様です。
connectionString.standard
: このデータベース ユーザーとしてデータベースに接続できる標準接続string 。mongodb://replica-set-ldap-0-0-svc.mongodb.svc.cluster.local/?connectTimeoutMS=20000&replicaSet=replica-set-ldap&serverSelectionTimeoutMS=20000&ssl=true&authSource=$external connectionString.standardSrv
: このデータベースユーザーとしてデータベースに接続できるDNS シード リスト接続string 。mongodb+srv://replica-set-ldap-svc.mongodb.svc.cluster.local/?connectTimeoutMS=20000&replicaSet=replica-set-ldap&serverSelectionTimeoutMS=20000&ssl=true&authSource=$external
以前に表示された形式を使用して、次の例のように MongoDB Shell( mongosh
)で MongoDB database に接続できます。
mongosh <connection-string> \ --host <my-replica-set>/web1.example.com \ --port 30907 \ --authenticationMechanism PLAIN \ --username cn=rob,cn=Users,dc=ldaps-01,dc=myteam,dc=com
これらの認証情報を使用して、Kubernetes 内から MongoDB Database Resource に接続できます。
データベースユーザーの削除
データベースユーザーを削除するには、ユーザーmetadata.name
ConfigMap から を渡します 次のコマンドに渡す追加オプション。
kubectl delete mdbu <metadata.name>