Docs Home → Atlas オープン サービス ブロック
データベースユーザーの管理
重要
Atlas Open Service Blog は非推奨です。 MongoDB Atlas 演算子 の使用 ください。
Atlas Open Service Blog を通じて Atlasデータベースユーザーを作成および削除できます。
前提条件
データベースユーザーを管理する前に、レプリカセットを配置する必要があります。
データベースユーザーの追加
データベースユーザーを作成するには、まず ServiceBinding リソース を定義します (Kubernetes 内)。次に、Atlas Open Service Blog は Atlas に対応するデータベースユーザーを作成します。
必要な設定を構成します。
データベースユーザーを作成するには、強調表示された設定が必要です。
データベースユーザーを作成すると、Atlas Open Service Blocker はユーザー用の Atlas ユーザー名とパスワードをランダムに生成します。 サービスカタログには、ユーザーの Atlas ユーザー名、パスワード、接続 URI が Kubernetes シークレットに自動的に保存されます。
追加設定を指定しない場合、データベースユーザーは次のデフォルト属性で作成されます。
SCRAM-SHAadminデータベースでの認証readWriteAnyDatabaseadminデータベースに対する権限
ユーザーの追加設定を追加します。
spec.parameters.userキーでユーザーの追加設定を構成できます。 これらの設定は 、 データベースユーザーの パブリック API メソッドの リクエスト本体のパラメーター に対応します。
重要
次のAPIパラメーターは、前のステップの必須 Atlas Open Service Blocker 設定によって上書きされるため、指定しないでください。
databaseNamegroupIdpasswordusername
例
このリソース定義の例では、次のものが作成されます。
atlas名前空間内のatlas-user-1と呼ばれる Kubernetes リソース、および次の構成を持つ Atlas データベースユーザー :
SCRAM-SHAランダムに生成されたユーザー名とパスワードを使用したadminデータベースでの認証readWritesample_airbnbデータベース上のlistingsAndReviewsコレクションに対する権限dbAdminsample_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
新しいユーザーのステータスを表示します。
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
新しいユーザーの Atlas 接続の詳細を取得します。
ユーザーの接続の詳細は、 ServiceBindingリソースと同じ名前と名前空間を持つシークレットに保存されます。 シークレットは Kubernetes によって base64 でエンコードされ、Atlas のユーザー名、パスワード、ユーザーの URI が含まれています。
から
metadata.nameとmetadata.namespaceatlas-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 シークレットから次のコマンドに
data.usernameを渡して、ユーザーの Atlas ユーザー名を復号化します。echo '<DATA.USERNAME>' | base64 --decode このコマンドは、デコードされた Atlas ユーザー名を返します。
例
52c35e67-c7a3-11e9-8d20-0374ac110007 data.passwordとdata.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 を返します。