アクセス制御リストを持つアプリケーション用のユーザーがあります(これらは両方とも表/スキーマ/オブジェクトです)。現在、これらはデータベースから読み取られ、ブール値は、表示/操作できる内容を示すために使用されます。ただし、誰でもデータベースにアクセスしてデータを変更することはできます。誰かが私が何をすることができるかについていくつかの提案をすることができますか?ユーザー(uname + pass)とacl(empui_access、empdat_manipulate)があることがわかりました。コードなどを経由して任意のちょっとセキュリティソリューション...データベースのアクセス制御リストのセキュリティ設計に関する提案?
答えて
何か
table users
username: string
password_hash: hex
acl: bit array
のようなユーザ名がユーザ名で、password_hashは塩の粒で、パスワードのハッシュです。プレーンなパスワードを保存するのは間違いですが、あなたはすでにそれを知っていましたか?
ACLは文字列として宣言されますが、ビット配列として使用されます。 各ビットは特定の許可を表します。 1はユーザーが許可を持っていることを意味し、0は彼が許可していないことを意味します。特定のビットの値を調べるには、aclでビット単位でANDを行います。結果がゼロでない場合、アクセスが許可されます。結果がゼロの場合、アクセスは拒否されます。例えば
:
// permission to read employee data
public const long READ_EMPL_DATA = 0x01
...
{
User user = database.GetSomeUser();
// test for READ_EMPL_DATA permission
if (0 != (user.ACL & READ_EMPL_DATA)) {
// access granted
} else {
// access denied
}
// give READ_EMPL_DATA permission
if (0 != (user.ACL & READ_EMPL_DATA))
user.ACL = user.ACL & READ_EMPL_DATA
}
、グループのサポートを追加するカップルのテーブルを追加します。
table group
groupname: string
acl: bit array
table user_group
user_id: id
group_id: id
さらに、ユーザーレベルのアクセス許可のテストに加えて、ユーザーが所属するグループをテストします。もちろん、ヘルパー関数、おそらくストアドプロシージャを記述します。
これはあなたが始めたことを望みます。そうでない場合は、わかりやすい例、より多くの実際のコード、またはその他のヘルプを提供することができます。
誰かがあなたのビット配列を変更することはできません(私は前にそれを使用していました)dbから、それはユーザーの権利を変更することができますか? – abmv
それは別のタイプの問題です。はい、適切な権限を持つユーザーがその値を変更する可能性があります。しかし、再びその人はパスワードを変更することができます。それはあなたのデータベースを保護することに関するものであり、SQL Serverはすでにそのための解決策を持っています。たとえば、ゲストのユーザーに3つのテーブルのアクセス権を与えることができますが、書き込み権限を持たないユーザーは変更できません。 – DonkeyMaster
このaclはdbとは関係ありません。これはビジネス要件です – abmv
これはPostgreSQLに固有ですが、おそらくVeilから良いアイデアを得ることができます。
- 1. MySQLデータベース設計の提案
- 2. MySQLのデータベース設計の提案
- 3. コメント/データベース設計に関する提案 - 倉庫在庫管理
- 4. JPAエンティティの設計提案
- 5. Hbaseスキーマ設計の提案
- 6. 教師、科目、等級データベースの設計提案
- 7. Pythonのマルチスレッド設計の提案
- 8. スレッドとデータベースの提案の提案
- 9. Laravel 5.2アクセス制御リスト
- 10. Railsモデルの設計:時間を提案して反対提案する
- 11. 制御アプリケーション設定アクセス
- 12. symfonyのセキュリティ - アクセス可能なルートを制御する
- 13. ユーザーコントロールに関する提案
- 14. アクセス制御とセキュリティ:大量のARTICLESテーブルが必要ですか?
- 15. ruby rails - テキストフィールドの提案リスト
- 16. HTML、jQueryリストの提案
- 17. 制御構造に関する設計のアドバイスelse if、switch o better way?
- 18. コンテンツオーガナイザを設計するための提案が必要
- 19. JSF、EJB 3.0を使用するアプリケーションの設計パターンを提案
- 20. Entity Frameworkのデータアクセス設計を提案する(ストアドプロシージャを少なく)
- 21. 開発環境の設定に関する提案
- 22. グラフィックアプリケーションのアーキテクチャ/デザインに関する提案
- 23. データベースタイプの使用に関する提案
- 24. Autocompleteboxはsqliteデータベースからのバインディング中に提案のリストを提案として表示しません
- 25. Nexusのアクセス制御
- 26. Cgitのアクセス制御
- 27. MVCでパラメータを渡すための設計提案
- 28. Spring Webサービスクライアントのアーキテクチャと設計の提案
- 29. ASP.Net + SQL Serverの設計/実装の提案
- 30. mysqlの外部キー制約付きの挿入に関する提案
あなたはどのデータベースを使用していますか? SQLサーバー? MySQL?オラクル?さまざまな権利がありますか?多くのユーザーですか?各権利のアクセスレベルは異なりますか? – DonkeyMaster
データベースを心配する必要はありません。これはコーディングデザインに関連しています。 – abmv