0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQLServerで読み取り専用アカウントを作成、参照できるテーブルを制限、CPU使用率を制限したい場合

Last updated at Posted at 2025-06-12

読み取り専用アカウントを作成するには

SQLコマンドの場合

CREATE LOGIN read_only_user WITH PASSWORD = 'password!';
USE 対象データベース名;

CREATE USER read_only_user FOR LOGIN read_only_user;

-- db_datareaderロールのみ付与でSELECT権限を与える
ALTER ROLE db_datareader ADD MEMBER read_only_user;

-- db_denydatawriter も付与することで、誤ってINSERT/UPDATE/DELETE権限が付与されるのを防げる
ALTER ROLE db_denydatawriter ADD MEMBER read_only_user;

GUIからの場合

アカウントの作成
SSMSでサーバーに接続

「セキュリティ」→「ログイン」右クリック→「新しいログイン」

ログイン名、認証方式(SQL Server認証 or Windows認証)、パスワードを設定
アカウントに権限設定
「ログイン」作成後、「ユーザーマッピング」タブで対象データベースを選択

「データベース ロールメンバシップ」で

「db_datareader」(読み取り専用)

「db_denydatawriter」(書き込み禁止)
をチェックしてOK
  • SSMS (SQL Server Management Studio) は GUI管理ツール
  • コマンドラインだと sqlcmd

読み取り専用アカウントでかつ参照できるカラムを制限したい

CREATE LOGIN read_only_user WITH PASSWORD = 'password!';

USE 対象データベース名;
CREATE USER read_only_user FOR LOGIN read_only_user;

GRANT SELECT ON dbo.テーブル名1 TO read_only_user;
GRANT SELECT ON dbo.テーブル名2 TO read_only_user;
-- 必要なテーブル分繰り返す

不要な権限の付与を避ける。
db_datareaderロールを付与すると「全テーブル参照可能」になるため、付与しない。
INSERT/UPDATE/DELETEなどの権限は何も付与しなければ、デフォルトで持たない。
(必要に応じて)他のオブジェクトの権限も調整
ビューやストアドプロシージャ等も必要に応じて個別にGRANTする。

CPU使用率の制限 (Enterprise Editionで利用可能)

-- CPU10%までのリソースプール作成
CREATE RESOURCE POOL ReadOnlyPool WITH (MAX_CPU_PERCENT = 10);

-- グループ作成
CREATE WORKLOAD GROUP ReadOnlyGroup USING ReadOnlyPool;

-- ログイン名で所属グループ判定
CREATE FUNCTION dbo.MyClassifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
    IF ORIGINAL_LOGIN() = N'read_only_user'
        RETURN N'ReadOnlyGroup';
    RETURN N'default';
END;

-- Resource Governorに分類子関数を設定
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.MyClassifier);
ALTER RESOURCE GOVERNOR RECONFIGURE;
  • リソース ガバナーは、SQL Serverでユーザーやアプリケーションごとのクエリが使用できるCPU、メモリ、物理I/Oなどのリソース量を「予約」または「制限」できる機能。
  • SQL Server Enterprise Editionで利用可能 (SQL Server Standard Editionでは利用できない。)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?