ALTER ROLE

ALTER ROLEはユーザー・ロール(役割)を変更するSQL文である。

Oracleデータベースにおいて、ロールはユーザー・グループの役割を果たす。ロールに権限を付与することができ、そのロールをユーザに付与することができる。

PostgreSQLにおけるロールはユーザとユーザー・グループの両方にあたるので、Oracleデータベースのロールとは意味合いが異なる。

パスワードの変更

ALTER ROLE role IDENTIFIED BY password
role

パスワードを変更するロールの名前を指定する。

password

変更後のパスワードを指定する。パスワードを引用符で括る必要はない。

ロールのパスワードを変更する例を次に示す。

ALTER ROLE manager IDENTIFIED BY mellon

パスワードの削除

ロールに設定されたパスワードを削除すると、パスワードを入力しなくてもロールを使えるようになる。

ALTER ROLE administrator NOT IDENTIFIED

外部ロールへ変更

外部ロールへ変更する。外部ロールを使用するには、OSなどの外部サービスによる認可が必要になる。

ALTER ROLE chairman IDENTIFIED EXTERNALLY

グローバル・ロールへ変更

グローバル・ロールへ変更する。グローバル・ロールを使用するには、エンタープライズ・ディレクトリ・サービスによる認可が必要になる。

ALTER ROLE president IDENTIFIED GLOBALLY

アプリケーション・ロールへ変更

アプリケーション・ロールとは、PL/SQL パッケージによって有効にできるロールである。

アプリケーション・ロールでは、ロール自体に付与された権限に加えて、アプリケーション・アクセスにセキュリティの追加レイヤを作成できる。

アプリケーション・ロールを使用すると、パスワードがアプリケーションのソースコードに埋め込まれたり、表に格納されないため、セキュリティが強化される。

ALTER ROLE director IDENTIFIED USING humanresources.admin

権限

ロールを変更するには、ALTER ANY ROLEシステム権限が必要である。

ただし、ADMIN OPTION が付いたロールを付与されていれば、誰でもそのロールを変更できる。

自分に付与されたシステム権限を確認するには、USER_SYS_PRIVS データ・ディクショナリ・ビューを問い合わせる。

SELECT PRIVILEGE FROM USER_SYS_PRIVS

ロールを付与するときに、ADMIN OPTION を付けられる。

GRANT manager TO tsuka WITH ADMIN OPTION

付与されたロールに ADMIN OPTION が付いているかどうかは、USER_ROLE_PRIVS データ・ディクショナリ・ビューを問い合わせる。

SQL> SELECT GRANTED_ROLE, ADMIN_OPTION FROM USER_ROLE_PRIVS;

GRANTED_ROLE ADMIN_OPTION
------------ ------------
MANAGER      YES
CHARIMAN     NO

SQL