SHOW GRANTS:関数およびプロシージャに対する付与の出力の変更(保留中)¶
SHOW GRANTS コマンドの出力では、名前列の値は、関数とプロシージャのために変更されます。
- 変更前:
name列には、引数の名前と型、および戻り型が含まれます。たとえば、次の関数の場合
CREATE FUNCTION area_of_circle(radius FLOAT) RETURNS FLOAT ...
名前列の値は次のとおりです。
MY_DB.MY_SCHEMA."AREA_OF_CIRCLE(RADIUS FLOAT):FLOAT"
次のプロシージャの場合
CREATE PROCEDURE output_message(message VARCHAR) RETURNS VARCHAR ...
名前列の値は次のとおりです。
MY_DB.MY_SCHEMA."OUTPUT_MESSAGE(MESSAGE VARCHAR):VARCHAR"
- 変更後:
name列には、引数の型のみが含まれます。たとえば、次の関数の場合
CREATE FUNCTION area_of_circle(radius FLOAT) RETURNS FLOAT ...
名前列の値は次のとおりです。
MY_DB.MY_SCHEMA.AREA_OF_CIRCLE(FLOAT)
次のプロシージャの場合
CREATE PROCEDURE output_message(message VARCHAR) RETURNS VARCHAR ...
名前列の値は次のとおりです。
MY_DB.MY_SCHEMA.OUTPUT_MESSAGE(VARCHAR)
この変更により、実行する GRANT および REVOKE ステートメントの名前列の値が使いやすくなります。
たとえば、 my_custom_role ロールに付与された関数とプロシージャの権限を取り消したいとします。SHOW GRANTS コマンドを実行できます。
SHOW GRANTS TO ROLE my_custom_role
->> SELECT "privilege", "granted_on", "name"
FROM $1
WHERE "granted_on" IN ('FUNCTION', 'PROCEDURE');
+-----------+------------+-----------------------------------------+
| privilege | granted_on | name |
|-----------+------------+-----------------------------------------|
| USAGE | FUNCTION | MY_DB.MY_SCHEMA.AREA_OF_CIRCLE(FLOAT) |
| USAGE | PROCEDURE | MY_DB.MY_SCHEMA.OUTPUT_MESSAGE(VARCHAR) |
+-----------+------------+-----------------------------------------+
その後、戻り値をコピーして REVOKE ステートメントに貼り付け、これらの権限を取り消すことができます。
REVOKE USAGE ON FUNCTION MY_DB.MY_SCHEMA.AREA_OF_CIRCLE(FLOAT) FROM ROLE my_custom_role;
REVOKE USAGE ON PROCEDURE MY_DB.MY_SCHEMA.OUTPUT_MESSAGE(VARCHAR) FROM ROLE my_custom_role;
参照:2190