Kubernetes Operator は、MongoDB 配置で SCRAM 認証を使用したデータベースユーザーの管理をサポートしています。
Considerations
サポートされている SCRAM 実装
認証メカニズムとして SCRAM
を指定した場合、使用される SCRAM の実装は以下によって異なります。
MongoDB のバージョンと
データベースが アプリケーション データベース または別のデータベースである場合。
MongoDB バージョン | Database | SCRAM の実装 |
---|---|---|
3.6 またはそれ以前 | アプリケーション データベースを除く |
|
4.0 以降 | アプリケーション データベースを除く |
|
Any | アプリケーション データベース |
|
サポートされている認証メカニズム
Kubernetes Operator は、作成する配置で SCRAM、LDAP、および X. 509認証メカニズムをサポートします。 Kubernetes Operator によって作成された配置では、 MongoDB Ops Managerを使用して次の操作を実行することはできません。
配置用のその他の認証メカニズムを構成します。
SCRAM、LDAP、または X.509 認証を使用せずにユーザーを管理します。
SCRAM認証を有効 にした後、 MongoDB Ops Managerインターフェースを使用するか、 MongoDBユーザーリソース仕様 に基づいて CustomResourceDefinition でユーザーを構成することで、SCRAM ユーザーを追加できます。
前提条件
データベースユーザーを管理する前に、スタンドアロン、レプリカセット、またはシャーディングされたクラスター を配置する必要があります。
MongoDB のマルチ Kubernetes クラスター配置の場合は、レプリカセットを配置する必要があります。 「複数のクラスターの配置 」を参照してください。
データベースユーザーの追加
重要
ユーザー シークレットの作成
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>
次の例シークレットをコピーします。
クリアテキストのパスワードを使用することを選択できます。
1 2 apiVersion: v1 3 kind: Secret 4 metadata: 5 name: <mms-user-1-password> 6 # corresponds to user.spec.passwordSecretKeyRef.name 7 type: Opaque 8 stringData: 9 password: <my-plain-text-password> 10 # corresponds to user.spec.passwordSecretKeyRef.key 11 ...
または、Base64 でエンコードされたパスワードを使用することを選択できます。
1 2 apiVersion: v1 3 kind: Secret 4 metadata: 5 name: <mms-user-1-password> 6 # corresponds to user.spec.passwordSecretKeyRef.name 7 type: Opaque 8 data: 9 password: <base-64-encoded-password> 10 # corresponds to user.spec.passwordSecretKeyRef.key 11 ...
注意
必要なパスワード構成を必ずコピーしてください。 プレーンテキスト パスワードではstringData.password
が使用され、Base64 でエンコードされたパスワードではdata.password
が使用されます。
新しいユーザー シークレット YAML ファイルを作成します。
希望のテキストエディタを開きます。
このユーザー シークレットを新しいテキストファイルに貼り付けます。
HashiCorp Vault を シークレットストレージツール として使用している場合は、代わりに Vault シークレットを作成 できます。
シークレット ストレージのオプションの詳細については、「シークレット ストレージの構成 」を参照してください。
強調表示された行を変更します。
次の表を使用すると、シークレットで強調表示された行を変更する方法がガイドされます。
キー | タイプ | 説明 | 例 |
---|---|---|---|
| string | データベース パスワード シークレットの名前。 リソース名は 44 文字以下にする必要があります。 |
|
| string | 任意のユーザーのプレーンテキスト パスワード。 このオプションと値、または |
|
| string | 任意のユーザーの base64 でエンコードされたパスワード。 このオプションと値、または 自分でパスワードを base64 にエンコードしてから、結果の値をこのオプションで貼り付ける必要があります。 ほとんどすべてのプラットフォーム向けのツールや、複数のウェブベースのツールにも対応しています。 |
|
MongoDBUser の作成
次の例の MongoDBUser をコピーします。
apiVersion: mongodb.com/v1 kind: MongoDBUser metadata: name: <mms-scram-user-1> spec: passwordSecretKeyRef: name: <mms-user-1-password> # Match to metadata.name of the User Secret key: password username: "<mms-scram-user-1>" db: "admin" # mongodbResourceRef: name: "<my-replica-set>" # Match to MongoDB resource using authenticaiton roles: - db: "admin" name: "clusterAdmin" - db: "admin" name: "userAdminAnyDatabase" - db: "admin" name: "readWrite" - db: "admin" name: "userAdminAnyDatabase" ...
強調表示された行を変更します。
次の表を使用すると、 MongoDB ユーザー リソース仕様で強調表示された行を変更する方法がガイドします。
キー | タイプ | 説明 | 例 |
---|---|---|---|
| string | データベースユーザー リソースの名前。 リソース名は 44 文字以下にする必要があります。 |
|
| string | データベースユーザーの名前。 |
|
| string |
|
|
| string | このユーザーが関連付けられているMongoDB リソースの名前。 |
|
| string | ロールが機能できるデータベース。 |
|
| string |
|
ユーザーを作成します。
次の 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 が作成する接続 シークレットの名前を指定することもできます。
データベースユーザーの削除
データベースユーザーを削除するには、ユーザー MongoDBUser から次のコマンドにmetadata.name
を渡します。
kubectl delete mdbu <metadata.name>
認証メカニズムの変更
ユーザー認証メカニズムを SCRAM に変更するには:
認証を無効にします。
spec.security.authentication
の下で、enabled
をfalse
に変更します。spec: security: authentication: enabled : false ユーザーのリソース定義を再適用します。
MongoDBResource が
running
状態になるまで待ちます。SCRAM 認証を有効にします。
spec.security.authentication
の下で、enabled
をtrue
に変更し、spec.security.authentication.modes
を `` ["SCRAM"]`` に設定します。spec: security: authentication: enabled : true modes: ["SCRAM"] MongoDBUser リソースを再適用します。
MongoDBResource が
running
状態になるまで待ちます。