データベース権限のデータ制御言語(DCL)

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

DCLは、GRANT、REVOKE、およびDENYの3つのコマンドのみで構成されているため、SQLサブセットの中で最も単純です。 これらの3つのコマンドを組み合わせると、管理者はデータベースのアクセス許可をきめ細かく設定および削除できる柔軟性が得られます。

GRANTコマンドを使用した権限の追加

GRANTコマンドは、データベースユーザーに新しい権限を追加します。 構文は非常に単純で、次のように定義されています。

GRANT [特権]
ON [オブジェクト]
TO [ユーザー]
[グラントオプション付き]

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

  • 特権 —キーワードALL(さまざまなアクセス許可を付与するため)または特定のデータベースアクセス許可またはアクセス許可のセットのいずれかです。 例には、CREATE DATABASE、SELECT、INSERT、UPDATE、DELETE、EXECUTE、CREATEVIEWが含まれます。
  • 物体 —任意のデータベースオブジェクトにすることができます。 有効な特権オプションは、この句に含めるデータベースオブジェクトのタイプによって異なります。 通常、オブジェクトはデータベース、関数、 ストアドプロシージャ、テーブルまたはビュー。
  • ユーザー —任意のデータベースユーザーにすることができます。 ロールベースのデータベースセキュリティを利用する場合は、この句でユーザーの代わりにロールを使用することもできます。
  • オプションを含める場合 グラントオプション付き GRANTコマンドの最後にある句を使用すると、指定したユーザーにアクセス許可を付与するだけではありません。 SQLステートメントで定義されていますが、ユーザーに同じものをさらに付与する権限も与えます へのアクセス許可 他の データベースユーザー。 このため、この句は注意して使用してください。

たとえば、ユーザーに許可したいとします ジョー から情報を取得する機能 社員 のテーブル データベース と呼ばれる HR. 次のSQLコマンドを使用します。

GRANT SELECT
HR.employeesについて
ジョーに。

Joeは、従業員のテーブルから情報を取得できます。 ただし、DCLスクリプトにWITH GRANT OPTION句が含まれていなかったため、他のユーザーにそのテーブルから情報を取得する権限を付与することはできません。

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

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

[GRANT OPTION FOR] [許可]を取り消す
ON [オブジェクト]
FROM [ユーザー]
[カスケード]

REVOKEコマンドのパラメーターの概要は次のとおりです。

  • 許可 —識別されたユーザーから削除するデータベースのアクセス許可を指定します。 このコマンドは、識別された許可に対して以前に行われたGRANTアサーションとDENYアサーションの両方を取り消します。
  • 物体 —任意のデータベースオブジェクトにすることができます。 有効な特権オプションは、この句に含めるデータベースオブジェクトのタイプによって異なります。 通常、オブジェクトはデータベース、関数、ストアドプロシージャ、テーブル、またはビューのいずれかになります。
  • ユーザー —任意のデータベースユーザーにすることができます。 ロールベースのデータベースセキュリティを利用する場合は、この句でユーザーの代わりにロールを使用することもできます。
  • NS のオプションを付与 句は、指定されたユーザーが指定された権限を他のユーザーに付与する機能を削除します。 あなたが含める場合 のオプションを付与 REVOKEステートメントの句では、プライマリ権限は取り消されません。 この条項は、付与能力のみを取り消します。
  • NS カスケード オプションは、指定されたユーザーがアクセス許可を付与したすべてのユーザーから指定されたアクセス許可も取り消します。

次のコマンドは、前の例でJoeに付与されたアクセス許可を取り消します。

SELECTを取り消す
HR.employeesについて
ジョーから。

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

DENYコマンドは、ユーザーが特定の権限を受け取らないように明示的に禁止します。 この機能は、ユーザーが権限を付与されたロールまたはグループのメンバーであり、例外を作成してその個々のユーザーが権限を継承しないようにする場合に役立ちます。 このコマンドの構文は次のとおりです。

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

DENYコマンドのパラメーターは、GRANTコマンドに使用されるパラメーターと同じです。 たとえば、Matthewが従業員のテーブルから情報を削除する機能を受け取らないようにする場合は、次のコマンドを発行します。

削除を拒否
HR.employeesについて
マシューに。