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認証を有効 にした後、Ops Manager インターフェースを使用するか、 MongoDBユーザー リソース仕様に基づいて CustomResourceDefinition でユーザーを構成することで、SCRAM ユーザーを追加できます。
前提条件
データベースユーザーを管理する前に、スタンドアロン、レプリカセット、またはシャーディングされたクラスター を配置する必要があります。
MongoDB のマルチ Kubernetes クラスター配置の場合は、レプリカセットを配置する必要があります。 「複数のクラスターの配置 」を参照してください。
データベースユーザーの追加
重要
同じデータベースユーザーを、複数の MongoDBスタンドアロン、レプリカセット、または シャーディングされたクラスターに割り当てることはできません。 これには、 adminロールを持つデータベースユーザーが含まれます。
ユーザー シークレットの作成
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 authentication roles: - db: "admin" name: "clusterAdmin" - db: "admin" name: "userAdminAnyDatabase" - db: "admin" name: "readWrite" ...
強調表示された行を変更します。
次の表を使用すると、 MongoDB ユーザー リソース仕様で強調表示された行を変更する方法がガイドします。
キー | タイプ | 説明 | 例 |
|---|---|---|---|
| string | データベースユーザー リソースの名前。 リソース名は 44 文字以下にする必要があります。 |
|
| string | データベースユーザーの名前。 |
|
| string |
|
|
| string | このユーザーが関連付けられているMongoDB リソースの名前。 |
|
| string | ロールが機能できるデータベース。 |
|
| string | データベースユーザーに付与するロールの名前。ロール名は、 Cloud Managerまたは Ops Manager に存在する任意のMongoDBロールまたはカスタムロールにすることができます。 |
|
ユーザーを作成します。
次の Kubernetes コマンドを呼び出して、データベースユーザーを作成します。
kubectl apply -f <database-user-conf>.yaml
新しいMongoDBデータベースユーザーを作成すると、 Kubernetes Operator によって自動的に新しいKubernetesシークレットが作成されます。 Kubernetesシークレットには、新しいデータベースユーザーに関する次の情報が含まれています。
username: データベースユーザーのユーザー名password: データベースユーザーのパスワードconnectionString.standard: このデータベース ユーザーとしてデータベースに接続できる標準接続string 。
注意
あるいは、spec.connectionStringSecretNameMongoDB ユーザー リソース仕様 で任意の フィールドを指定して、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状態になるまで待ちます。