Docs Menu

Docs HomeAtlas オープン サービス ブロック

データベースユーザーの管理

項目一覧

  • 前提条件
  • データベースユーザーの追加
  • データベースユーザーの削除

重要

Atlas Open Service Blog は非推奨です。 MongoDB Atlas 演算子 の使用 ください。

Atlas Open Service Blog を通じて Atlasデータベースユーザーを作成および削除できます。

データベースユーザーを管理する前に、レプリカセットを配置する必要があります。

データベースユーザーを作成するには、まず ServiceBinding リソース を定義します (Kubernetes 内)。次に、Atlas Open Service Blog は Atlas に対応するデータベースユーザーを作成します。

1
  1. 次のリソース定義の例をコピーします。

    これは、必要な構成に合わせて変更できる YAMLファイルです。

    apiVersion: servicecatalog.k8s.io/v1beta1
    kind: ServiceBinding
    metadata:
    name: <USER_NAME>
    namespace: <NAMESPACE>
    spec:
    instanceRef:
    name: <CLUSTER_NAME>
  2. テキスト エディターを開き、リソース定義を新しいテキスト ファイルに貼り付けます。

2

データベースユーザーを作成するには、強調表示された設定が必要です。

キー
説明
metadata.name
Kubernetes 内のサービス バインディング リソースの名前。
atlas-user-1
metadata.namespace
Kubernetes 名前空間 サービス バインディング リソースが作成される場所。
atlas
spec.intanceRef.name
Atlas クラスターに対応する Kubernetes 内のServiceInstanceリソースの名前。
my-atlas-cluster

データベースユーザーを作成すると、Atlas Open Service Blocker はユーザー用の Atlas ユーザー名とパスワードをランダムに生成します。 サービスカタログには、ユーザーの Atlas ユーザー名、パスワード、接続 URI が Kubernetes シークレットに自動的に保存されます。

追加設定を指定しない場合、データベースユーザーは次のデフォルト属性で作成されます。

  • SCRAM-SHA adminデータベースでの認証

  • readWriteAnyDatabase adminデータベースに対する権限

3

spec.parameters.userキーでユーザーの追加設定を構成できます。 これらの設定は 、 データベースユーザーの パブリック API メソッドの リクエスト本体のパラメーター に対応します。

重要

次のAPIパラメーターは、前のステップの必須 Atlas Open Service Blocker 設定によって上書きされるため、指定しないでください。

  • databaseName

  • groupId

  • password

  • username

このリソース定義の例では、次のものが作成されます。

  1. atlas名前空間内のatlas-user-1と呼ばれる Kubernetes リソース、および

  2. 次の構成を持つ Atlas データベースユーザー :

    • SCRAM-SHA ランダムに生成されたユーザー名とパスワードを使用したadminデータベースでの認証

    • readWrite sample_airbnbデータベース上のlistingsAndReviewsコレクションに対する権限

    • dbAdmin sample_geospatialデータベースへの権限

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceBinding
metadata:
name: atlas-user-1
namespace: atlas
spec:
instanceRef:
name: my-atlas-cluster
parameters:
user:
roles:
- databaseName: sample_airbnb
collectionName: listingsAndReviews
roleName: readWrite
- databaseName: sample_geospatial
roleName: dbAdmin
4
5

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

kubectl apply -f atlas-user-1.yaml
6

Kubernetes クラスター内の新しいユーザーのステータスを表示するには、metadata.name からのreplica-set.yaml を次のコマンドに渡します。

svcat describe instance <METADATA.NAME> -n <METADATA.NAMESPACE>

ユーザーのステータスはBindingsの下に表示されます。

Bindings:
NAME STATUS
+---------------+--------+
atlas-user-1 Ready

ユーザーの詳細ビューを表示するには、metadata.name からのatlas-user-1.yaml を次のコマンドに渡します。

svcat describe binding <METADATA.NAME> -n <METADATA.NAMESPACE>

コマンドは、ユーザーの詳細を返します。

Name: atlas-user-1
Namespace: atlas
Status: Ready - Injected bind result @ 2019-08-24 20:57:43 +0000 UTC
Secret: atlas-user-1
Instance: my-replica-set
Parameters:
user:
roles:
- collectionName: listingsAndReviews
databaseName: sample_airbnb
roleName: readWrite
- databaseName: sample_geospatial
roleName: dbAdmin
Secret Data:
password 44 bytes
uri 58 bytes
username 36 bytes
7

ユーザーの接続の詳細は、 ServiceBindingリソースと同じ名前と名前空間を持つシークレットに保存されます。 シークレットは Kubernetes によって base64 でエンコードされ、Atlas のユーザー名、パスワード、ユーザーの URI が含まれています。

  1. からmetadata.namemetadata.namespace atlas-user-1.yamlを次のコマンドに渡して、ユーザーの Kubernetes シークレットを取得します。

    kubectl get secret <METADATA.NAME> -n <METADATA.NAMESPACE> -o yaml

    このコマンドは、base64 でエンコードされた Atlas のパスワード、URI、およびユーザーのユーザー名を返します。

    apiVersion: v1
    data:
    password: MlFhTnB4NzNoaEYwZWFKFMCjRUlNU2Iwbk5OMnJPT0JGZnZOeldKMS16Zz0=
    uri: bW9uZ29kYitzcnY6Ly8wMTY5YjA5My1jNTEyLTExZTktOGQyMC1kbjZyNy5tb25nb2RiLXFhLm5ldA==
    username: NTJjMzVlNjctYzdhMy0xMWKR7ThkMjAtMDI0MmFjMTEwMDA3
    kind: Secret
    metadata:
    creationTimestamp: "2019-08-26T01:46:30Z"
    name: atlas-user-1
    namespace: atlas
    ownerReferences:
    - apiVersion: servicecatalog.k8s.io/v1beta1
    blockOwnerDeletion: true
    controller: true
    kind: ServiceBinding
    name: atlas-user-1
    uid: 52c35ea1-c7a3-11e9-8d20-0242ac113457
    resourceVersion: "79692"
    selfLink: /api/v1/namespaces/atlas/secrets/atlas-user-1
    uid: 14829566-4859-4b47-97f6-d0a2f7425906
    type: Opaque
  2. シークレットから次のコマンドにdata.usernameを渡して、ユーザーの Atlas ユーザー名を復号化します。

    echo '<DATA.USERNAME>' | base64 --decode

    このコマンドは、デコードされた Atlas ユーザー名を返します。

    52c35e67-c7a3-11e9-8d20-0374ac110007

    data.passworddata.uriで コマンドを繰り返し、ユーザーの Atlas パスワードと URI を復号化します。

    echo '<DATA.PASSWORD>' | base64 --decode
    echo '<DATA.URI>' | base64 --decode

Tip

Atlas クラスターへの接続

配置に接続するには、デコードされた Atlas URI とユーザー名を次のコマンドに渡します。

mongo <DECODED_URI> --username <DECODED_USERNAME>

パスワードの入力を求められたら、ユーザーのデコードされた Atlas パスワードを入力します。

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

kubectl delete servicebindings <METADATA.NAME> \
-n <METADATA.NAMESPACE>

ユーザーが削除されたことを確認するには、クラスター リソースから次のコマンドにmetadata.nameを渡します。

svcat describe instance <METADATA.NAME> -n <METADATA.NAMESPACE>

このコマンドは、No bindings defined の下にBindings を返します。

フィードバックの共有
© 2023 MongoDB, Inc.

会社概要

© 2023 MongoDB, Inc.