無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

5.6. 権限

オブジェクトが作成されると、所有者が割り当てられます。通常、所有者は作成する文を実行したロールです。ほとんどの種類のオブジェクトについて、初期状態では所有者(またはスーパーユーザ)だけがそのオブジェクトを使用できます。 他のユーザがこのオブジェクトを使用するには、 権限 が付与されていなければなりません。

権限にはいくつかの種類があります。 すなわち SELECT INSERT UPDATE DELETE TRUNCATE REFERENCES TRIGGER CREATE CONNECT TEMPORARY EXECUTE USAGE です。 特定のオブジェクトに適用する特権は、オブジェクトの型(テーブル、関数など)により変わります。 PostgreSQL がサポートする様々な権限の詳細については GRANT リファレンスページを参照してください。 以降の節および章でもこれらの権限の使用方法についての説明があります。

オブジェクトの変更や削除の権限は常に所有者のみに与えられるものです。

ALTER TABLE のような適切な種類の ALTER コマンドにより、あるオブジェクトに新しい所有者を割り当てることができます。スーパーユーザはいつでも所有者を変更できます。通常のロールは、対象オブジェクトの現在の所有者(または所有者ロールのメンバー)であり、かつ新しい所有者ロールのメンバーである場合に限り、所有者を変更できます。

権限を割り当てるには、 GRANT コマンドを使用します。 例えば、 joe という既存のユーザと accounts という既存のテーブルがある場合、このテーブルを更新する権限を付与するには以下のようにします。

GRANT UPDATE ON accounts TO joe;

特定の権限名を指定する代わりに ALL を指定すると、その種類のオブジェクトに関連する全ての権限が付与されます。

システム内の全てのユーザに権限を付与するには、特別な "ユーザ" 名である PUBLIC を使用することができます。 また、 "グループ" ロールを使用すれば、データベース内に多くのユーザが存在する場合に権限の管理が簡単になります。 詳細は 第20章 を参照してください。

権限を取り消す(revoke)には、それに相応しい名前の REVOKE コマンドを使用します。

REVOKE ALL ON accounts FROM PUBLIC;

オブジェクト所有者の特別の権限( DROP GRANT REVOKE を行う権限など)は、所有者であることを前提とした権限なので、付与したり取り消したりすることはできません。 しかしオブジェクト所有者は、テーブルを他のユーザ同様に自分自身に対しても読み取り専用にしたい時などに、自分の通常の権限を取り消すことができます。

普通はオブジェクトの所有者(またはスーパーユーザ)は、オブジェクトにおける権限の付与や剥奪ができます。 しかし "with grant option" を付けることで、権限を与えられたユーザが、所有者と同様に他のユーザに権限を付与することが可能になります。 もし後になってグラントオプションが剥奪されると、剥奪されたユーザから(直接もしくは権限付与の連鎖により)権限を与えられていたユーザはすべて、その権限が剥奪されます。 詳細は、 GRANT REVOKE を参照してください。


powered by SEO.CUG.NET