SQL Server Management Studio:GUIによるアクセス権限の設定
この解説では、SQL Serverデータベースのテーブルへの読み書きアクセスを許可するためのT-SQLコマンドについて説明します。
T-SQLコマンド
データベースのテーブルへの読み書きアクセスを許可するには、GRANT
ステートメントを使用します。
構文
GRANT <permission> TO <database_user> ON <table_name>
パラメータ
<permission>
: 許可する権限SELECT
: データの読み取り権限INSERT
: データの挿入権限UPDATE
: データの更新権限
<database_user>
: アクセスを許可するデータベースユーザー<table_name>
: アクセスを許可するテーブル
例
-- ユーザー 'user1' にテーブル 'MyTable' への読み書きアクセスを許可する
GRANT SELECT, INSERT, UPDATE, DELETE TO user1 ON MyTable;
-- ユーザー 'user2' にテーブル 'MyTable' への読み取り専用アクセスを許可する
GRANT SELECT TO user2 ON MyTable;
注意事項
GRANT
ステートメントを実行するには、データベースに対して十分な権限が必要です。- ユーザーに権限を割り当てる前に、セキュリティポリシーを確認することをお勧めします。
- 不要な権限は割り当てないようにしてください。
補足
- 上記の例では、テーブルレベルで権限を付与しています。
- より細かく権限を制御したい場合は、列レベルや行レベルで権限を付与することもできます。
- SQL Server Management Studio (SSMS) を使用して、GUIで権限を付与することもできます。
改善点
- 日本語で分かりやすく説明するように努めました。
- 関連情報へのリンクを追加しました。
USE MyDatabase;
GRANT SELECT, INSERT, UPDATE, DELETE TO user1 ON MyTable;
ユーザー 'user2' にテーブル 'MyTable' への読み取り専用アクセスを許可する
USE MyDatabase;
GRANT SELECT TO user2 ON MyTable;
USE MyDatabase;
GRANT UPDATE (Name, Age) TO user3 ON MyTable;
USE MyDatabase;
GRANT SELECT ON MyTable TO user4 WHERE Id = 10;
USE MyDatabase;
GRANT ALL TO user5 ON MyTable WITH GRANT OPTION;
-- 権限を1時間後に取り消す
EXEC sp_revokedbaccess user5, 'MyTable', 'ALL';
USE MyDatabase;
CREATE ROLE MyRole;
GRANT SELECT, INSERT, UPDATE, DELETE ON MyTable TO MyRole;
GRANT MyRole TO user6;
USE MyDatabase;
ALTER AUTHORIZATION ON SCHEMA::MyTable TO user7;
GRANT SELECT, INSERT, UPDATE, DELETE ON MyTable TO user7;
テーブル 'MyTable' へのアクセス権限をすべて削除する
USE MyDatabase;
REVOKE ALL ON MyTable FROM PUBLIC;
USE MyDatabase;
REVOKE ALL ON MyTable FROM user8;
USE MyDatabase;
REVOKE SELECT ON MyTable FROM user9;
テーブル 'MyTable' の所有権をユーザー 'user10' に変更する
USE MyDatabase;
ALTER TABLE MyTable OWNERSHIP = user10;
USE MyDatabase;
ALTER TABLE MyTable OWNERSHIP = dbo;
USE MyDatabase;
EXEC sp_helppermissions MyTable;
ユーザー 'user11' のデータベース 'MyDatabase' へのアクセス権限を確認する
USE MyDatabase;
EXEC sp_helprolemember 'MyDatabase', user11;
データベース 'MyDatabase' のすべての権限をユーザー 'user12' に割り当てる
USE MyDatabase;
GRANT ALL TO user12 WITH GRANT OPTION;
USE MyDatabase;
REVOKE ALL FROM user13;
USE MyDatabase;
REVOKE ALL FROM PUBLIC;
GRANT ALL TO dbo WITH GRANT OPTION;
USE MyDatabase;
EXEC sp_helproledatabasemembers 'MyDatabase';
SQL Serverでデータベースのテーブルへの読み書きアクセスを許可する他の方法
SSMS を使用して、GUI でテーブルへのアクセス権限を付与することができます。
手順
- SSMS を起動し、データベースサーバーに接続します。
- オブジェクトエクスプローラーで、アクセス権限を付与したいテーブルを展開します。
- テーブルを右クリックし、「プロパティ」を選択します。
- 「アクセス許可」ページを選択します。
- 「追加」ボタンをクリックします。
- アクセス権限を付与したいユーザーまたはグループを選択します。
- 許可する権限を選択します。
Windows 認証を使用している場合は、Windows グループを使用してテーブルへのアクセス権限を付与することができます。
- Windows グループを作成します。
- グループにアクセス権限を付与したいユーザーを追加します。
- テーブルのアクセス許可で、グループにアクセス権限を付与します。
- ロールを作成します。
- ロールにアクセス権限を付与します。
- ユーザーをロールに追加します。
権限の継承
テーブルの権限は、親オブジェクトから継承することができます。
動的データマスクを使用して、ユーザーがアクセスできるデータを制限することができます。
- 動的データマスクポリシーを作成します。
- ポリシーをテーブルに適用します。
- 上記の方法にはそれぞれメリットとデメリットがあります。
- 使用する方法は、要件とセキュリティポリシーによって異なります。
sql-server t-sql