問題タブ [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.
postgresql - PostgreSQL ユーザー グループと承認
Postgresql バージョン 9.0
postgresql ユーザーをグループ化するためのアイデアが必要です。
データベースに 150 以上のテーブルがあり、人々のグループを解決したいと考えています。すべてのテーブルに到達できるものもあれば、到達できないものもあります。付与またはロールの作成を使用して作成できることはわかっています。しかし、私はそれを行うための最良の方法を見つけたいと思っています。パフォーマンスにどのように影響しますか?
すべてのユーザーにいくつかのテーブルへのアクセスを許可し、それらを管理するのは難しいと思います。そこで、さまざまなテーブルスペースを作成し、テーブルスペースごとに権限を設定することについて考えました。
ユーザーグループを作成するための良いチュートリアル、記事、またはアプローチはありますか? あなたのアドバイスは何ですか?
sql - ロール、スキーマ、またはスクリプトによるSQLServer2008マルチデータベースのアクセス許可
私のオフィスに、相互に依存している複数のデータベースにアクセスする必要のある複数のユーザーがいるとしましょう。sysadminsのユーザーがいますが、従業員が増えるにつれて、sysadminsではないが、他のユーザーを変更する権限を付与せずに、特定のデータベースに対する所有者レベルの権限を必要とするこれらの新しいユーザーに特定の権限を適用できるようにしたいと考えています。それぞれを手動で追加するのではなく、ユーザーに適用してすべてのデータベースにアクセス許可を与える役割を作成するか、すべてのデータベースのユーザーにこれらのアクセス許可を与えるスキーマを作成するか、スクリプトを作成して与えたいと思います。すべてのデータベースのユーザーへのアクセス許可。例えば
user3とuser4を一度role1に追加したいのですが、これらは3つのデータベース(DB1、DB2、DB3)すべてに対する権限を持ちます。私の理解では、これは基本的にサーバーレベルの役割ですが、私が読んだことから、カスタムサーバーレベルの役割を作成することは許可されていません。
また、私が理解しているように、スキーマはサーバーレベル固有ではなくデータベースレベル固有です(3つのデータベースを1つのスキーマにグループ化してから、そのスキーマにユーザーを追加することはできません)。
それで、それは私にスクリプトだけを残しますか、それとも私は役割またはスキーマでこれを行う方法を逃していますか?
database - 1 つのクエリで複数のデータベースを参照する権限を設定する方法 (SQL Server)
同じ SQL Server に 2 つのデータベースがあり、それらのテーブル構造は同じです。Database2010
データが取り込まれ、Database2007
空です。
Database2010
のテーブルからデータをコピーして の同じテーブルに挿入する SQL ステートメントを作成する必要がありますDatabase2007
。
私はこのようなことを考えています:
このように両方のデータベースにアクセスできるように SQL Server で権限を設定するにはどうすればよいですか?
複数のデータベースクエリに関する他の質問を読みましたが、それらはすべて構文に関連しており、それぞれに「もちろん、データベースごとに適切な権限を設定する必要があります」などのようなものがありました。これらの適切な権限はどこにありますか?
mongodb - MongoDB を使用して階層内のレコードの所有者を効率的に決定する
私は次のことを達成しようとしています:
私が所有するすべてのレコードを選択します。ここで、所有権は私が作成したオブジェクト、または私が管理するユーザーが作成したオブジェクトであり、ユーザー管理はユーザーを管理するユーザーの階層にある可能性があります
所有権は明らかに簡単で、所有者に対応する単純な ID で処理できます。ユーザー管理の階層は、ID の大規模なリストを手間をかけずに実行するのに少し困惑しています (明らかに、管理されているすべてのユーザーを検索し、IN 句などを使用してそれらのユーザーのいずれかによって作成されたすべてのオブジェクトをリストすることができます)。
理想的には、これがすべて 1 つのクエリで発生するため、通常のページングと条件が発生します。
私はそれを成し遂げるためにいくつかの数学があったかもしれないと考えていました.IDを何らかの方法でハッシュして、それらがコマンドチェーンの誰かによって所有されているかどうかを判断できる.
この種の参照はありますか?
明らかな何かが欠けていますか?
それが違いを生む場合はMongoDBを使用しますが、インスピレーションのために他のデータベースについて考えてみてください.
更新: 1,000,000 レコードの MongoDB コレクションを作成して、クエリの IN 句の管理可能な数のパラメーターを構成する正確なデータを取得しました。具体的な情報が入り次第報告します。
分析:
ruby-mongo-driver と ruby ベンチマーク ライブラリを使用します。
1039944 レコードの MongoDB コレクション
レコードは次のように定義されます。
すべてのフィールドに対してランダムに生成された値。
Owner フィールドにはインデックスがあります。
次の条件でクエリを実行します。
結果:
クエリに 10k の ID のリストがあっても、パフォーマンスは非常に高速です。
sql - ストアド プロシージャが SQL Server 2012 の証明書を使用してシステム テーブルから選択できるようにする
現在、システム テーブルから選択しようとするストアド プロシージャを実行しようとすると、アクセス許可に関連する問題が発生します。基本的に、必要なデータを sys.dm_tran_current_transaction テーブルから直接取得することで、SQL Server 2012 での sp_bindtoken システム ストアド プロシージャの廃止を回避しようとしています。
私が見つけた1つの解決策は次のとおりです。
- 証明書を作成する
- 証明書からユーザー/ログインを作成する
- ユーザーに VIEW SERVER STATE 権限を付与する
- 証明書を使用してストアド プロシージャに署名する
- 作成したばかりのユーザーのコンテキストで実行されるストアド プロシージャを実行します。
このアプローチは、SQL Server 2008 R2 でうまく機能するようです。ただし、SQL Server 2012 では、スクリプトが正しく実行されているように見えても、実行時に上記のシステム テーブルから選択しようとすると、ストアド プロシージャがアクセス許可エラーで失敗します。
私が現在持っているスクリプトは、次のようになります。
これは、署名/実行しようとしているストアド プロシージャを作成するコードです。
以前にこの種の問題に遭遇した人はいますか?
oracle - ユーザーが選択できるすべてのテーブルを取得します (Oracle の場合)
ユーザーが (直接または割り当てられたロールを通じて付与された) SELECT 権限を持っているすべてのテーブルのリストを取得するにはどうすればよいですか?
postgresql - PostgreSQL がユーザーとグループをロールに統合したのはなぜですか?
ロールの概念には、「ユーザー」と「グループ」の概念が含まれています。8.1 より前のバージョンの PostgreSQL では、ユーザーとグループは異なる種類のエンティティでしたが、現在はロールのみです。どのロールも、ユーザー、グループ、またはその両方として機能できます。
なぜ彼らは 8.1 でこの変更を行ったのですか?
おそらく、C コーダーの観点からすると、単一の Role クラス (構造体) を使用する方が簡単でしょうか?
詳細:
CREATE USER is equivalent to CREATE ROLE except that CREATE USER
user/role に LOGIN パーミッションを付与します。
(私は自分の webapp の許可システムを設計しようとしているので、これに興味があります。)
security - DotNetNuke の初期インストール セキュリティのベスト プラクティス
Windows Server 2008 にいくつかの DotNetNuke サイトをインストールしました。知りたいのは、さまざまなセキュリティ エンティティを一緒に構成する方法です。たとえば、一部のインストール リファレンスでは、サイト ファイルのアクセス許可を設定して、変更権限を持つ「NETWORK SECURITY」を含めることを推奨しています。IIS 7.5 AppPool ID が Network Service に設定されています。
データベースについては、SqlServer 2008 を使用しています。Windows 統合ユーザー ID と SqlServer ユーザー ID の両方を使用しました。どちらが優先されますか? このフォーラムで、AppPool ID には SqlServer の db_owner 権限が必要であることに気付きました。
要するに、ファイルのアクセス許可、IIS 7.5 AppPool、および SqlServer 2008 のセキュリティ設定を結び付けようとしています。DotNetNuke 5.x および 6.x を使用しています。
database - 「実際の」データベースに対するどのような権限がユーザーに付与されますか?
歴史的/監査可能なデータベースに対する@PerformanceDBAの回答を読んで、彼は次の声明を出しました:
実際の (標準 ISO/IEC/ANSI SQL) データベースでは、ユーザーに INSERT/UPDATE/DELETE パーミッションを付与しません。GRANT SELECT と REFERENCES のみ (選択したユーザーに対して) すべての INSERT/UPDATE/DELETE は、ストアド プロシージャを意味するトランザクションでコード化されます。次に、各ストアド プロシージャの GRANT EXEC を選択したユーザーに付与します (ROLES を使用して管理を軽減します)。
これは本当ですか?INSERT/UPDATE を動的に生成する ORM ツールとどのように連携しますか?
アップデート
では、例を示します。AdminとUserの 2 つのインターフェイスを備えた Web アプリケーションがあります。管理者側は、数千とは言わないまでも数百の個別の SQL コマンドを動的に生成できる重いORM を使用します。
ユーザーとのやり取りははるかに簡単で、いくつかの投票ボタンの UPDATE/INSERT を処理する SP が 10 個ほどあります。明らかに、アプリケーションを実行するユーザーの権限セットは大きく異なります。管理者側では、ORM の DB ユーザーは関連するテーブルへの完全な CRUD アクセス権を持っています。このアプリケーションには SP はまったく使用されていません。また、ドメイン モデルのビジネス ロジックを経由せずにデータに触れることは考えられません。 . バルク データ インポートでさえ、ORM を通じて処理されます。ユーザー側の SP は、特殊なケースであるという理由だけで、この原則に対する小さな譲歩を考えています。
さて、元の質問の上記のステートメントはやや気がかりです。これは「実際の」データベースのようなものであるか、少なくともそれに近いものであると考えているからです。
sql - sys.database_permissionsに状態='R'の行が含まれるのはいつですか?
のMSDNドキュメントにsys.database_permissions
は、状態列は「G」、「D」、「R」、または「W」のいずれかであると記載されています。'R'値には'REVOKE'の説明があり、この値を持つ行が取り消された権限に対応するように聞こえます。ただし、のドキュメントREVOKE
からわかるように、権限を取り消すと完全に削除されるため、から行を削除するだけでよいと思いsys.database_permissions
ます。これは、許可の付与と取り消しをテストしたときに起こったことです。GRANT
許可がそのビューに表示された後、およびそれREVOKE
が消えた後。
私の質問:このビューには、状態が「R」に設定された行が含まれるのはどのような状況ですか?コードでこのビューを調べるときに「R」行を処理する必要があるかどうかわからないため、これを求めています。
これが発生する可能性のあるいくつかの潜在的なシナリオを考えることができますが、確認は見つかりませんでした。
- 包括的権限を付与してから、包括的権限によって暗示されるより詳細な権限を取り消すと、「R」行が表示される場合があります(詳細な権限は「R」として表示されます)。これまでのところ、そのような権限は見つかりませんでした。
- SQLがコマンドを処理している間、「R」行が非常に短時間表示さ
REVOKE
れ、行全体が消える場合があります。私はこれを観察していませんが、おそらくそれが現れる時間の非常に小さなウィンドウしかありません。