「ログイン」と「ユーザー」は別物?SQL Serverの認証とアクセス管理の基本をわかりやすく解説
SQL Serverのアクセス制御を理解するうえで混乱しやすいのが、ログイン(Login)とユーザー(User)の違いです。 両者は似ていますが、管理対象のスコープが異なります。 この記事では、認証モデルの仕組みから、ログインとユーザーの関係、 実務での作成・権限付与方法を初心者向けに解説します。
目次
SQL Serverの認証モデルを理解する
SQL Serverでの認証方式
SQL Serverでは、サーバーにアクセスする際に以下の2種類の認証方式をサポートしています。
| 認証方式 | 概要 | 特徴 |
|---|---|---|
| Windows認証 | Active DirectoryまたはOSのユーザー情報を利用 | シングルサインオンが可能、安全性が高い |
| SQL Server認証 | SQL Server内部で独立したログインID・パスワードを管理 | アプリケーション接続向き、クロス環境対応 |
どちらを使うかはシステム要件やセキュリティポリシーによって決まります。
ログイン(Login)とは?
サーバーレベルの認証情報
ログイン(Login)は、SQL Serverインスタンス全体にアクセスするための認証情報です。 WindowsアカウントまたはSQLアカウントとして作成され、サーバーレベルでの接続を制御します。
確認方法
SELECT name, type_desc, default_database_name
FROM sys.server_principals
WHERE type IN ('S', 'U', 'G'); -- SQL Login, Windows Login, Windows Group
作成例
-- SQL Server認証ログインを作成
CREATE LOGIN app_user
WITH PASSWORD = 'StrongPass#2025',
DEFAULT_DATABASE = SalesDB;
このログイン単体では、まだデータベースにアクセスできません。
ユーザー(User)とは?
データベース単位のアクセス権を持つアカウント
ユーザー(User)は、各データベース内で定義されるアカウントです。 どのログインがどのデータベースを操作できるかを制御します。
確認方法
SELECT name, type_desc, authentication_type_desc
FROM sys.database_principals
WHERE type IN ('S', 'U');
作成例
-- SalesDB上でユーザーを作成
USE SalesDB;
CREATE USER app_user FOR LOGIN app_user;
ログインとユーザーを関連付けることで、初めてアクセス可能になります。
ログインとユーザーの関係
スコープの違いを理解しよう
| 項目 | ログイン(Login) | ユーザー(User) |
|---|---|---|
| スコープ | サーバーレベル | データベースレベル |
| 役割 | 認証(接続の可否) | 認可(操作の可否) |
| 作成場所 | masterデータベース | 各データベース |
| 管理対象 | サーバー全体の接続・権限 | 特定DBのテーブル・ビューなど |
つまり、ログインは「入館証」、ユーザーは「部屋の鍵」のような関係です。
ログインとユーザーの作成手順
基本手順(SQL Server認証の場合)
- ログインを作成(サーバーレベル)
- ユーザーを作成(データベースレベル)
- 必要な権限を付与
-- ① ログイン作成
CREATE LOGIN report_user WITH PASSWORD = 'Report#2025';
-- ② ユーザー作成
USE SalesDB;
CREATE USER report_user FOR LOGIN report_user;
-- ③ 権限付与(例:SELECT)
GRANT SELECT ON SCHEMA::dbo TO report_user;
これで、report_user が SalesDB 内のデータを参照できるようになります。
権限付与とロールの活用
ユーザーに直接権限を付与する方法
GRANT SELECT, INSERT ON dbo.Customers TO app_user;
データベースロールを利用する
複数ユーザーの管理にはロール(Role)を利用するのが効率的です。
-- カスタムロール作成
CREATE ROLE SalesReader;
GRANT SELECT ON SCHEMA::dbo TO SalesReader;
-- ユーザーをロールに追加
ALTER ROLE SalesReader ADD MEMBER app_user;
これにより、同一職務のユーザーを一括管理できます。
実務での管理ポイントと注意点
- ログイン名とユーザー名は一致させると管理が容易
- 削除時はログインとユーザー両方を確認(孤立ユーザー防止)
- Windows認証を優先し、SQL認証は必要最小限に限定
- パスワードポリシーを有効化し、不正アクセスを防止
ALTER LOGIN app_user WITH CHECK_POLICY = ON, CHECK_EXPIRATION = ON;
また、定期的にログイン権限を棚卸しし、不要なアカウントを削除しましょう。
まとめと次のステップ
学んだ内容の整理
- ログインはサーバーへの接続を制御、ユーザーはデータベース内の操作を制御。
- 両者を関連付けることで初めてアクセス可能となる。
- ロールを使うと権限管理が簡潔で安全。
- セキュリティ強化にはWindows認証と定期棚卸しが有効。
参考リンク

0 件のコメント:
コメントを投稿