データ制御言語(DCL)

GRANT、REVOKEおよびDENYデータベース権限

データ制御言語(DCL)は構造化照会言語 (SQL)のサブセットであり、データベース管理者はリレーショナル・データベースへのセキュリティー・アクセスを構成できます。 データベースオブジェクトの追加および削除に使用されるデータ定義言語(DDL)、およびデータベースの内容の取得、挿入、および変更に使用されるデータ操作言語(DML)を補完します。

DCLは、GRANT、REVOKE、およびDENYの3つのコマンドのみで構成されているため、 SQLサブセットの中で最もシンプルです。 これらの3つのコマンドを組み合わせることで、管理者はデータベース権限をきめ細かく設定したり削除したりすることができます。

GRANTコマンドによる権限の追加

管理者は、GRANTコマンドを使用して、 データベースユーザーに新しい権限を追加することができます 。 それは以下のように定義された非常に単純な構文を持っています:

GRANT [権限] ON [オブジェクト] TO [ユーザー] [WITH GRANT OPTION]

このコマンドで提供できる各パラメータの概要は次のとおりです。

たとえば、HRというデータベースのemployees表から情報を取り出す機能を、ユーザーJoeに付与することを想定します。 次のSQLコマンドを使用できます。

HR.employees TO Joeの付与を許可する

これでJoeはemployees表から情報を取り出すことができます。 ただし、GRANT文にWITH GRANT OPTION句を含めなかったため、他のユーザーにその表から情報を取得する権限を与えることはできません。

データベースアクセスの取り消し

REVOKEコマンドは、そのようなアクセスが以前に許可されたユーザーからデータベース・アクセスを除去するために使用されます。 このコマンドの構文は次のように定義されています。

REVOKE [GRANT OPTION FOR] [許可] ON [オブジェクト] FROM [ユーザー] [CASCADE]

REVOKEコマンドのパラメータの概要を次に示します。

たとえば、次のコマンドは、前の例でJoeに与えられたアクセス権を取り消します。

ジョーからHR.employeesのSELECTを取り消す

明示的にデータベースアクセスを拒否する

DENYコマンドは、ユーザーが特定の許可を受け取らないように明示的に指定するために使用されます。 これは、ユーザーが権限を付与されているロールまたはグループのメンバーで、そのユーザーが例外を作成してアクセス許可を継承しないようにする場合に役立ちます。 このコマンドの構文は次のとおりです。

DENY [許可] ON [オブジェクト] TO [ユーザー]

DENYコマンドのパラメーターは、GRANTコマンドで使用されるパラメーターと同じです。

たとえば、Matthewがemployeesテーブルから情報を削除する機能を受け取らないようにするには、次のコマンドを発行します。

HR.employeesにMatthewを削除しないでください