2026年5月19日火曜日

SQL Server ログインとユーザーの違い|認証モデルとアクセス制御の基本

「ログイン」と「ユーザー」は別物?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認証の場合)

  1. ログインを作成(サーバーレベル)
  2. ユーザーを作成(データベースレベル)
  3. 必要な権限を付与

-- ① ログイン作成
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認証と定期棚卸しが有効。

参考リンク

SQL Server 解説用イメージ

0 件のコメント:

コメントを投稿