0

私の質問はかなり単純です。

データベーステーブルにアクセス許可を付与できますか?行の何か:

  • ユーザー管理には、テーブルプロジェクトを選択、更新、挿入、および削除する権限があります
  • ユーザースーパーバイザーには、テーブルプロジェクトを選択、更新、挿入する権限があります
  • ユーザーコラボレーターには、テーブルプロジェクトを選択する権限があります

もしそうなら、上記の例のように、アプリケーションのアクセスレベルに基づいてデータベースユーザーを作成するシステムをセットアップできます。

これを使用してアプリケーションを保護することは有効なメカニズムですか?
それは実際のアプリケーションで価値がありますか?

私はOracleとMySQLでPHPを使用しましたが、データベース/言語に依存しない答えを探していますが、どの例でも役に立ちます。

私の運を少し押して、レコードごとの許可の付与はどうですか?また、テーブルスキーマについてはどうですか、テーブルベースのアクセス許可よりも受け入れられますか?

4

2 に答える 2

1

パート1への回答:応答を正しく処理する限り、はい。

パート2:ほとんどのアプリケーションはソリューションに柔軟性を必要とするため、アプリケーション層にセキュリティを実装するほど良くはありません(ユーザーに特権を増やしたい場合は、多くの変更/拒否/付与スクリプトでコーディングする必要があります)

パート3:(純粋にMSSQLから言えば)行レベルのアクセス許可はできません。この目的のためにカスタムビューを作成します。

于 2012-04-13T03:24:23.287 に答える
1

データベースセキュリティを使用する際の主な問題は、アプリケーションサーバーからDBサーバーへの接続に「サービスユーザー」を使用できるのではなく、ユーザーごとに個別の接続が必要になることです。つまり、データベース接続プールを使用できなくなり、ユーザーの要求ごとにデータベースから「接続」および「切断」する必要があります。これは、接続が比較的高価であるため、あまり効率的ではありません。

そうは言っても、DATA_USER(アプリケーションサーバーが接続する)やDATA_OWNER(すべてのテーブルを所有しているが、DBのメンテナンスにのみ使用される)など、データベースで個別のユーザーを使用し、DATA_USERにのみアクセス許可を与えるのには十分な理由があります。たとえば、ルックアップテーブルでのみ選択する必要があります。DATA_USERとDATA_OWNERを分離することにより、アプリケーションがDDLコマンドを発行しないという信頼性をさらに高めることができます(テーブルの削除など)。

于 2012-04-13T12:13:48.323 に答える