REVOKE <権限> FROM APPLICATION ROLE¶
アプリケーションロールから、セキュリティ保護可能なスキーマレベルオブジェクトに対する1つ以上のアクセス権限を取り消します。取り消すことができる権限はオブジェクト固有です。
ロールとセキュリティ保護可能なオブジェクトの詳細については、 アクセス制御の概要 をご参照ください。
構文¶
アカウントロール:
REVOKE [ GRANT OPTION FOR ]
{
| { schemaPrivileges | ALL [ PRIVILEGES ] } ON { SCHEMA <schema_name> | ALL SCHEMAS IN DATABASE <db_name> }
| { schemaPrivileges | ALL [ PRIVILEGES ] } ON { FUTURE SCHEMAS IN DATABASE <db_name> }
| { schemaObjectPrivileges | ALL [ PRIVILEGES ] } ON { <object_type> <object_name> | ALL <object_type_plural> IN SCHEMA <schema_name> }
| { schemaObjectPrivileges | ALL [ PRIVILEGES ] } ON FUTURE <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> }
}
FROM APPLICATION ROLE <name> [ RESTRICT | CASCADE ]
条件:
schemaObjectPrivileges ::=
-- For ALERT
{ MONITOR | OPERATE } [ , ... ]
-- For DYNAMIC TABLE
OPERATE, SELECT [ , ...]
-- For EVENT TABLE
{ INSERT | SELECT } [ , ... ]
-- For FILE FORMAT, FUNCTION (UDF or external function), PROCEDURE, SECRET, or SEQUENCE
USAGE [ , ... ]
-- For PIPE
{ APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
-- For { MASKING | PACKAGES | PASSWORD | ROW ACCESS | SESSION } POLICY or TAG
APPLY [ , ... ]
-- For SECRET
READ, USAGE [ , ... ]
-- For external STAGE
USAGE [ , ... ]
-- For internal STAGE
READ [ , WRITE ] [ , ... ]
-- For STREAM
SELECT [ , ... ]
-- For TABLE
{ APPLYBUDGET | DELETE | EVOLVE SCHEMA | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
-- For TAG
READ
-- For TASK
{ APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
-- For VIEW
{ REFERENCES | SELECT } [ , ... ]
-- For MATERIALIZED VIEW
{ APPLYBUDGET | REFERENCES | SELECT } [ , ... ]
各オブジェクトタイプでサポートされている権限の詳細については、 アクセス制御権限 をご参照ください。
必須パラメーター¶
object_name
権限が付与されるオブジェクトの識別子を指定します。
object_type
スキーマレベルオブジェクトの型を指定します。
ALERT
DYNAMIC TABLE
EVENT TABLE
EXTERNAL TABLE
FILE FORMAT
FUNCTION
MASKING POLICY
MATERIALIZED VIEW
NETWORK RULE
PACKAGES POLICY
PASSWORD POLICY
PIPE
PROCEDURE
ROW ACCESS POLICY
SECRET
SESSION POLICY
SEQUENCE
STAGE
STREAM
TABLE
TAG
TASK
VIEW
object_type_plural
object_type
の複数形(例:TABLES
、VIEWS
)。パイプへの一括付与は許可されていないことに注意してください。
name
受信者アプリケーションロール(つまり、権限が付与されるロール)の識別子を指定します。
オプションのパラメーター¶
FUTURE
指定した場合、既存のオブジェクトではなく、指定したタイプの新しい(将来の)スキーマオブジェクト(テーブルやビューなど)に付与された権限のみを削除します。既存のオブジェクトに付与された権限はすべて保持されることに注意してください。
RESTRICT | CASCADE
指定した場合、権限が別のアプリケーションロールに再付与されたかどうかに基づいて、権限の取り消し操作が成功するか失敗するかを決定します。
RESTRICT
取り消される権限が別のアプリケーションロールに再付与された場合、 REVOKE コマンドは失敗します。
CASCADE
取り消される権限が再度付与された場合、 REVOKE コマンドはこれらの依存する付与を再帰的に取り消します。オブジェクトに対する同じ権限が別の付与者によってターゲットロールに付与されている場合(並列付与)、その付与は影響を受けず、ターゲットロールはその権限を保持します。
デフォルト:
RESTRICT
セキュリティ要件¶
- 個々のオブジェクトに対する権限の取り消し:
次の基準のいずれかを満たす アクティブなロール、または より上位のロール を使用して、オブジェクトに対する権限を他のアプリケーションロールから取り消すことができます。
ロールは、 SHOW GRANTS 出力の GRANTED_BY 列で権限の 付与者 として識別されます。
指定されたオブジェクトに対して権限付与の複数のインスタンスがある場合は、アクティブな付与者ロールによって付与されたインスタンスのみが取り消されます。
ロールには MANAGE GRANTS グローバル権限があります。
指定されたオブジェクトに対して権限付与の複数のインスタンスがある場合は、 すべて のインスタンスが取り消されます。
SECURITYADMIN 以上のシステムロールのみがデフォルトで MANAGE GRANTS 権限を持っていることに注意してください。ただし、この権限はカスタムロールに付与できます。
以下のロールは、管理アクセススキーマ(つまり、 CREATESCHEMA ... WITH MANAGED ACCESS 構文を使用して作成されたスキーマ)内のオブジェクトから権限を取り消すことができます。
アプリケーションロール。このロールはスキーマ所有者(つまり、スキーマに対して OWNERSHIP 権限を持つ)であるため。
グローバル MANAGE GRANTS 権限を持つロール。
- 指定された型の将来のオブジェクトに対する付与の取り消し:
管理アクセススキーマでは、アプリケーションロールまたは MANAGE GRANTS グローバル権限を持つロールのいずれかが、スキーマ内の将来のオブジェクトに対する権限を取り消すことができます。
標準スキーマでは、スキーマにある将来のオブジェクトの権限を取り消すには、 MANAGE GRANTS グローバル権限が必要です。
使用上の注意¶
権限は、異なる付与者によってアプリケーションロールに複数回付与できます。REVOKE <権限> ステートメントは、アクティブなロールまたは階層内の下位のロールが付与者である付与のみを取り消します。他の付与者による指定された権限の追加の付与は無視されます。
また、権限が取り消されなくても、 REVOKE <権限> ステートメントは成功します。REVOKE <権限> ステートメントは、指定された権限に依存する付与があり、ステートメントで CASCADE 句が省略されている場合にのみエラーを返します。
個々の UDF に対する権限を取り消す場合は、
udf_name ( [ arg_data_type , ... ] )
の形式で UDF の引数(ある場合)のデータ型を指定する必要があります。これは、Snowflakeは引数データ型を使用して、スキーマ内で同じ名前を持つ UDFs を解決するため必要です。詳細については、 ユーザー定義関数の概要 をご参照ください。個々のストアドプロシージャに対する権限を取り消す場合は、
procedure_name ( [ arg_data_type , ... ] )
の形式でプロシージャの引数のデータ型を指定する必要があります。Snowflakeでは、引数データ型を使用してスキーマ内で同じ名前を持つストアドプロシージャを解決するためにこれが必要です。将来の付与: 将来の付与を取り消すと、指定された型の 将来 のオブジェクトに対する権限の付与のみがドロップされます。既存のオブジェクトに付与された権限は保持されます。
詳細については、 管理アクセススキーマ をご参照ください。
例¶
アプリケーションロールからビューに対する SELECT 権限を取り消します。
REVOKE SELECT ON VIEW data.views.credit_usage
FROM APPLICATION ROLE app_snowflake_credits;