私はデータベースに接続するための接続文字列を作成します。また、私が持っているデータベースごとに特定のアクセス許可で作成できるユーザーもあります。ユーザーがデータベース用に作成したものを使用しないでコードからconnectionstringでそのデータベースにアクセスできる場合、ユーザーはどのような優れものがありますか?説明してください。ありがとう。SQL Serverのログインとユーザーですか?
答えて
データベースとしては、ユーザーとしてのみアクセスできます。
ユーザーがいない(またはWindows認証を使用する)接続文字列を使用することはできません。
明示的にユーザーを指定しない統合セキュリティを使用できます。 –
@TomasJansson私はそれがWindows認証を使用する資格があると思います。 –
@AndrewBarberああ...その部分を逃した:)。つまり、Windows認証です。 –
監査目的は、これを使用する方法の1つです。テーブルにこの情報が格納されている場合、どのユーザーが何を実行したかが分かります。
たとえば、SUSER_SNAME()
またはUSER_NAME()
は、クエリを実行するユーザーのユーザー名を返します。
Sql Serverの認証を使用するASP.NETでは、ステートメントを実行するユーザーのユーザー名は常に接続文字列で指定されたユーザー名になります。たとえば、Windows統合認証を使用するWindowsアプリケーションの場合、ユーザー名は自分のドメインアカウントから取得されますが、依然として特定のデータベースのユーザーとしてマップされる必要があります。
通常、接続文字列内のデータベースで作成したユーザーの1人を使用します。統合認証を使用している場合を除き、ユーザーを偽装しており、そのユーザーもデータベースに作成する必要があります。どちらの方法でも、データベースに接続文字列を使用してアクセスする必要があります。
別々のユーザーの3つの簡単な利点。
1)データベースへの直接アクセス:SQL Server Management Studio(または同様のもの)を随時クエリに使用している場合は、各ユーザーに個別のユーザー名とパスワードを割り当てる必要があります。
2)監査:あなたが誤ってDROP TABLE CUSTOMERS
3のコマンドを実行した正確に誰が知っているよように、異なるユーザー名とパスワードを使用することにより、あなたは、特定のユーザーにアクティビティのログを記録することができます)セキュリティ:異なるユーザが異なるレベルを与えることができますアクセスを許可しないので、誤ってコマンドを実行することはできません。DROP TABLE CUSTOMERS
また、接続文字列を設定して、ユーザー名とパスワードを受け入れるようにすることもできます依然としてユーザーからの資格情報を要求して、必要なアクセスレベル(アプリケーションに適している場合)を確認します。
どの接続文字列プロパティを使用していますか?あなたは本当に統合されたセキュリティを持っていますか? –
あなたが何を求めているのか全く分からない。あなたの質問に対する答えはありません:http://stackoverflow.com/questions/7902766/implement-database-security? –
データベースに割り当てられているユーザがログインに使用していない場合、コードまたはSQLのいずれかでログインできない場合、どのようにユーザを作成できますか? – ykh