1

PHP と MySQL の行レベル セキュリティの例または情報を探しています。私は基本的なGoogleリサーチを行いました。ビューの使用とテーブルへのフィールドの追加に関するすべての投稿/記事を読んで、オブジェクトを表示する権利を持つユーザーを指定しました。これらの例はかなり単純で、多くの構成/メンテナンスが必要です。

ここに私が探しているもののいくつかの実生活の例があります:

クライアント データ。どのユーザーまたはユーザー グループがクライアント ファイルのすべてまたは一部を表示できるかを設定できます。これは、レポートやダッシュボードを含むすべてのアプリケーション機能に対して永続的である必要があります。

従業員ファイルは、上司が変わったときにアクセス権を再構成する必要なく、直属の上司と HR に従業員ファイルへのアクセスを与えます。

これはデータベースレイヤーから直接処理する必要があると思いますが、アップロードされたドキュメントなど、他のリソースにも適用できます。

フィルタリングできるように、データを渡すことができるある種の「フィルター」をほのめかしています。

これを成功裏に実装した記事やフレームワークへの興味深いリンクは大歓迎です。

ありがとう。

4

1 に答える 1

0

MySQL は ROLE を実行しないため、これを行うには MariaDB を使用する必要がありますが、MySQL で目的を達成するために GRANT PROXY を使用できる場合があります。

漏れを避けるために、異なる「テナント」、つまり有料の顧客は異なるデータベースにある必要があると思います。スクリプトを使用してこれを自動化できます。

ただし、会社内の行レベルのセキュリティが必要な場合は、テーブルごとに追加の列といくつかのビューとトリガーを使用してこれを実現できます。

所有者列を持つテーブルを作成します。挿入トリガーを使用して、所有者を現在のユーザーに設定します。テーブルに対するすべての権限を取り消します。

現在のユーザーが所有者と一致する役割にあることを確認するそのテーブルに、WITH CHECK OPTION ビューを作成します。ビューに対するすべての権限を付与します。

例:

create user `pointyHead`;
create user `dilbert`;

create role `manager`;
create role `minion`;

grant manager to pointyHead;
grant minion to dilbert;
grant minion to manager;

ユーザーがロールにいるかどうかを確認する機能があるかどうかはわかりませんが、常に information_schema.applicable_roles を使用できます。

列レベルの付与を使用して、さまざまな列のアクセス許可をさまざまなユーザーに付与できます。http://dev.mysql.com/doc/refman/5.5/en/grant.html#grant-column-privileges

于 2013-12-05T20:10:57.803 に答える