![SQL ステートメントを使用して MongoDB でデータのアクセス許可制御とアクセス管理を実装するにはどうすればよいですか?](https://img.php.cn/upload/article/000/887/227/170280421843669.jpg)
SQL ステートメントを使用して MongoDB にデータのアクセス許可制御とアクセス管理を実装するにはどうすればよいですか?
MongoDB はドキュメント指向の NoSQL データベースであり、SQL (構造化照会言語) はリレーショナル データベース管理システムの標準言語です。 MongoDB は SQL 構文をサポートしていませんが、MongoDB の組み込み権限システムと MongoDB の集計パイプラインを使用することで、SQL に似た構文を使用して MongoDB にデータ権限制御とアクセス管理を実装できます。
この記事では、SQL に似た構文を使用して MongoDB にデータのアクセス許可制御とアクセス管理を実装する方法を示し、対応するコード例を示します。
1. MongoDB 組み込み権限システム
- 管理者ユーザーの作成
まず、管理者ユーザーを作成する必要があります。管理者ユーザーには、MongoDB 権限管理タスクを実行する権限が与えられます。
次の手順に従って管理者ユーザーを作成できます:
a. MongoDB シェルを開いて MongoDB インスタンスに接続します
b. admin # などのデータベースを選択します
##c. 次のコマンドを実行して管理者ユーザーを作成します:
db.createUser({user: "admin", pwd: "password", roles: ["root"]})
ログイン後にコピー
ここで、「admin」はユーザー名、「password」はパスワード、「roles: ['root']」は管理者ロールのコマンドを付与します。
これで、管理者ユーザーを使用して MongoDB の権限を管理できるようになりました。
他のユーザーの作成
SQL に似た構文を使用してデータ権限制御とアクセス管理を実装する前に、1 人以上のデータベース ユーザーを作成する必要があります。
次のコマンドを使用してデータベース ユーザーを作成できます:
db.createUser({user: "testuser", pwd: "testpassword", roles: [{role: "readWrite", db: "testdb"}]})
ログイン後にコピー
ここで、「testuser」はユーザー名、「testpassword」はパスワード、「roles: [{role: 'readWrite」 ', db : 'testdb'}]" は、読み取りおよび書き込み権限を付与するコマンドで、ユーザーが "testdb" データベースに対する読み取りおよび書き込み権限を持っていることを指定します。必要に応じて、ユーザーの役割と割り当てられたデータベースを変更できます。
承認ロール
MongoDB では、ロールは権限のセットです。 MongoDB インスタンスをより適切に管理できるように、対応するロールを作成することをお勧めします。
次のコマンドを使用してロールを作成できます:
db.createRole({role:"testrole", privileges:[{resource:{db:"testdb", collection:"testcollection"},actions:["find", "insert", "remove"]}],roles:[]})
ログイン後にコピー
「testrole」はロール名で、「privileges」配列は実行を許可される操作と「roles」を指定します。配列は他の役割を指定します。
ユーザーをロールに割り当てる
ユーザーをロールに割り当てることは、MongoDB データベースにおける重要なタスクです。ユーザーは、正しい役割が割り当てられている場合にのみ、必要なアクションを実行できます。
次のコマンドを使用してユーザーをロールに割り当てることができます:
db.grantRolesToUser("testuser", ["readWrite", "testrole"])
ログイン後にコピー
ここで、「testuser」はユーザー名、「readWrite」はロール名、「testrole」はロール名です。 。
2. データ権限制御に集計パイプラインを使用する
MongoDB では、集計パイプラインは、ファジー クエリ、データ集計、ドキュメントのデータ変換に使用される強力なツールです。
データ権限制御とアクセス管理の観点から、次の集計パイプライン操作を使用します:
$match: ドキュメント データのフィルタリングに使用されます
$lookup : used 別のコレクションからデータを取得するために使用されます
$group: データを集約するために使用されます
$project: ドキュメント内のデータ フィールドを選択するために使用されます
次のこれは、SQL のような構文を使用して、MongoDB でデータのアクセス許可制御とアクセス管理を実装するコード例です:
db.getCollection("testcollection").aggregate([ { $lookup: { from: "testdb.users", localField: "userId", foreignField: "_id", as: "user" } }, { $match: { "user.username": "testuser" } }, { $project: { _id: 0, name: 1, email: 1, createdAt: 1 } } ]);
ログイン後にコピー
コードは次の操作を実行します:
1. 別のコレクションから (testdb. users ) データを取得します。
2. $match フィルターを使用して、対応するユーザーのデータのみを選択します。
3. $project を使用して、必要なデータ フィールドを選択します。
結論
この記事では、MongoDB の組み込み権限システムと集計パイプラインを使用して、SQL のような構文で MongoDB にデータ権限制御とアクセス管理を実装する方法を説明します。
MongoDB では、集計パイプラインを使用してデータをクエリおよび処理することは非常に強力な方法です。さらに、必要に応じてさまざまなロールやユーザーを作成し、適切な権限を割り当てることができます。
MongoDB でのデータ権限制御とアクセス管理の実装は複雑なタスクですが、関連するスキルを習得すると、データベースをより適切に管理できるようになります。
以上がSQL ステートメントを使用して MongoDB でデータのアクセス許可制御とアクセス管理を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。