SQL Server サーバー・データベースロールとその設定方法

SQL Server では、ユーザーの権限を管理を簡単にするために、固定サーバーレベルのロールと、データベースレベルのロールが用意されています。

ここでは、固定サーバーレベルのロールと、データベースレベルのロールと設定方法についてご説明します。

固定サーバーレベルのロールとは?

固定のサーバーレベルのロールとは、サーバーに対しての権限をまとめたものです。

ログインユーザーに対してサーバーロールを設定することで、ひとつひとつサーバーに対してできる権限を許可していくのではなく、まとまった権限を与えることができます。

ログインユーザーに複数のサーバーロールを設定したり、ユーザー定義のサーバーロールを作成して設定することも可能です。


なんでもできる固定サーバーロールは sysadmin で、一番権限がないのが public です。

他には serveradmin、securityadmin、processadmin、setupadmin、bulkadmin、diskadmin、dbcreator があります。


マイクロソフトのサイトに、サーバーロールとパーミッションの関係を示した、わかりやすい表がありましたので、載せておきます。

SQL Server サーバー・データベースロールとその設定方法 1

[Reference] Server-Level Roles - SQL Server | Microsoft Docs


固定のデータベースレベルのロールとは?

固定のデータベースレベルのロールとは、データベースに対しての権限をまとめたものです。

データベースユーザーに対してデータベースのロールを設定することで、データベースに対してできる権限をひとつずつ許可していくのではなく、まとめて権限を与えることができます。

複数のデータベースロールを割り当てたり、ユーザー定義のデータベースロールを作成して割り当てることも可能です。


固定のデータベースロールには db_owner、db_securityadmin、db_accessadmin、db_backupoperator、db_ddladmin、db_datawriter、db_datareader、db_denydatawriter、db_denydatareader があります。

データベースに対して何でもできるのが db_owner、SELECT できるのが db_datareader、INSERT/UPDATE/DELETE ができるのが db_datawriter です。


SQL Server サーバー・データベースロールとその設定方法 2

[Reference] Database-Level Roles - SQL Server | Microsoft Docs

SSMS からユーザーにサーバーロールを設定する方法

SQL Server Management Studio から、ログインユーザーにサーバーロールを設定する方法をご説明します。

オブジェクトエクスプローラーの [セキュリティ] > [ログイン] で右クリックして [新しいログイン] を選択します。

SQL Server サーバー・データベースロールとその設定方法 3


新規ログイン作成の画面が表示されるので、左側で [サーバーロール] ページを選択します。

画面にサーバーロールの一覧が表示されるので、ここでログインユーザーにサーバーロールを設定できます。

SQL Server サーバー・データベースロールとその設定方法 4

既存のログインのサーバーロールを変更したい時は、ログインで右クリックしてプロパティを表示すると、同様にサーバーロールを選択するページがでてきます。


SSMS からユーザーにデータベースロールを設定する方法

SQL Server Management Studio から、データベースユーザーにデータベースロールを設定する方法をご紹介します。

新しいログインを生成時に同時に設定することができます。

オブジェクトエクスプローラーの [セキュリティ] > [ログイン] で右クリックして [新しいログイン] を選択します。

SQL Server サーバー・データベースロールとその設定方法 3


新規ログイン作成の画面が表示されるので、左側で [ユーザーマッピング] ページを選択します。

上のグリッドでユーザーをマップするデータベースを選択します。

そうすると、下にそのデータベースのデータベースロールが表示されるので、ここでデータベースユーザにデータベースロールを設定できます。

SQL Server サーバー・データベースロールとその設定方法 5


既存のデータベースユーザーのデータベースロールを変更したい時は、[データベース] > [セキュリティ] > [ユーザー]でユーザーを右クリックして [プロパティ] を選択します。

SQL Server サーバー・データベースロールとその設定方法 6


データベースユーザーのプロパティ画面が表示されるので、左側で [メンバーシップ] ページを選択します。

画面にデータベースロールの一覧が表示されるので、ここでデータベースユーザーににデータベースロールを設定できます。

SQL Server サーバー・データベースロールとその設定方法 7


固定データベースロールに EXECUTE に対する権限を与えるものがないので、ストアドプロシージャやファンクションなどの実行を許可したい時はユーザーに対して GRANT するか、 EXECUTE を許可したデータベースロールを作って、ユーザーに設定しても良いと思います。

GRANT EXECUTE TO [ユーザー名]
CREATE ROLE [execute用ロール名];
GRANT EXECUTE TO [execute用ロール名];


以上、固定サーバーレベルのロールと、データベースレベルのロールと設定方法についてご説明しました。

© 2010-2024 SQL Server 入門