IBM Cloud Docs
ユーザーとロールの管理

ユーザーとロールの管理

Databases for MongoDBのデプロイメントでは認証が有効になっており、MongoDB's ロールベースのアクセス制御を使います。

Cloud Databases CLI プラグイン、または Cloud Databases API を使用して、 _「サービス資格情報」_の UI にユーザーを追加します。

管理者ユーザー

Databases for MongoDB デプロイメントをプロビジョンすると、 admin ユーザーが自動的に作成されます。

接続に使用する前に管理者パスワードを設定してください。

admin ユーザーには、以下の権限があります。

  • userAdminAnyDatabase は、 local および config を除くすべてのデータベースで userAdmin と同じ特権を提供します。 userAdminAnyDatabase は、管理ユーザーに管理権限を提供します。 この役割では、クラスター全体に対して listDatabases アクションを実行できます。 userAdminAnyDatabase を使用して、デプロイメントの他のユーザー ( MongoDB 組み込みロールを含む) に ロールを作成して付与 します。 例えば、デプロイメントをモニターするには、 admin を使用して mongo シェルにログインし、任意のユーザー (それ自体を含む) に clusterMonitor ロールを付与します。 次のようなコマンドを使用します。

    db.grantRolesToUser(
     "admin",
     [
       { role: "clusterMonitor", db: "admin" }
     ]
    )
    
  • readWriteAnyDatabase は、 local および config を除くすべてのデータベースに対して、 readWrite と同じ特権を提供します。

  • dbAdminAnyDatabase は、 local および config を除くすべてのデータベースに対して、 dbAdmin と同じ特権を提供します。

UIで管理者パスワードを設定する

IBM Cloud Resource listからインスタンスを選択し、UIから管理者パスワードを設定します。 次に、 「設定」 を選択します。 次に、 *「データベース管理者パスワードの変更」*を選択します。

CLIでadminパスワードを設定する

IBM Cloud CLI Cloud Databases プラグインから cdb user-password コマンドを使用して、管理パスワードを設定します。

たとえば、配置の管理者パスワードを設定するには、次のコマンドを使用します:

ibmcloud cdb user-password <INSTANCE_NAME_OR_CRN> admin <NEWPASSWORD>

APIで管理者パスワードを設定する

サービスの[概要]パネルの[配置の詳細]セクションに表示される Foundation エンドポイントは、API を使用してこの配置にアクセスするためのベース URL を提供します。 これを 「指定されたユーザーのパスワードの設定」 エンドポイントとともに使用して、管理者パスワードを設定します。

curl -X PATCH `https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/admin` \
-H `Authorization: Bearer <>` \
-H `Content-Type: application/json` \
-d `{"password":"newrootpasswordsupersecure21"}` \

UIによるユーザーとロールの管理

  1. ご使用のサービスのサービス・ダッシュボードに移動します。
  2. _「サービス資格情報」をクリックして、「サービス資格情報」_セクションを開きます。
  3. __「新規資格情報」__をクリックします。
  4. 新規資格情報にわかりやすい名前を選びます。
  5. (オプション) 新規資格情報でパブリック・エンドポイントまたはプライベート・エンドポイントのどちらを使用するかを指定します。 _「インラインの構成パラメーターの追加」_フィールドで { "service-endpoints": "public" } / { "service-endpoints": "private" } のいずれかを使用して、指定のエンドポイントを使用する接続ストリングを生成します。 そのエンドポイントを使用することが強制されるわけではありません。 接続文字列に含まれるホスト名が制御されるだけです。 パブリック・エンドポイントはデフォルトで生成されます。
  6. _Add_をクリックして、新しい資格情報をプロビジョニングします。 ユーザー名とパスワード、および関連付けられる MongoDB ユーザーが自動的に生成されます。

新しい資格情報が表に表示されます。接続文字列は JSON として_「資格情報の表示」_のクリックしてコピーできるフィールドに表示されます。

CLI または API からユーザーを作成しても、そのユーザーの接続ストリングは_「サービス資格情報」_に自動的に取り込まれません。 ここにユーザーを追加するには、既存のユーザー情報を使用して新規資格情報を作成します。 _「インラインの構成パラメーターの追加」_の下の JSON フィールドにユーザー名とパスワードを入力します。 例えば、{"existing_credentials":{"username":"Robert","password":"supersecure"}}などです。 基本的には、ユーザー名とパスワードを送信すると、_Service Credentials_が認証情報を入力した接続文字列を生成します。

既存のユーザーの資格情報を生成するときに、そのユーザーが存在するか検査されたり、そのユーザーが作成されたりすることはありません。

_サービス資格情報_を使用して作成する ユーザーには、 readWriteAnyDatabase 役割と dbAdminAnyDatabase役割が付与されます。

サービス資格情報 から作成されたユーザーが別の役割を持つ必要がある場合は、admin ユーザーを使用してその役割を変更できます。

CLIによるユーザーとロールの管理

CLI で作成されたユーザーには、 readWriteAnyDatabasedbAdminAnyDatabaseの役割が付与されます。

ユーザーに別のロールを持たせる必要がある場合は、admin ユーザーを使ってロールを変更することができます。

CLIから直接作成されたユーザは_サービス資格情報_に表示されませんが、追加できます。

  1. Cloud Databases CLI プラグイン を使用してサービスを管理する場合は、 cdb user-create を使用して新規ユーザーを作成します。 たとえば、デプロイメント用に新しいユーザを作成するには、次のコマンドを使用します:
ibmcloud cdb user-create <INSTANCE_NAME_OR_CRN> <NEWUSERNAME> <NEWPASSWORD>
  1. タスクが終了したら、ibmcloud cdb deployment-connections コマンドで新しいユーザーの接続文字列を取得します。

  2. MongoDB は、ユーザーのデータを admin データベースで一元管理します。 mongo シェルで show users コマンドを使って、すべてのユーザーとそのロール、データベースのパーミッションを リストアップします

ibmcloud cdb deployment-connections --start -u admin mongodb-production
Database Password>>
MongoDB shell version v4.0.3
connecting to: mongodb://....
....
replset:PRIMARY> use admin
switched to db admin
replset:PRIMARY> show users

APIによるユーザーとロールの管理

API で作成されたユーザーには、 readWriteAnyDatabasedbAdminAnyDatabaseの役割が付与されます。

ユーザーに異なるロールを持たせる必要がある場合は、adminユーザーを使ってロールを変更してください。

APIから直接作成されたユーザは_サービス資格情報_には表示されませんが、追加することはできます。

サービスの_「概要」_セクションに表示される_基本エンドポイント_は、API を介してこのデプロイメントにアクセスするための基本 URL を提供します。 ユーザーを作成して管理するには、その基本 URL に /users エンドポイントを付けて使用します。

コマンドは次のようになります。

curl -X POST https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/{user_type}
-H 'Authorization: Bearer <>'
-H 'Content-Type: application/json'
-d '{"user": {"username": "user", "password": "v3ry-1-secUre-pAssword-2"}}' \

ユーザーの接続文字列を取得するには、基本 URL に /users/{userid}/connections エンドポイントを付けて使用します。

MongoDB-createdユーザーとロール

組み込みのユーザーとロールがあなたの環境に合わない場合は、ユーザーとロールの作成を直接MongoDBに入れてください。 デプロイメントの admin ユーザーには、デプロイメントで使用する役割または特権のセットを作成する権限があります。

MongoDB で直接作成されたユーザーおよび役割は、サービス資格情報 には表示されず、IBM Cloud アカウントまたは IAM に統合されません。

ibm ユーザー

mongoシェルを使ってデプロイのユーザーをリストアップすると、ibm という名前のユーザーがいることに気づくかもしれません。 ibm ユーザーは、デプロイメントの安定性を確保するためのレプリケーション、クラスター操作、およびその他の機能を管理する内部的な root アカウントです。 ibm ユーザーへの変更や削除はお勧めできません。

MongoDB Enterprise Edition を使用する ops_manager ユーザー

Ops Manager は、Databases for MongoDB Enterprise Edition デプロイメントでのみ使用可能です。 ops_manager ユーザー・タイプでは、権限が限定されています。 詳しくは、 Ops Manager の資料 を参照してください。