Docs Menu
Docs Home
/
MongoDB Enterprise Kubernetes 演算子
/ /

SCRAM 認証を使用したデータベースユーザーの管理

項目一覧

  • Considerations
  • 前提条件
  • データベースユーザーの追加
  • データベースユーザーの削除
  • 認証メカニズムの変更

Kubernetes Operator は、MongoDB 配置で SCRAM 認証を使用したデータベースユーザーの管理をサポートしています。

認証メカニズムとして SCRAMを指定した場合、使用される SCRAM の実装は以下によって異なります。

  • MongoDB のバージョンと

  • データベースが アプリケーション データベース または別のデータベースである場合。

MongoDB バージョン
Database
SCRAM の実装

3.6 またはそれ以前

アプリケーション データベースを除く

SCRAM-SHA-1

4.0 以降

アプリケーション データベースを除く

SCRAM-SHA-256

Any

アプリケーション データベース

SCRAM-SHA-1

Kubernetes Operator は、作成する配置で SCRAM、LDAP、および X. 509認証メカニズムをサポートします。 Kubernetes Operator によって作成された配置では、 MongoDB Ops Managerを使用して次の操作を行うことはできません。

  • 配置用のその他の認証メカニズムを構成します。

  • SCRAM、LDAP、または X.509 認証を使用せずにユーザーを管理します。

SCRAM認証を有効 SCRAMにした後、 MongoDBSCRAM Ops Managerインターフェースを使用するか、 MongoDBユーザーMongoDB Ops Manager リソース仕様に基づいて CustomResourceDefinition でユーザーを構成することで、SCRAMMongoDB ユーザーを追加できます。

データベースユーザーを管理する前に、スタンドアロンレプリカセット、またはシャーディングされたクラスター を配置する必要があります。

MongoDB のマルチ Kubernetes クラスター配置の場合は、レプリカセットを配置する必要があります。 「複数のクラスターの配置 」を参照してください。

重要

同じデータベースユーザーを、複数の MongoDBスタンドアロンレプリカセット、または シャーディングされたクラスターに割り当てることはできません。 これには、 adminロールを持つデータベースユーザーが含まれます。

1

まだ作成していない場合は、次のコマンドを実行して、作成した名前空間ですべての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>
2

クリアテキストのパスワードを使用することを選択できます。

1---
2apiVersion: v1
3kind: Secret
4metadata:
5 name: <mms-user-1-password>
6 # corresponds to user.spec.passwordSecretKeyRef.name
7type: Opaque
8stringData:
9 password: <my-plain-text-password>
10 # corresponds to user.spec.passwordSecretKeyRef.key
11...

または、Base64 でエンコードされたパスワードを使用することを選択できます。

1---
2apiVersion: v1
3kind: Secret
4metadata:
5 name: <mms-user-1-password>
6 # corresponds to user.spec.passwordSecretKeyRef.name
7type: Opaque
8data:
9 password: <base-64-encoded-password>
10 # corresponds to user.spec.passwordSecretKeyRef.key
11...

注意

必要なパスワード構成を必ずコピーしてください。 プレーンテキスト パスワードではstringData.passwordが使用され、Base64 でエンコードされたパスワードではdata.passwordが使用されます。

3
  1. 希望のテキストエディタを開きます。

  2. このユーザー シークレットを新しいテキストファイルに貼り付けます。

HashiCorp Vault を使用している場合 シークレット ストレージ ツール として使用する場合は、代わりに Vault シークレットを作成 できます。

シークレット ストレージのオプションの詳細については、「シークレット ストレージの構成 」を参照してください。

4

次の表を使用すると、シークレットで強調表示された行を変更する方法がガイドされます。

キー
タイプ
説明

metadata.name

string

データベース パスワード シークレットの名前。

リソース名は 44 文字以下にする必要があります。

mms-scram-user-1-password

stringData.password

string

任意のユーザーのプレーンテキスト パスワード。

このオプションと値、またはdata.passwordを使用します。 両方を使用することはできません。

<my-plain-text-password>

data.password

string

任意のユーザーの base64 でエンコードされたパスワード。

このオプションと値、またはstringData.passwordを使用します。 両方を使用することはできません。

自分でパスワードを base64 にエンコードしてから、結果の値をこのオプションで貼り付ける必要があります。 ほとんどすべてのプラットフォーム向けのツールや、複数のウェブベースのツールにも対応しています。

<my-base64-encoded-password>

5
1
---
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"
...
2
  1. 希望のテキストエディタを開きます。

  2. この MongoDBUser を新しい YAML ファイルに貼り付けます。

3

次の表を使用すると、 MongoDB ユーザー リソース仕様で強調表示された行を変更する方法がガイドします。

キー
タイプ
説明

metadata.name

string

データベースユーザー リソースの名前。

リソース名は 44 文字以下にする必要があります。

mms-scram-user-1

spec.username

string

データベースユーザーの名前。

mms-scram-user-1

spec.passwordSecretKeyRef.name

string

metadata.name ユーザーのパスワードを保存するシークレットの値。

my-resource

spec.mongodbResourceRef.name

string

このユーザーが関連付けられているMongoDB リソースの名前。

my-resource

spec.roles.db

string

ロールが機能できるデータベース。

admin

spec.roles.name

string

データベースユーザーに付与するロールの名前。 ロール名は、 MongoDBCloud Managerまたは に存在する任意 の ロール または カスタムロールMongoDB Ops Manager にすることができます。

readWriteAnyDatabase

4

このユーザーに追加のロールを付与できます。

5
6

次の Kubernetes コマンドを呼び出して、データベースユーザーを作成します。

kubectl apply -f <database-user-conf>.yaml

新しい MongoDB データベースユーザーを作成すると、Kubernetes Operator は新しい Kubernetes シークレット を自動的に作成します。 。Kubernetes シークレット には、新しいデータベースユーザーに関する次の情報が含まれています。

  • username: データベースユーザーのユーザー名

  • password: データベースユーザーのパスワード

  • connectionString.standard: このデータベース ユーザーとしてデータベースに接続できる標準接続string

  • connectionString.standardSrv: このデータベースユーザーとしてデータベースに接続できるDNS シード リスト接続string

注意

あるいは、spec.connectionStringSecretNameMongoDB ユーザー リソース仕様 で任意の フィールドを指定して、string KubernetesOperator が作成する接続 シークレットの名前を指定することもできます。

これらの認証情報を使用して、Kubernetes 内から MongoDB Database リソースに接続できます。

7

新しく作成されたユーザーは、 Cloud ManagerまたはMongoDB Ops Managerで表示できます。

  1. プロジェクトのDeploymentビューから、 Securityタブをクリックします。

  2. [ MongoDB Users ] ネストされたタブをクリックします。

データベースユーザーを削除するには、ユーザー MongoDBUser から次のコマンドにmetadata.nameを渡します。

kubectl delete mdbu <metadata.name>

ユーザー認証メカニズムを SCRAM に変更するには:

  1. 認証を無効にします。

    spec.security.authenticationの下で、 enabledfalseに変更します。

    spec:
    security:
    authentication:
    enabled : false
  2. ユーザーのリソース定義を再適用します。

  3. MongoDBResource がrunning状態になるまで待ちます。

  4. SCRAM 認証を有効にします。

    spec.security.authenticationの下で、 enabledtrueに変更し、 spec.security.authentication.modesを `` ["SCRAM"]`` に設定します。

    spec:
    security:
    authentication:
    enabled : true
    modes: ["SCRAM"]
  5. MongoDBUser リソースを再適用します。

  6. MongoDBResource がrunning状態になるまで待ちます。