SQL Serverでのユーザーとログインの違い


178

私は最近、通常は操作しないSQL Serverのさまざまな領域に遭遇しています。私が混乱しているそれらの1つは、ログインとユーザーの領域です。それはかなり単純なトピックでなければならないようです...

各ログインは1人のユーザーしか持つことができず、各ユーザーは1人のログインしか持てないようです。

ログインは複数のテーブルに関連付けることができるため、そのユーザーを多くのテーブルに関連付けることができます。

だから私の質問は、なぜログインとユーザーさえ持っているのですか?それらはほぼ同じもののようです。違いは何ですか、または私が欠けているように見えるのは何ですか?

回答:


202

「ログイン」は、サーバーへの主要なエントリを許可します。

「ユーザー」は、単一のデータベースへのログインエントリを許可します。

1つの「ログイン」を多くのユーザーに関連付けることができます(データベースごとに1つ)。

上記の各オブジェクトには、独自のレベルで権限を付与できます。それぞれの説明については、以下の記事を参照してください


7
違いを見つけられなかったのも不思議ではありません。私は単に1つのデータベースで作業していました。ありがとう。
corymathews 2009

3
この答えは基本的に正しいですが、私が理解しているように、特定のユーザーは、その特定のサーバーで利用可能な複数のデータベースへのアクセスを実際に許可される場合があります。したがって、ログインからユーザーへのマッピングは1対1ですが、ユーザーからデータベースへのマッピングは1対多のマッピングです。
Andrew Pate 2017

1
@coreymathews:「Boy Meets World」の時間が減り、本の時間が増えました!;)。
MSIS 2017

しかし、現在MSDNでは、ユーザーの種類として「データベースで認証するユーザー」を推奨しています(データベースの移植性を高めるために推奨されています)。リンク:docs.microsoft.com/en-us/sql/t-sql/statements/… これは従来のユーザータイプよりも優れていますか?
シーン

32

両方を使用する理由の1つは、認証はデータベースサーバーで実行できるが、承認のスコープはデータベースに限定できることです。このようにして、データベースを別のサーバーに移動した場合、データベースサーバーでユーザーとログインの関係をいつでも再マップできますが、データベースを変更する必要はありません。


詳しく説明していただけますか?変更がデータベースではなくデータベースサーバーで行われる利点は何ですか?
HeyJude

データベースをバックアップおよび復元したいとします。多くの場合、復元は新しいサーバーで行われます。復元時にデータベースを変更する必要がない場合もあります。
トムResing

データベースが復元された後で変更を行うだけではどうですか。
HeyJude

1
より多くの情報のためSQLAuthorityで話題に良い60秒のビデオありますblog.sqlauthority.com/2014/07/16/...は
トムResing

1
@HeyJudeサーバーが認証に関係していることは、ログインとユーザー分離のためにデータベースが実行しなければならないことです。
Zaid Khan

25

Laurentiu Cristoforによるこのトピックについて、本当に良いMSDNブログ投稿があると思います。

SQL Serverのセキュリティについて理解する必要がある最初の重要なことは、サーバーとデータベースの2つのセキュリティレルムが関係していることです。サーバーレルムには、複数のデータベースレルムが含まれます。すべての作業は一部のデータベースのコンテキストで行われますが、作業を行うには、最初にサーバーにアクセスし、次にデータベースにアクセスする必要があります。

サーバーへのアクセスはログインを介して許可されます。ログインには、SQL Server認証ログインとWindows認証ログインの2つの主なカテゴリがあります。通常、SQLログインとWindowsログインの短い名前を使用してこれらを参照します。Windows認証ログインは、WindowsユーザーにマップされたログインまたはWindowsグループにマップされたログインのいずれかです。したがって、サーバーに接続できるようにするには、これらのタイプまたはログインのいずれかを介してアクセスできる必要があります。ログインは、サーバー領域へのアクセスを提供します。

しかし、ログインは十分ではありません。通常、作業はデータベースで行われ、データベースは別々のレルムだからです。データベースへのアクセスはユーザーを介して許可されます。

ユーザーはログインにマップされ、マッピングはログインとユーザーのSIDプロパティによって表されます。SID値が同一の場合、ログインはデータベース内のユーザーにマップされます。したがって、ログインのタイプに応じて、上記のログインの分類を模倣したユーザーの分類を作成できます。したがって、SQLユーザーとWindowsユーザーがあり、後者のカテゴリは、WindowsユーザーログインにマップされたユーザーとWindowsグループログインにマップされたユーザーで構成されます。

簡単な概要に戻りましょう。ログインは サーバー へのアクセス提供し、さらにデータベースへのアクセスを取得するには、ログインにマップさたユーザーがデータベースに存在している必要があります。

それは完全な投稿へのリンクです。


このブログ投稿は
削除

23

要するに、

ログインにはサーバーへのアクセス権があります。

そして

ユーザーはデータベースにアクセスできます。


6

これは非常に役立つ質問で、良い答えだと思います。MSDNから2セントを追加するだけで、ログインページを作成します。

ログインは、セキュリティプリンシパル、または安全なシステムによって認証できるエンティティです。ユーザーがSQL Serverに接続するにはログインが必要です。Windowsプリンシパル(ドメインユーザーやWindowsドメイングループなど)に基づいてログインを作成することも、Windowsプリンシパルに基づいていないログイン(SQL Serverログインなど)を作成することもできます。

注:
SQL Server認証を使用するには、データベースエンジンで混合モード認証を使用する必要があります。詳細については、「認証モードの選択」を参照してください。

セキュリティプリンシパルとして、ログインにアクセス許可を付与できます。ログインのスコープは、データベースエンジン全体です。SQL Serverのインスタンス上の特定のデータベースに接続するには、ログインをデータベースユーザーにマップする必要があります。データベース内の権限は、ログインではなくデータベースユーザーに付与および拒否されます。SQL Serverのインスタンス全体のスコープを持つ権限(たとえば、CREATE ENDPOINT権限)をログインに付与できます。


3
>引用の各段落の先頭にaを付けて、引用として書式設定すると、少しわかりやすくなります。
サム

2
これはとても役に立ちました。ユーザーとログインを正しく設定しましたが、SQL Serverログイン認証を許可するようにシステムが設定されていません。サーバーがログインを許可しないのにSQL Serverログインを作成できる理由は私を超えています!
マークアイルランド

私もこれに困惑しました。サーバーが現在混合モードになっていない場合、SQL Authログインを作成しようとしているときにサーバーがエラーをスローすることを期待していましたが、少なくとも最初に混合モード認証をオンにする必要があることを示す手がかりをユーザーに与えます。
arunsun

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