タグ付けされた質問 「permissions」

オペレーティングシステム、データベースマネージャー、またはその他のシステムのセキュリティメカニズムを通じてアカウントまたはロールに付与される特権。

19
開発者は本番データベースを照会できる必要がありますか?
開発者は、SELECT本番データベースを照会(/読み取り専用)する許可を与えられるべきですか?私が以前働いていた場所では、開発チームがdb_datareader役割を果たしていました。私が現在働いている場所では、開発チームは実稼働インスタンスに接続することさえできません。 テストインスタンスの1つは、1週間に1回、運用環境のバックアップから復元された運用環境のコピーです。したがって、開発者が実際にデータを表示しても問題はありません。 開発者がプロ​​ダクションにクエリを許可しない理由は何ですか(単に機密データの読み取りにアクセス権を持たせたくない場合を除く)。




1
DATABASE vs SCHEMAでユーザーのデフォルト特権を管理する方法
私は、SQLite3からPostgreSQL 9.3にかなりシンプルな内部データベース駆動型アプリケーションを移行し、DBのアクセス許可を強化したいと思っています。 アプリケーションは現在、データを更新するコマンドで構成されています。そして、それをクエリするもの。当然、他の方法でデータベースを維持する必要もあります(新しいテーブル、ビュー、トリガーなどを作成します)。 このアプリケーションは、最初はサーバーでホストされる唯一のアプリケーションですが、将来的に他のデータベースを備えたサーバーでホストされる可能性があると仮定して、それが必要になった場合に後でスクランブルする必要はありません未来。 これらはかなり一般的な一連の要件になると思いますが、この種のユーザー/特権の分離を使用して、PostgreSQLで新しいデータベースをセットアップする方法を説明する簡単なチュートリアルを見つけるのに苦労しています。参照は、グループ、ユーザー、ロール、データベース、スキーマ、およびドメインに関する詳細に続きます。しかし、私はそれらを混乱させます。 これは私がこれまでに試したものです(psql「postgres」として): CREATE DATABASE hostdb; REVOKE ALL ON DATABASE hostdb FROM public; \connect hostdb CREATE SCHEMA hostdb; CREATE USER hostdb_admin WITH PASSWORD 'youwish'; CREATE USER hostdb_mgr WITH PASSWORD 'youwish2'; CREATE USER hostdb_usr WITH PASSWORD 'youwish3'; GRANT ALL PRIVILEGES ON DATABASE hostdb TO hostdb_admin; GRANT CONNECT ON …

4
作成されたユーザーは、許可なしでPostgreSQLのすべてのデータベースにアクセスできます
PostgreSQLのセットアップに関して何かが欠けているに違いありません。私がやりたいのは、特定のユーザーが指定したデータベースにのみアクセスできるように、互いに分離された複数のデータベースとユーザーを作成することです。しかし、私が判断できることから、作成されたユーザーは、特定の許可が与えられなくてもすべてのデータベースにアクセスできます。 Ubuntu Server 12.04で行うことは次のとおりです。 apt-get postgresqlをインストール sudo -u postgres createuser -DRSP mike1(新しいユーザーのパスワードの指定) sudo -u postgres createdb data1 psql -h localhost -U mike1 data1(ログインするユーザーmike1のパスワードの指定) 新しいユーザー「mike1」は、データベース「data1」に接続してテーブルなどを作成しても問題ないようです。また、これは、GRANTコマンドをまったく実行せずに(および「data1」の所有者は「postgres手順3)の所有者。これは実際にどのように機能するはずですか? 私がやりたいのは、mike1にdata1へのフルアクセスを許可してから、これをより多くのユーザーとデータベースに対して繰り返し、ユーザーが選択した1つ(またはおそらく複数)のデータベースにのみアクセスできるようにすることです。

3
新しいユーザーがテーブルを作成できるのはなぜですか?
新しく作成したユーザーがデータベースに接続した後にテーブルを作成できるのはなぜだろうかと思っています。私は1つのデータベースを持っていますproject2_core: postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ---------------+--------------+-----------+-------------+-------------+------------------------------- postgres | postgres | SQL_ASCII | C | C | project2_core | atm_project2 | UTF8 | de_DE.UTF-8 | de_DE.UTF-8 | project2=CTc/project2 template0 | postgres | SQL_ASCII | C | C | …

4
MysqlでVIEWのDEFINERを変更するにはどうすればよいですか?
mysqldumpを実行すると、エラーが発生します。 mysqldump: Got error: 1449: The user specified as a definer ('root'@'foobar') does not exist when using LOCK TABLES foobarもはや存在しないレガシーマシンであるため、これは理にかなっています。 すべてのテーブルの定義者を「root」@「localhost」に変更するにはどうすればよいですか?

2
oracle-特定のテーブルへのアクセス権を持つユーザーをリストします
これは以前に尋ねられたと確信していますが、以下に関連する詳細を見つけることができないようです。 以下を行うことができる事前構築テーブルのようなものはありますか(dba_tab_privsを使用しましたが、制限されており、私のニーズをすべて満たしていない)、誰かが次の質問に答えるためのクエリを持っていませんか? 特定の役割が割り当てられているすべてのユーザーをリストしますか? ユーザーに与えられたすべての役割をリストしますか? ユーザーに与えられたすべての特権をリストしますか? 特定のロールがSELECTアクセスを許可するテーブルをリストしますか? ユーザーが選択できるすべてのテーブルをリストしますか? 特定のテーブルでSELECTできるすべてのユーザーをリストします(関連するロールの付与または直接付与(joe toableでのselectの付与))。このクエリの結果には、ユーザーがどのロールを介してこのアクセス権を持っているか、それが直接許可であったかどうかも表示されます。

4
更新すべきではない列の更新を明示的に拒否する必要がありますか?
私は非常に安全な環境で作業することに慣れているため、非常に細かい粒度で権限を設計します。私が通常行うことの1つは、更新されるべきではない列DENYに対する機能を明示的にユーザーに提供するUPDATEことです。 例えば: create table dbo.something ( created_by varchar(50) not null, created_on datetimeoffset not null ); これらの2つの列は、値が設定されたら変更しないでください。したがって、私は明示的にそれらDENYのUPDATE許可をします。 最近、チームミーティング中、開発者は、「何らかの理由で値を更新する必要がある場合」に、フィールドが更新されないことを保証するロジックをデータベース層ではなくアプリケーション層に含めるべきであると指摘しました。私にとっては、典型的な開発者のメンタリティのように聞こえます(私は知っています、私は以前は1人でした!) 私は会社のシニアアーキテクトであり、アプリを機能させるために必要な最小限の特権の原則に常に取り組んできました。すべての許可は定期的に監査されます。 このシナリオのベストプラクティスは何ですか?

2
SQL Server-スキーマ全体またはオブジェクトに権限を付与しますか?
SQL Severのデータベースパーミッション管理の世界に関しては、私は非常に環境に優しいです。 例をシンプルにしましょう。 アカウント「admin」がスキーマA、B、およびCの所有者であるとします。 スキーマA、B、およびCの下で作成されたオブジェクト(テーブル/ビュー)に対する完全な権限(更新/削除/挿入/選択/変更)が必要な別のアカウント「ミニオン」があります。 これは可能ですか?または、これらのスキーマの下にテーブル/ビューを追加するたびに、grantステートメントを実行する必要がありますか?(私には少しばかげているようです)。

3
SQLSERVERAGENT仮想アカウントへのファイルシステムアクセスを許可する
この質問でNT Service\SQLSERVERAGENTマークされた回答に基づいて、Windowsアカウントのファイルシステムアクセスを許可しようとしています。これは仮想サービスアカウントであり、コントロールパネル->ユーザーアカウント領域には表示されないと思います。 このサービスアカウントにファイルシステムへのアクセスを許可するにはどうすればよいですか?具体的には、Windows 7。 私はいくつかのアプローチを読みましたが、私には選択肢がないようです。PowerShellのアプローチを試しましたが、ADコマンドは有効なコマンドではありませんでした。これらのコマンドに必要なWindowsパッチをダウンロードしてインストールしました。また、SQL Server構成マネージャーまたはManagement Studioを介してこれを行うことができるはずであることも読みました。ただし、これらのアクセス許可を調整する場所はわかりません。 SQL Serverエージェントプロセスの開始に失敗し、次のエラーメッセージが表示されます。 Login failed for user 'NT SERVICE\SQLSERVERAGENT'. Reason: Failed to open the explicitly specified database 'msdb'. [CLIENT: <local machine>] 私のグーグルに基づいて、それはこのアカウントの許可に関係しています。 データベースが破損しているかどうかはわかりませんが、データベースが正常な状態にあると表示されます。SQL Serverエージェントのログインは、sysadminとpublicグループの一部です。


4
SQLサーバージョブを実行する権限を付与する
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 MSSQLサーバー2005に、すべてのデータベースユーザーの実行を許可するジョブがあります。 ジョブの実際の作業への入力はデータベーステーブルから取得されるため、セキュリティについては心配していません。そのテーブルにレコードを追加せずにジョブを実行するだけでは何も実行されません。 仕事に公共の許可を与える方法を見つけることができません。 これを行う方法はありますか?この時点で考えることができる唯一のことは、ジョブを絶えず実行する(またはスケジュールどおりに実行する)ことです。存在するとすぐに行われますが、これは最適なソリューションではないようです。

4
なぜBULK INSERTは危険と見なされますか?
この質問は、データベース管理者のStack Exchangeで回答できるため、Information Security Stack Exchangeから移行されました。 2年前に移行され ました。 一般にサイバーセキュリティチーム(私が扱った複数の組織)がBULK INSERTアプリケーションやデータベースプログラマーに(TSQLなどの)権利を付与することに対して何の不満があるのか​​を理解したいと思いますか?最終的な結果は次のようなことを行うアプリケーションと変わらないため、何かを逃さない限り、「ディスクの乱用を埋める」という言い訳は信じられません。 for (long i = 0; i < LONG_MAX; ++i) executeSQL("INSERT INTO table VALUES(...)"); これINSERTは、基本的な書き込み権限を持つ人が実行できる一般的なDMLコマンドです。 アプリケーションの利点として、BULK INSERTはるかに効率的で高速であり、プログラマーはSQLの外部でファイルを解析する必要がなくなります。 編集:私はもともと情報セキュリティサイトでこの質問をしました-BULK INSERTを使用することに反対しているのはDBAではなく、「情報保証」(略してIA-サイバーセキュリティの人々)が問題を強要しているからです。この質問をあと1日か2日シチューさせますが、バルク操作が実際に制約またはトリガーをバイパスする場合、問題であることがわかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.