sql >> データベース >  >> NoSQL >> MongoDB

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

    MongoDBは、データの保存と取得を高速かつ簡単にするクロスプラットフォームのドキュメント指向データベースです。データベースは、ドキュメントにJSONのような構造を使用しており、主に最新のアプリケーションに馴染みがあります。

    MongoDBはコレクションと原稿を使用しており、ドキュメントはMongoDBのデータの基本単位であるキーと値のペアで構成されています。対照的に、コレクションには、リレーショナルデータベーステーブルと同等の関数とドキュメントが含まれています。

    MongoDBで新しいユーザーを作成します

    システムに新しいユーザーを追加するために、MongoDBはdb.createUser()と呼ばれる内部手法を提供します。従来のデータベースシステムとは対照的に、MongoDBユーザーは認証データベースと呼ばれるローカルデータベースにバインドされています。したがって、従来のSQLデータベースのようにグローバルに結び付けられることはありません。

    さらに、認証データベースとユーザーの名前は一意の識別子として機能します。したがって、2人のユーザーが異なるデータベースで作成されているが、同じ名前を共有している場合、それらは2人の別々のユーザーとして識別されます。したがって、複数のデータベースに対する権限を持つ単一のユーザーを作成する場合は、異なるデータベースでユーザーを何度も構築するのではなく、単一のユーザーが該当するデータベースに対する権限/役割を持つことを許可する必要があります。

    例:

    db.createUser(
    
    {       user: "Foss",
    
            pwd: "password",
    
             roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})

    ユーザー管理コマンド

    名前/秒 説明 createUser このメソッドは新しいユーザーを作成します。 データベースからすべてのユーザーを削除します。 dropUser タスクとその権限をユーザーに付与します。 役割とそれに関連する特権がユーザーに割り当てられます。 revokeRolesFromUser ユーザーの役割を削除します。 このメソッドはユーザーのデータを更新するために使用されます。 usersInfo このメソッドは指定されたユーザーに関する情報を返します。
    dropAllUsersFromDatabase
    grantRolesToUser
    updateUser

    ユーザーの追加

    指定したDBにユーザーを追加する場合は、「db.createUser()」メソッドを使用してください。オプション付きのユーザーの追加は、非リレーショナルデータベースにユーザードキュメントを挿入するよりもはるかに簡単であることに注意することが重要です。

    例:

    use foss               // specify the DB
    
    db.createUser(
    
      {
    
        user: "fosslinux",
    
        pwd: passwordPrompt(),  // or cleartext password if you wish
    
        roles: [
    
           { role: "read", db: "foss" },
    
           { role: "read", db: "articles" },
    
           { role: "read", db: "tutorials" },
    
           { role: "readWrite", db: "tutorialguides" }
    
        ]
    
      }
    
    )

    上記の例でMongoDBインスタンスを接続したら、それをfoss DBに接続して、db.createUser()コマンドを実行できます。使用されるデータベースは、ユーザーの認証データベースとして機能します。

    パスワードとユーザー名は、キーと値のペアとしてメソッド呼び出しを含むドキュメントで提供されます。ロールの使用は、データベースへのアクセスを制御します。ユーザーは、自分の認証データベースであっても、任意のデータベースにアクセスするための役割を持っている必要があります。また、ユーザーは、ロールを使用してシステム内の他のデータベースにアクセスできます。したがって、ユーザーの特権は認証データベースに限定されません。したがって、これにより、ユーザーは必要に応じて多くのデータベースに対してさまざまな特権を持つことができます。最小特権の原則により、ユーザーはデータベースのアクセス範囲を可能な限り小さく保つことができます。‍

    MongoDBで管理者ユーザーを作成する方法

    MongoDBでの管理ユーザーの作成は、db.createUser()メソッドを使用して実行されます。これにより、ユーザーを作成できます。ただし、ユーザーを作成した後、管理者の役割を割り当てる必要があります。これらの役割は、ユーザーに管理者権限を与えます。

    MongoDBで単一のデータベースのユーザーを作成する

    1つのデータベースしか操作できないユーザーを作成する場合は、上記と同様のコマンドを使用できますが、「userAdmin」オプションを1回だけ使用する必要があります。

    例:

    db.createUser(
    
    {        user: "Fosslinux",
    
             pwd: "password",
    
             roles:[{role: "userAdmin" , db:"Foss"}]})

    コードの内訳:

    1. 何よりもまず、作成する「ユーザー名」と「パスワード」を指定する必要があります。
    2. データベース管理者であるそのユーザーに役割を割り当てます。これは「ユーザー管理者」ロールに割り当てられます。このロールでは、ユーザーがDBで指定されたデータベースに対してのみ管理者権限を持つことができるためです。
    3. 最後に、DBパラメータは、ユーザーが管理者権限を持つ必要があるデータベースを設定します。

    ユーザーの管理

    ユーザーを管理するには、MongoDBには読み取りロールや読み取り/書き込みロールなどの機能の全リストがあるため、定義する必要のあるロールを理解する必要があります。 「readrole」コマンドは、データベースへの読み取り専用アクセスのみを許可します。 「読み取り/書き込みロール」は、データベースへの読み取りおよび書き込みアクセスを提供します。これは、ユーザーがそのデータベース内のコレクションに対して更新、挿入、および削除コマンドを発行できることを意味します。

    例:

    db.createUser(
    {
                user: "Foss",
    
                pwd: "password",
    
                roles:[
    
                {
                            role: "read" , db:"Tutorials"},
    
        {
                            role: "readWrite" , db:"Guides"}
    
                }
                              ]
    })

    上記の例は、Fossと呼ばれるユーザーが作成され、複数のDBで複数の役割が割り当てられていることを示しています。同じモデルで、Fossには「Tutorials」データベースに対する読み取り専用権限と「Guides」データベースに対する読み取り/書き込み権限が付与されています。

    MongoDBへの役割の追加

    ロールは、ユーザーにMongoDBリソースへのアクセスを許可します。さらに、MongoDBには、管理者がMongoDBシステムへのアクセスを制御できるようにするいくつかの組み込みの役割が用意されています。ただし、これらの役割で目的の特権のセットを記述できない場合は、特定のデータベースに新しい役割を作成できます。管理データベースで作成された関数を除き、役割には、そのデータベースと他の役割から継承された権限にのみ適用される権限のみを含めることができます。

    adminデータベースで定義されたロールには、adminデータベース、他のデータベース、またはクラスターリソースに適用可能な権限が含まれている場合があり、他のデータベースからロールを継承する場合があります。新しい役割を確立するには、「db.createRole()」を使用して、権限配列と継承された役割配列を指定します。

    MongoDBは、データベース名とロール名を組み合わせることにより、ロールを一意に定義します。各ロールのスコープは作成したデータベースですが、MongoDBはすべてのロール情報をadminデータベースのadminSystemRolesコレクションに格納します。たとえば、データベースリソースに対するクリエイティブロールおよびロールの付与アクションでは、データベースでロールが作成および付与されていることを確認する必要があります。 grantRoleは、新しいロールと継承するロールの権限を指定します。 User AdminAnyDatabaseと組み込みのロールuseradminは、CreateRoleを提供し、それぞれのリソースに対してロールアクションを付与します。

    認証制限が指定されたロールを作成するには、データベースリソースにAuthenticationRetrictionsアクションを設定する必要があります。これにより、関数が作成されます。

    db.grantRole to User()メソッドは、次の引数を取ります;

    パラメータ タイプ 説明 ユーザー 文字列 役割を付与するユーザーの名前が含まれます。 ロール 配列 ユーザーに付与する一連の追加の役割が必要です。 懸念事項を書く ドキュメント
    これはオプションであり、コマンドの変更を目的としています。また、getlasterrorコマンドと同じフィールドを取ります。

    ロールパラメータは、ユーザー定義関数と組み込み関数の両方を指定できます。これは、名前でロールを選択することで実現できます。これは、mongod(データ要求を処理し、バックグラウンド管理操作を実行し、データアクセスを管理するMongoDBシステムのプライマリデーモンプロセス)に接続することで実現されます。または、要件のセクションで指定された権限を持つmongos(クライアントアプリとシャーディングされたクラスター間の接続の確立を担当します)。たとえば、アクセス制御を有効にして作成したユーザー管理者は、管理者やその他のデータベースに役割を作成できます。

    役割管理コマンド

    名前\s 説明 createRole ユーザーが設定した役割を削除します。 dropAllRolesFromDatabase データベース設定からユーザーが設定したすべての役割を削除します。 ユーザーが選択した役割に特権を割り当てます。 grantRolesToRole ユーザー定義のロールが特権を継承できるロールを通知します。 revokePrivilegesFromRole 特権を持つユーザー定義のロールから特権を削除します。 継承された役割を不要なユーザー定義の役割から削除します。 rolesInfo 必要な1つまたは複数の役割に関する情報を返します。 ユーザーが設定した役割を更新します。
    役割を作成し、それが何ができるかを示します。
    dropRole
    grantPrivilegesToRole
    invalidateUserCache invalidateUserCacheを使用すると、資格情報やロールなどのユーザー情報のメモリ内キャッシュがフラッシュされます。
    revokeRolesFromRole
    updateRole

    結論

    データの保存と取得を簡単かつ高速に行えるMongoDBデータベースを使用すると、「db.createUser()」コマンドを使用してユーザーを作成できます。一方、「AdminAnyDatabase」コマンドは、管理者の役割でDBにアクセスするためのすべての特権をユーザーに提供します。この記事はさらに一歩進んで、役割と権利を付与する方法を説明しました。お役に立てば幸いです。はいの場合は、下のコメントセクションにコメントを残すことを忘れないでください。


    1. SQLでのパディング

    2. データを失うことなく、mongodbをキャップしたコレクションのサイズを変更するにはどうすればよいですか?

    3. ヨーマン、マングース、およびMongoDBスキャフォールディング

    4. 日付間隔でグループ化