ユーザーを作成してロールを追加する方法 MongoDB
⚡ スマートサマリー
ユーザーを作成して役割を追加する MongoDB db.createUser() メソッドを使用して認証情報を定義し、組み込みロールを割り当て、特定のデータベースに権限をスコープすることで、管理者アカウントと単一データベースアカウント全体にわたるアクセス制御を強化します。
組み込みロールとは何ですか MongoDB?
アカウントを作成する前に、組み込みの役割を理解しておくと役立ちます。 MongoDB 役割とは、権限の集合に名前を付けたものであり、各権限はリソース(データベースやコレクションなど)と、そのリソースに対して許可される操作を関連付けます。したがって、ユーザー作成時に役割を割り当てることで、そのアカウントが実行できる操作を正確に決定できます。
MongoDB 組み込みの役割は、データベースユーザーの役割、データベース管理者の役割、クラスタ管理者の役割、バックアップと復元の役割、およびスーパーユーザーの役割に分類されます。以下の表は、ユーザー管理時に最もよく使用される役割をまとめたものです。
| 職種 | カテゴリー | 付与された特権 |
|---|---|---|
| read | データベースユーザー | データベース内のシステムコレクション以外のすべてのコレクションへの読み取り専用アクセス。 |
| 読み書き | データベースユーザー | コレクションに対する読み取りアクセスに加え、挿入、更新、削除の操作権限。 |
| dbAdmin | データベース管理者 | データベースのスキーマ、インデックス、および統計情報の管理。 |
| ユーザー管理者 | データベース管理者 | 単一のデータベース上でユーザーとロールを作成および変更できます。 |
| userAdminAnyDatabase | スーパーユーザ | インスタンス内のすべてのデータベースにおけるユーザー管理。 |
| ルート | スーパーユーザ | すべてのリソースと操作への完全なアクセス権。 |
MongoDB 管理者ユーザーの作成
でのユーザー管理者の作成 MongoDB これは、createUser メソッドを使用して行われます。次の例は、これがどのように行われるかを示しています。
db.createUser(
{ user: "Guru99",
pwd: "password",
roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})
Code 説明:
- 最初のステップは、作成する必要がある「ユーザー名」と「パスワード」を指定することです。
- 2 番目のステップは、ユーザーに役割を割り当てることです。データベース管理者である必要があるため、「userAdminAnyDatabase」役割を割り当てました。この役割により、ユーザーはすべてのデータベースに対する管理権限を持つことができます。 MongoDB.
- db パラメータは、内部の特別なメタデータベースである管理データベースを指定します。 MongoDB このユーザーの情報が格納されている場所。
コマンドが正常に実行されると、次の出力が表示されます。
出力:
出力には、ユーザーが「Guru99”が作成され、そのユーザーはすべてのデータベースに対する権限を持っています MongoDB.
MongoDB 単一データベースのユーザーの作成
単一のデータベースを管理するユーザーを作成するには、上記と同じコマンドを使用できますが、「userAdmin」オプションのみを使用する必要があります。
以下の例は、その方法を示しています。
db.createUser(
{
user: "Employeeadmin",
pwd: "password",
roles:[{role: "userAdmin" , db:"Employee"}]})
Code 説明:
- 最初のステップは、作成する必要がある「ユーザー名」と「パスワード」を指定することです。
- 2番目のステップは、ユーザーに役割を割り当てることです。この例では、データベース管理者である必要があるため、「userAdmin」の役割が割り当てられます。この役割により、ユーザーはdbオプションで指定されたデータベースに対してのみ管理権限を持つことができます。
- db パラメータは、ユーザーが管理者権限を持つデータベースを指定します。
コマンドが正常に実行されると、次の出力が表示されます。
出力:
出力には、「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 されます。






