ユーザーを作成してロールを追加する方法 MongoDB

⚡ スマートサマリー

ユーザーを作成して役割を追加する MongoDB db.createUser() メソッドを使用して認証情報を定義し、組み込みロールを割り当て、特定のデータベースに権限をスコープすることで、管理者アカウントと単一データベースアカウント全体にわたるアクセス制御を強化します。

  • 🔑 コアメソッド: db.createUser() コマンドは、ユーザー名、パスワード、およびロール配列を単一のステートメントで指定することにより、アカウントをプロビジョニングします。
  • 🛡️ 管理者権限範囲: userAdminAnyDatabaseロールはすべてのデータベースに対する管理権限を付与しますが、userAdminロールは指定された1つのデータベースのみに制御を制限します。
  • 🎯 役割の割り当て: 読み取りや読み書きなどの組み込みロールは、ユーザーがコレクションに対して実行できるアクションに正確に対応しています。
  • 👥 複数のデータベース: 1つのアカウントは、1つのロール配列内で、複数のデータベースにわたる異なるロールを保持することができます。
  • 検証: db.getUsers() メソッドと返された出力により、アカウントと権限が正しくプロビジョニングされたことが確認できます。

ユーザーを作成して役割を追加する方法 MongoDB

組み込みロールとは何ですか MongoDB?

アカウントを作成する前に、組み込みの役割を理解しておくと役立ちます。 MongoDB 役割とは、権限の集合に名前を付けたものであり、各権限はリソース(データベースやコレクションなど)と、そのリソースに対して許可される操作を関連付けます。したがって、ユーザー作成時に役割を割り当てることで、そのアカウントが実行できる操作を正確に決定できます。

MongoDB 組み込みの役割は、データベースユーザーの役割、データベース管理者の役割、クラスタ管理者の役割、バックアップと復元の役割、およびスーパーユーザーの役割に分類されます。以下の表は、ユーザー管理時に最もよく使用される役割をまとめたものです。

職種 カテゴリー 付与された特権
read データベースユーザー データベース内のシステムコレクション以外のすべてのコレクションへの読み取り専用アクセス。
読み書き データベースユーザー コレクションに対する読み取りアクセスに加え、挿入、更新、削除の操作権限。
dbAdmin データベース管理者 データベースのスキーマ、インデックス、および統計情報の管理。
ユーザー管理者 データベース管理者 単一のデータベース上でユーザーとロールを作成および変更できます。
userAdminAnyDatabase スーパーユーザ インスタンス内のすべてのデータベースにおけるユーザー管理。
ルート スーパーユーザ すべてのリソースと操作への完全なアクセス権。

MongoDB 管理者ユーザーの作成

でのユーザー管理者の作成 MongoDB これは、createUser メソッドを使用して行われます。次の例は、これがどのように行われるかを示しています。

db.createUser(
{	user: "Guru99",
	pwd: "password",

	roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})

MongoDB 管理者ユーザーの作成

Code 説明:

  1. 最初のステップは、作成する必要がある「ユーザー名」と「パスワード」を指定することです。
  2. 2 番目のステップは、ユーザーに役割を割り当てることです。データベース管理者である必要があるため、「userAdminAnyDatabase」役割を割り当てました。この役割により、ユーザーはすべてのデータベースに対する管理権限を持つことができます。 MongoDB.
  3. db パラメータは、内部の特別なメタデータベースである管理データベースを指定します。 MongoDB このユーザーの情報が格納されている場所。

コマンドが正常に実行されると、次の出力が表示されます。

出力:

MongoDB 管理者ユーザーの作成

出力には、ユーザーが「Guru99”が作成され、そのユーザーはすべてのデータベースに対する権限を持っています MongoDB.

MongoDB 単一データベースのユーザーの作成

単一のデータベースを管理するユーザーを作成するには、上記と同じコマンドを使用できますが、「userAdmin」オプションのみを使用する必要があります。

以下の例は、その方法を示しています。

MongoDB 単一データベースのユーザーの作成

db.createUser(
{
	user: "Employeeadmin",

	pwd: "password",

	roles:[{role: "userAdmin" , db:"Employee"}]})

Code 説明:

  1. 最初のステップは、作成する必要がある「ユーザー名」と「パスワード」を指定することです。
  2. 2番目のステップは、ユーザーに役割を割り当てることです。この例では、データベース管理者である必要があるため、「userAdmin」の役割が割り当てられます。この役割により、ユーザーはdbオプションで指定されたデータベースに対してのみ管理権限を持つことができます。
  3. db パラメータは、ユーザーが管理者権限を持つデータベースを指定します。

コマンドが正常に実行されると、次の出力が表示されます。

出力:

MongoDB 単一データベースのユーザーの作成

出力には、「Employeeadmin」というユーザーが作成され、そのユーザーが「Employee」データベースに対する権限のみを持っていることが示されています。

ユーザーの管理

まず、定義する必要のある役割を理解してください。役割のリストは、 MongoDB例えば、「read」ロールはデータベースへの読み取り専用アクセスのみを許可し、「readWrite」ロールはデータベースへの読み取りと書き込みの両方のアクセスを許可します。つまり、ユーザーはそのデータベース内のコレクションに対して、挿入、削除、更新コマンドを実行できます。

ユーザーの管理

db.createUser(
{
	user: "Mohan",

	pwd: "password",

	roles:[
	{ role: "read" , db:"Marketing" },
	{ role: "readWrite" , db:"Sales" }
	]
})

上記のコードスニペットは、Mohan という名前のユーザーが作成され、複数のデータベースで複数の役割が割り当てられることを示しています。上記の例では、Mohan には「Marketing」データベースへの読み取り専用権限と、「Sales」データベースへの読み書き権限が付与されています。

表示および管理方法 MongoDB ユーザー

アカウントが存在する場合、 MongoDB ドロップせずに検査、更新、削除するための一連のコマンドを提供しますping そして、各ユーザーを再作成します。これらのコマンドは、ユーザーが作成されたデータベースに対して実行されるため、コマンドを実行する前に、useステートメントを使用して適切なデータベースに切り替えてください。

最も一般的なユーザー管理コマンドは次のとおりです。

  • db.getUsers() — 現在のデータベースに定義されているすべてのユーザーと、それぞれのユーザーが持つ役割を一覧表示します。
  • db.getUser(“username”) — 単一のアカウントの詳細を返します。これは、権限の監査に役立ちます。
  • db.grantRolesToUser() 既存のユーザーに、現在の役割に影響を与えることなく、1つ以上の役割を追加します。
  • db.revokeRolesFromUser() — 特定の役割を削除し、責任範囲が変更された際にアクセス権限を厳格化する。
  • db.changeUserPassword() — アカウントのパスワードをリセットしながらping その役割はそのまま維持されている。
  • db.dropUser() — データベースからユーザーを完全に削除します。

以下の例では、追加の役割を付与し、別の役割を取り消し、パスワードをリセットし、最後にアカウントを削除します。

// List all users in the current database
db.getUsers()

// Grant an additional role to an existing user
db.grantRolesToUser("Employeeadmin", [{ role: "readWrite", db: "Employee" }])

// Remove a role from a user
db.revokeRolesFromUser("Employeeadmin", [{ role: "userAdmin", db: "Employee" }])

// Change a user's password
db.changeUserPassword("Employeeadmin", "newPassword")

// Delete a user
db.dropUser("Employeeadmin")

これらの操作の後にもう一度db.getUsers()を実行すると、変更が適用され、意図したアカウントとロールのみが残っていることが確認できます。

のベスト プラクティス MongoDB ユーザー管理プラットフォーム

よく計画されたユーザーアカウントは、 MongoDB 導入時のセキュリティを確保し、監査も容易に行える。以下の対策を実施することで、偶発的なデータ漏洩や権限の悪用リスクを軽減できる。

  • 最小権限の原則を適用する: アカウントに本当に必要な役割のみを付与し、広範な管理役割よりも単一データベースに対する読み書き権限を優先する。
  • 本番環境でのルート権限の回避: root および userAdminAnyDatabase ロールは、日常的な運用ではなく、セットアップや緊急時のタスクのために確保してください。
  • 認証を有効にする: 認証情報が実際に適用されるように、サーバーを「--auth」オプション付きで起動してください。
  • 強力なパスワードを使用する: パスワードの長さと複雑さを組み合わせ、db.changeUserPassword() を使用して定期的にパスワードを変更します。
  • 定期的に監査します。 Rev定期的に db.getUsers() の出力を確認し、不要になったアカウントを削除します。

これらの習慣を合わせることで、すべてのアカウントが実際のニーズに対応し、アクセスが tracセキュリティレビューが行われるたびに、ed されます。

よくあるご質問

はい。AIアシスタントは、単純な説明を有効なdb.createUser()コマンドに変換し、適切なロール配列を割り当て、データベースにスコープを設定できます。生成されたコマンドを実行する前に、必ず非本番環境のデータベースでテストしてください。

はい。AIを活用した監査ツールは、db.getUsers()の出力を読み取り、rootまたはuserAdminAnyDatabaseを保持しているアカウントを特定し、最小権限ロールを提案できます。ただし、管理者は、稼働中のシステムでアクセス権を取り消す前に、各推奨事項を必ず確認してください。

userAdminロールは特定のデータベース上のユーザーとロールを管理しますが、userAdminAnyDatabaseロールはインスタンス内のすべてのデータベースに対してユーザー管理権限を付与します。userAdminロールはスコープを限定した制御に使用し、userAdminAnyDatabaseロールは信頼できる管理者のみに使用してください。

useコマンドを使用してユーザーが存在するデータベースに切り替え、db.dropUser(“username”)を実行します。 MongoDB この操作により、データベース上のアカウントとその役割が削除されます。削除が完了したことを確認するには、その後 db.getUsers() を実行してください。