私は最近、私が通常は混乱しないSQL Serverの多くの異なる領域に遭遇しています。私が混乱させているのは、ログインとユーザーの領域です。それはかなり単純なトピックであるように思えます...
各ログインは1人のユーザーしか持てず、各ユーザーは1人のログインしか持てないようです。
ログインを複数のテーブルに関連付けることができるため、そのユーザーを多くのテーブルに関連付けることができます。
だから私の質問は、ログインとユーザーさえ持っている理由ですか?それらはほぼ同じもののようです。違いは何ですか、または私が見逃していると思われるのは何ですか?
「ログイン」は、サーバーへのプリンシパルエントリを許可します。
「ユーザー」は、単一のデータベースへのログインエントリを許可します。
1つの「ログイン」を多くのユーザーに関連付けることができます(データベースごとに1人)。
上記の各オブジェクトには、独自のレベルでアクセス許可を付与できます。それぞれの説明については、以下の記事を参照してください
両方を持つ理由の1つは、データベースサーバーで認証を行うことができるが、データベースに許可範囲を設定できるようにすることです。そうすれば、データベースを別のサーバーに移動した場合、データベースサーバー上のユーザーとログインの関係をいつでも再マップできますが、データベースを変更する必要はありません。
Laurentiu Cristoforによるこのトピックについて、本当に良い MSDNブログ投稿 があると思います。
SQL Serverのセキュリティについて理解する必要がある最初の重要なことは、サーバーとデータベースという2つのセキュリティレルムが関係していることです。サーバーレルムには、複数のデータベースレルムが含まれます。すべての作業はデータベースのコンテキストで行われますが、作業を行うには、最初にサーバーにアクセスし、次にデータベースにアクセスする必要があります。
サーバーへのアクセスは、ログインを介して許可されます。ログインには、SQL Server認証ログインとWindows認証ログインの2つの主要なカテゴリがあります。私は通常、SQLログインとWindowsログインの短い名前を使用してこれらを参照します。 Windows認証ログインは、WindowsユーザーにマップされたログインまたはWindowsグループにマップされたログインのいずれかです。したがって、サーバーに接続できるようにするには、これらのタイプまたはログインのいずれかを介してアクセスする必要があります。ログインはサーバーレルムへのアクセスを提供します。
ただし、作業は通常データベースで行われ、データベースは個別の領域であるため、ログインでは不十分です。データベースへのアクセスは、ユーザーを介して許可されます。
ユーザーはログインにマップされ、マッピングはログインとユーザーのSIDプロパティによって表されます。 SID値が同じ場合、ログインはデータベース内のユーザーにマップされます。したがって、ログインのタイプに応じて、ログインの上記の分類を模倣するユーザーの分類を行うことができます。そのため、SQLユーザーとWindowsユーザーがあり、後者のカテゴリは、WindowsユーザーログインにマップされたユーザーとWindowsグループログインにマップされたユーザーで構成されています。
簡単な概要のために戻ってみましょう:ログインは、サーバーへのアクセスを提供し、さらにアクセスするためにデータベース、ログインにマップされたユーザーはデータベースに存在する必要があります。
リンクです 完全な投稿へ。
要するに、
Loginsはサーバーのアクセス権を持ちます。
そして
sersはデータベースのアクセス権を持ちます。
これは非常に有用な質問であり、良い答えだと思います。 MSDNから2セントを追加するだけ ログインの作成 ページ:
ログインは、セキュリティプリンシパル、またはセキュリティで保護されたシステムによって認証できるエンティティです。ユーザーは、SQL Serverに接続するためにログインが必要です。 Windowsプリンシパル(ドメインユーザーまたはWindowsドメイングループなど)に基づいてログインを作成するか、Windowsプリンシパルに基づいていないログイン(SQL Serverログインなど)を作成できます。
注:
SQL Server認証を使用するには、データベースエンジンで混合モード認証を使用する必要があります。詳細については、認証モードの選択を参照してください。セキュリティプリンシパルとして、アクセス許可をログインに付与できます。ログインの範囲は、データベースエンジン全体です。 SQL Serverのインスタンス上の特定のデータベースに接続するには、ログインをデータベースユーザーにマップする必要があります。データベース内のアクセス許可は、ログインではなくデータベースユーザーに付与および拒否されます。 SQL Serverのインスタンス全体のスコープを持つアクセス許可(CREATE ENDPOINTアクセス許可など)をログインに付与できます。