問題タブ [database-permissions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - データベース リストを権限のあるものに制限する SQL Server
デフォルトでは、10 個のデータベースのうちの 1 つにアクセスできるアカウントを介してリモート SQL Server に接続する場合。オブジェクト エクスプローラーには、他のすべてのデータベースが表示されます。アクセス許可のため、実際にクエリを実行することはできませんが、名前は表示されます。
この動作を無効にする方法があると聞きましたが、答えを見つけることができませんでした.誰かがこれを行う方法を知っていますか? 例を挙げると、MyDbServer という SQL Server があり、4 つのデータベースがあり、
- マイデータベース
- あなたのデータベース
- プライベート データベース
- リアリープライベートデータベース
「YourDatabse」へのアクセス許可のみを持つアカウントを介して接続する場合、他のすべてのデータベースのリストが引き続き表示されます。クエリを実行しようとすると、「select」アクセス許可が拒否されるか、同様のエラーが発生します。
セキュリティ上の理由から、ユーザーがマップされているデータベース以外のデータベースをユーザーに見せたくありません。
sql-server - SQL Server 2005-ストアドプロシージャを作成する権限を付与します(ただし、他のオブジェクトは付与しません)
ストアドプロシージャを作成、変更、および実行する権限をユーザーに付与したいのですが、他のデータベースオブジェクトを作成することはできません。それらをロールdb_ddladminから除外しましたが、「プロシージャの作成」と「実行」のアクセス許可を明示的に付与しました。これらの権限は、有効な権限リストに表示されます。ただし、このログインでストアドプロシージャを作成しようとすると、次のエラーが発生します。
「指定されたスキーマ名「dbo」が存在しないか、使用する権限がありません。」
助言がありますか?
php - PHP アクセス制御システム
私は、PHP と MySQL を使用して Web アプリケーションを作成するチームの一員です。アプリケーションには、異なる役割を持つ複数のユーザーがいます。このアプリケーションは、地理的に分散した方法でも使用されます。したがって、次の 2 つのレベルで動作するアクセス制御システムを作成する必要があります。
- 特定の php ページのユーザー権限を制御します。つまり、ユーザーの役割に基づいて、特定のページ (またはユーザー インターフェイス要素) へのアクセスを許可または拒否します。たとえば、ユーザーは「学生」ページへのアクセスは許可されているが、「教師」ページへのアクセスは許可されていない場合があります。
- 特定のデータベース レコードに対するユーザー権限を制御します。つまり、特定のレコードのみが表示されるようにデータベース クエリを変更します。たとえば、都市レベルのユーザーの場合、ユーザーの特定の都市に関連するレコードのみを表示する必要がありますが、全国レベルのユーザーの場合、国のすべての都市のレコードを表示する必要があります。
これら両方のタイプのアクセス制御を処理できるシステムの設計について助けが必要です。ポイントNo. 1は簡単そうです。ただし、SQLクエリで情報をハードコーディングせずにポイント2を実行する方法について、私は完全に途方に暮れています。
どんな助けでも大歓迎です。
前もって感謝します
ビナヤク
sql-server - SQL Server 2005 で sysprocesses への制限付きアクセスを許可するにはどうすればよいですか?
過度のブロッキングを監視するために、いくつかの基本的な SQL Server 監視を実装しています。
次のようなストアド プロシージャがあります。
これを管理者コンテキストで実行すると、正しい答えが得られます。権限が制限されたユーザー (つまり、Web サーバー) のコンテキストでこれを実行すると、真の答えに関係なくゼロになります。
私はいくつかの解決策を考えることができますが、私はそれらのどれにも満足していません:
ユーザーに VIEW SERVER STATE 権限を付与できますが、それはこのユーザーが持つべきよりも多くの権限です。
/li>SQL ジョブから proc を実行し、Web サーバーが取得できるように結果をどこかに配置しますが、これは面倒で複雑です。
- これを Web サーバーから呼び出そうとしないでください。
より良い解決策があると確信しています。助言がありますか?
sql - ユーザーはストアド プロシージャへのアクセスを許可されているが、クエリを実行できない
一部のアプリケーションがログインできるようにするSQLサーバーを実行する製品に取り組んでおり、そのログインにはストアドプロシージャを実行する権限が付与されています。ストアド プロシージャは管理者が所有しています。ストアド プロシージャはクエリを受け取って実行し、結果がアプリケーションに返されます。
残念ながら、アプリケーションがアクセスを許可されたストアド プロシージャを呼び出すことができる理由はわかりませんが、ストアド プロシージャは渡された SQL ステートメントを実行できません。
管理者としてログインしている場合、ストアド プロシージャは渡されたクエリを実行しますが、制限付きユーザーとしてログインすると、execute ステートメントで例外がスローされます。
例えば:
STORED_PROC は次のようになります。
EXEC を除いて、try catch ステートメント内には何もありません。SQL_STATEMENT は、管理者としてログインしている場合は機能しますが、ユーザーとしてログインしている場合は機能しません。
ユーザーがストアド プロシージャのみを介してクエリを実行できるようにするために設定する必要があるアクセス許可を特定するのを手伝ってくれる人はいますか?
そのため、ストアド プロシージャを介して生の SQL ステートメントを実行できるようにすることについて、いくつかのコメントがありました。ストアド プロシージャを使用する目的を無効にします...しかし、実際には、暗号化された SQL ステートメントをストアド プロシージャに渡しています。ストアド プロシージャはステートメントを復号化し、それを実行します。
そうです、実際には生の SQL ステートメントは安全ではなく、ストアド プロシージャの目的を無効にしますが、ODBC を介して渡され、2005 年より前の SQL Server に対して実行される SQL クエリを暗号化する方法がわかりません。
いずれにせよ、少なくとも基本的なセキュリティを確保するために、最低限の安全策を講じようとしました。
java - Hibernate:既存のテーブルに似た新しいテーブルをプログラムで作成する方法はありますか?
多くのテーブルを持つ Web アプリがあります (それぞれが POJO を表します)。各クラスのマッピング ファイルを作成し、Hibernate を使用SchemaExport
してデータベースにテーブルを生成しました。ここで、作成された既存のテーブルごとに 2 つの追加テーブルを作成します。
- ユーザー権限テーブル- 各フィールドに固有の POJO に対するユーザー権限を格納します
。各列は POJO のフィールドを表し、各行はユーザーを表し、各セルは「読み取り」、「書き込み」などの値を持ち、ユーザーの権限を表します。分野 - データ履歴テーブル- すべてのデータ履歴をバージョン番号とともに保存します。
このテーブルには、POJO テーブルに含まれるすべての列が含まれ、4 つの追加フィールド (データ オブジェクト バージョン、トランザクション GUID (主キー)、データスタンプ、およびこのトランザクションを実行したユーザー) が含まれます。
これらのテーブルが作成された後、Hibernate を介してこれらのテーブルにアクセスできるようにしたいと考えています。エントリを簡単に追加/削除/更新できるようにします。
私の質問
追加のテーブルのほとんどの列は、POJO テーブルと同じです。したがって、新しいテーブルを作成するのではなく、何らかの方法で POJO テーブルを参照する方がよいのではないかと思います。このようにして、POJO テーブルに新しいフィールドが追加された場合、これらのテーブルは自動的に変更されます。しかし、私はこれを行う方法を知らないようです。私はおそらくいくつかの方法があると思いました:
- POJO テーブルを参照する hibernate マッピング ファイルを何らかの方法で作成します。
たとえば、新しい POJOPermission.hbm.xml ファイルで、 POJO テーブルと同じフィールドを指定し、これらの新しいフィールドを追加します。 - Hibernate でテーブルを作成する Java コードを記述します。
たとえば、java.lang.Class を使用して POJO 内のすべてのフィールドのリストを返し、これらを繰り返し処理し、これらを新しいテーブルの列ヘッダーとして設定し、何らかの方法で呼び出すことができます。実行時にこれらのテーブルを作成するための休止状態
上記のいずれかを行う方法、またはこの問題を回避する方法を教えてください。この考え方は間違っているのではないかと思うのですが……。
ありがとうございました!!!
[編集 - 解決策]
最終的に XSLT を使用して、元の hbm.xml ファイルを新しいファイルに変換し、フィールド タイプなどを変更しました。また、hibernate.cfg.xml ファイルを指定して、新しく生成されたファイルを含めます。最後に、schemaexport を実行して、すべての Java ファイルをまとめて生成します...
asp.net - Database for ASP.Net アプリケーションにアクセスする SQL ログインの権限
asp.netアプリケーションからデータベースにアクセスするために使用するsqlログインに与える必要がある正確なアクセス権と許可は何なのか、いつも疑問に思っています。アプリケーションは、データをテーブルに挿入、更新、および削除するいくつかのストアド プロシージャを実行します。テーブルでも直接選択、削除、更新を行います。また、いくつかのトリガーがあります。役立つ許可マトリックスの包括的なリストがあるかどうか疑問に思います。
php - PHP で構築された典型的な CMS でデータベース資格情報をどのように保存しますか?
データベース資格情報を CMS に保存するためのベスト プラクティスは何ですか? 次に、データベース シングルトン クラスでそれらを宣言します。
しかし、どこを変更すればよいか探すのは直感的ではなく、あとで cms のインストール ファイルを作成する予定です。
接続設定をどこにどのように保存しますか?