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

ユーザーがアクセスを許可されたデータのみにアクセスできるようにします。また、ネットワーク上の移動中のデータの保護と、ディスクおよびバックアップ上のストレージも含まれます。


2
「sa」パスワードを変更するには、SQLを再起動する必要がありますか(混合モードで)?
SQL "sa"アカウントが使用されるべきでない方法で使用されていることを発見したため、すべてのSQLインスタンスでsaパスワードを変更しています。 (SQL 2005〜2017のサーバーは混合認証モードで実行されています。すべてのユーザーとアプリケーションは、ドメインアカウントまたは非sa SQLアカウントを使用して接続する必要があります。監視していますが、他のアプリ、ユーザー、または非-saアカウントを使用した内部spid。) いくつかの質問: Q1:saパスワードを変更するには、SQLの再起動が必要ですか? saアカウントのパスワードを変更した後、SQLサービスの再起動が必要であると言ういくつかの参照を見つけました。 DBA SE:saパスワードの変更 SQLAuthority:Management Studioを使用したSAログインのパスワードの変更 本当?または、認証モードを変更する場合にのみ?または、私が日常的にsaとしてログオンする場合のみ? このSQL Server Centralスレッドは、変更すると既存のSQLエージェントジョブなどに影響を与える可能性があることを示唆しています。それは心配ですか?または、誰かがSAアカウントをSSISパッケージなどにハードコーディングした場合にのみ? (重要な場合は、SQLサービスとSQLエージェントサービスにドメインアカウントを使用し、SSISパッケージまたはPowerShellスクリプトを呼び出すジョブにドメインプロキシアカウントを使用します。) Q2:saパスワードを「通常の」方法で変更できますか? 他のアカウントと同じようにリセットできますか?SSMSを使用するか、より可能性が高い: ALTER LOGIN sa WITH PASSWORD = 'newpass'; または、シングルユーザーモードまたは計画的なダウンタイムを必要とするモードに入る必要がありますか?(「sa」として接続しているときではなく、ドメインアカウントから実行していることに注意してください。) Q3:このパスワードのローテーションを定期的に実行する必要がありますか?または、問題が見つかった場合のみ? これは推奨される「ベストプラクティス」ですか?

4
アプリケーションのユーザーごとに個別のデータベースアカウントを使用するのは良い習慣ですか?
私が使用しているアプリケーションはサーバーベースであり、多くのユーザーに対して1つのデータベースアカウントを使用します。アプリケーションコードは、ユーザーができることまたはシングルユーザーを制御します。 各ユーザーが独自のデータベースアカウントを必要とし、データベースサーバーが各ユーザーに許可および禁止すべきことに関するポリシールールの実施に依存している、成功した複雑なビジネスアプリケーションはありますか? 複数の人が1つのデータベースの情報に貢献し、他の人(たとえば、顧客レコードにすべてアクセスする必要がある組織内の同僚)が保存した情報にアクセスできるアプリケーションについて考えています。 このタイプのセットアップには名前もありますか?
13 security 

3
ユーザーをコピーのみのバックアップに制限する
実稼働環境にログ配布を展開したいと考えています。これは、開発環境を更新するためにバックアップを取る人々によって中断される可能性があるバックアップチェーンを管理する必要があることを意味します。障害が発生し、ログバックアップを使用して特定の時点に復元したい場合は、開発者が作成したバックアップも必要になります。 開発者がコピーのみのバックアップのみを使用している場合、これは起こりません。だから私の質問は次のとおりです。コピーのみのバックアップのみを実行できるようにユーザーを制限する方法はありますか?

2
MS SQL Serverの暗号化とバックアップについて
そこで、 SQL Serverバックアップファイルの安全性についてチャットで質問しました。 攻撃者が暗号化されていない.bakファイルにアクセスできる場合、データにアクセスできると言われます。 このシナリオを見てみましょう: OPEN SYMMETRIC KEY MySymetricKey DECRYPTION BY CERTIFICATE MyCertificate 注意-ここにはパスワードはありません。 次に、テーブルを暗号化します: UPDATE tbl1 SET namePAss = ENCRYPTBYKEY(KEY_GUID('MySymetricKey'),name) GO ハッカーが私のbakファイルを手に入れたとしましょう。(自分のコンピューターとSQLサーバーで)データを表示するために彼がしなければならないことは: SELECT convert( NVARCHAR(max), decryptbykey(namePAss)) FROM tbl1 彼はまだデータにアクセスできますか?

2
SQL Server EXECUTE ASトラブル
ストアドプロシージャを使用しようとしているときに何かが見つかりませんEXECUTE AS。ストアドプロシージャは、データを読み取りsource_db、集計し、結果をに格納しtarget_dbます。 sp自体はにありtarget_dbます。私は専用のログインを持っているし、両方のユーザーにマッピングsource_dbしてtarget_db、SPの所有者のために(そのユーザーが存在するapp_agent中source_dbやでtarget_dbログイン用app_agent)。 としてログインしてapp_agent実行する場合 EXEC target_db.app_agent_schema.import_data すべてが正常に動作します。しかし、私が変更した場合 ALTER PROCEDURE app_agent_schema.import_data WITH EXECUTE AS OWNER` (or `AS SELF`) 実行してみてください サーバープリンシパル "app_agent"は、現在のセキュリティコンテキストではデータベース "source_db"にアクセスできません。 SQL Server 2008を使用しています。 誰かが私のエラーを指摘できますか? ありがとう 更新 いくつかの研究を行った後、私はそれを発見しましたALTER DATABASE target_db SET TRUSTWORTHY ON、それが問題解決するが、それは私にとって正しい解決策ではないようです...

2
PL / SQLを実行するアプリケーション開発者のOracleでの作業
Oracleのスキーマレベルの権限の欠如をどのように処理しますか?オラクルのセキュリティアーキテクチャは、オブジェクトレベルの権限のみを必要とするアプリケーションに適しています。また、制限をほとんど必要としないDBAにも適しています。ただし、フロントエンドアプリケーションと複数のスキーマのPL / SQLを使用して開発を行うプログラマにとって、アーキテクチャには大きなギャップがあるようです。以下に、私のオプションとその欠点をいくつか示します。 各プログラマーが独自のスキーマで開発を行うようにします。DBAは、それらを必要とするプログラマーにオブジェクトレベルの特権を付与します。パッケージ開発はすべてDBAが行う必要があります。主な欠点は、プログラマーがデータベースのパフォーマンスを損なうために、少しバケットのようにデータベースを使用することです。プログラマーにデータベースで開発してほしいのですが、この方法では大いに落胆します。 各プログラマーに開発に必要な12個程度のスキーマのユーザー名/パスワードを与えます。これらのアプリケーションスキーマにプロシージャ、テーブルなどを作成するためのアクセス許可を与えます。このアプローチの欠点のいくつかは、複数のログイン自分自身としてログインすることはほとんどありません。クロススキーマ開発も困難です。 プログラマーが開発に必要な各スキーマのプロキシ認証特権を付与します。これにより、プロキシ権限以外の権限を付与する必要なく、ユーザーは自分自身としてログインしたままになります。欠点には、プロキシするスキーマごとに個別の接続を維持する必要があるプログラマーが含まれます。接続を絶えず変更する必要があるため、クロススキーマ開発はより面倒です。また、認証に合格したパブリックデータベースリンクを使用するパッケージは、プロキシ接続内でコンパイルされません。 各プログラマにDBA特権を付与します。–ここでの欠点はセキュリティです。スキーマプログラマーをスキーマから締め出すことはできず、プログラマーは他のプログラマー(DBA)になりすますことができます。 各プログラマーにSELECT / INSERT / CREATE / etcを付与するオプションがないようです。開発を行うために必要なスキーマに対する権限。自分でログインして、1つの接続を使用して作業を行います。アクセスできるスキーマ内の新しいオブジェクトはすぐに使用できます。 何か不足していますか?PL / SQL開発を行うアプリケーションプログラマをどのように扱いますか?

2
一般的なユーザーに付与する適切な権限は何ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 MySQLによって提供される特権のリストは少し圧倒的だと思います。誰がどのような特権を持つべきかわかりません。私の考えでは、私の状況には3つの一般的なユーザーがいます。 root developer application root自明です。以下の場合developer、このユーザー私はこの権限セットにこのユーザを設定してい手始めになど、それまでのメイクの調整簡単に任意のデータベースにアクセスできるようにする必要があります。 SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON applicationさらに限定されたセットがあります。特定のデータベースの操作に限定する必要があります。 付与するのに適切な特権のセットが何であるかわかりません。開発者とアプリケーションに付与するための合理的な特権セットとは何ですか。なぜですか。


2
T-SQL(SSMSではない)を使用してデータベースにログインをマップする方法
すべてのアクセス許可とすべてをコードに割り当てる必要があるプログラムを書いています。私はこの部分で立ち往生しています: msdbデータベースの[マップ]の下にある小さなボックスをクリックし、そのユーザーをSqlAgentUserロールに割り当てるのと同じことをしたいだけです。SQL Serverエージェントジョブを追加/編集できるユーザーが必要です。SSMSを使用して設定を正しく取得できますが、生のSQLでそれを実行する方法を理解することができません。 ALTER LOGINを調べましたが、必要なことを実行するものは何も見つかりません。私はGoogleに対する正しい用語を知らないだけだと思います。私は通常、このようなことはしません。 どんな助けでも大歓迎です!

1
SQL Serverのdynamic-sqlで識別子を引用する関数は何ですか?
動的SQL生成のために識別子を安全に引用するSQL Serverの方法は何ですか。 MySQLには quote_identifier PostgreSQLには quote_ident 動的に生成されたステートメントに動的に生成された列名を指定すると、列自体がSQLインジェクション攻撃ではないことをどのように確認できますか? SQL文があるとします。 SELECT [$col] FROM table; これは本質的に同じです 'SELECT [' + $col + '] FROM table;' インジェクション攻撃を阻止するもの $col = "name] FROM sys.objects; \r\n DROP TABLE my.accounts; \r\n\ --"; その結果 SELECT [name] FROM sys.objects; DROP TABLE my.accounts; -- ] FROM table;

3
ユーザーが多い場合、DROP USERに時間がかかりすぎる
十分なRAMと高速ディスクを備えたSQL Server 2014インスタンスでは、データベースにアクセスできるユーザーが160人以上います。なんらかの理由で私にはわからないためDROP USER [username]、このデータベースでコマンドを実行すると、ユーザーあたり最大5秒かかります。 ログインへのユーザーの再マッピングと権限の復元は非常に高速です。 本番環境からDEVデータベースを更新するという状況では、すべてのデータベースユーザーを削除して再作成する必要があります。したがって、データベースユーザーを削除して再作成する必要があります。 DROP USERコマンドを高速化するにはどうすればよいですか? 私が書いているインスタンスでは、160回以上実行する必要があることを覚えておいてください。 これは私が使っているSQLです: DECLARE drop_user_cur CURSOR FOR SELECT name FROM #drop_users OPEN drop_user_cur FETCH NEXT FROM drop_user_cur INTO @user WHILE @@FETCH_STATUS = 0 BEGIN SET @sql = 'use [' + @db_name + '] DROP USER [' + @user + ']' BEGIN TRY …

3
既存のユーザーのパスワードポリシーの確認
最近、多くのデータベースログインでenforce_password_policyフラグが有効になっていない環境に入りました。 次の監査では、これらのログインのパスワードの検証が必要です。 次のクエリを使用して、ログインのリストとフラグがオンかオフかを取得しました。 select @@SERVERNAME as servername, name, IS_SRVROLEMEMBER('sysadmin', name) as SYSADMIN, type_desc, create_date, is_policy_checked, is_disabled, password_hash, PWDCOMPARE(name, password_hash) as UsernameAsPassword FROM sys.sql_logins ただし、フラグはユーザーの作成時にのみ関連するため、パスワードが実際にパスワードポリシーに準拠しているかどうかはわかりません。 パスワードポリシーのコンプライアンスについて既存のユーザーをテストする既知の方法はありますか? 私は古いパスワードにアクセスできず、それらを必要としない方法を好みます。

2
SQL CLRを使用したセキュリティまたはパフォーマンスのリスク[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 SQL ServerでCLRを使用する際に、特定のセキュリティまたはパフォーマンスのリスクはありますか?

2
別のSQLアカウントとして実行されるSQLジョブステップ
別のSQLログインアカウントとして実行されるSQLジョブステップを設定する方法に興味があります。既存の資格情報を必要とする新しいプロキシアカウントを設定する必要があるようです。資格情報を作成するときの唯一の選択肢は、Windowsログイン資格情報を使用することです。 私が実行しようとしているジョブは以下のとおりです。他にもステートメントがありますが、SQLログインとして実行するようにジョブステップを設定すると失敗します。 insert into [dbo].[TableA] SELECT ss.[Ref_ID] ,mm.[studentID] ,mm.[studentPersonID] ,mm.[studentFirstname] FROM [dbo].[TableB] mm left outer join [dbo].[TableC] ss on ss.parentPersonID=mm.parentPersonID and mm.studentPersonID = ss.studentPersonID where ss.Ref_ID is not null; これがSQLジョブステップを介して実行されると、失敗します。 Executed as user: an_admin_account. Access to the remote server is denied because the current security context is not trusted. [SQLSTATE …

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