REVOKE <権限> ... FROM APPLICATION¶
アプリケーションから、セキュリティ保護可能なスキーマレベルオブジェクトに対する1つ以上のアクセス権限を取り消します。取り消すことができる権限はオブジェクト固有です。
ロールとセキュリティ保護可能なオブジェクトの詳細については、 アクセス制御の概要 をご参照ください。
- バリエーション:
構文¶
REVOKE { { globalPrivileges } ON ACCOUNT
| { accountObjectPrivileges | ALL [ PRIVILEGES ] } ON { USER | RESOURCE MONITOR | WAREHOUSE | COMPUTE POOL | DATABASE | INTEGRATION | CONNECTION | FAILOVER GROUP | REPLICATION GROUP | EXTERNAL VOLUME } <object_name>
| { schemaPrivileges | ALL [ PRIVILEGES ] } ON { SCHEMA <schema_name> | ALL SCHEMAS IN DATABASE <db_name> }
| { schemaObjectPrivileges | ALL [ PRIVILEGES ] } ON { <object_type> <object_name> | ALL <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> }
}
FROM APPLICATION <name>
条件:
globalPrivileges ::=
{
CREATE {
COMPUTE POOL | DATABASE | WAREHOUSE
}
| BIND SERVICE ENDPOINT
| EXECUTE MANAGED TASK
| MANAGE WAREHOUSES
| READ SESSION
}
[ , ... ]
accountObjectPrivileges ::=
-- For COMPUTE POOL
{ MODIFY | MONITOR | OPERATE | USAGE } [ , ... ]
-- For CONNECTION
{ FAILOVER } [ , ... ]
-- For DATABASE
{ APPLYBUDGET | CREATE { DATABASE ROLE | SCHEMA }
| IMPORTED PRIVILEGES | MODIFY | MONITOR | USAGE } [ , ... ]
-- For EXTERNAL VOLUME
{ USAGE } [ , ... ]
-- For FAILOVER GROUP
{ FAILOVER | MODIFY | MONITOR | REPLICATE } [ , ... ]
-- For INTEGRATION
{ USAGE | USE_ANY_ROLE } [ , ... ]
-- For REPLICATION GROUP
{ MODIFY | MONITOR | REPLICATE } [ , ... ]
-- For RESOURCE MONITOR
{ MODIFY | MONITOR } [ , ... ]
-- For USER
{ MONITOR } [ , ... ]
-- For WAREHOUSE
{ APPLYBUDGET | MODIFY | MONITOR | USAGE | OPERATE } [ , ... ]
schemaPrivileges ::=
ADD SEARCH OPTIMIZATION
| CREATE {
ALERT | EXTERNAL TABLE | FILE FORMAT | FUNCTION
| IMAGE REPOSITORY | MATERIALIZED VIEW | PIPE | PROCEDURE
| { AGGREGATION | MASKING | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY
| SECRET | SEMANTIC VIEW | SEQUENCE | SERVICE | SNAPSHOT | STAGE | STREAM
| TAG | TABLE | TASK | VIEW
}
| MODIFY | MONITOR | USAGE
[ , ... ]
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, SEQUENCE, or SNAPSHOT
USAGE [ , ... ]
-- For IMAGE REPOSITORY
{ READ, WRITE } [ , ... ]
-- For PIPE
{ APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
-- For { MASKING | PACKAGES | PASSWORD | ROW ACCESS | SESSION } POLICY or TAG
APPLY [ , ... ]
-- For SECRET
READ, USAGE [ , ... ]
-- For SEMANTIC VIEW
REFERENCES [ , ... ]
-- For SERVICE
{ MONITOR | OPERATE } [ , ... ]
-- 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スキーマレベルオブジェクトの型を指定します。
ALERTDYNAMIC TABLEEVENT TABLEEXTERNAL TABLEFILE FORMATFUNCTIONMASKING POLICYMATERIALIZED VIEWNETWORK RULEPACKAGES POLICYPASSWORD POLICYPIPEPROCEDUREROW ACCESS POLICYSECRETSEMANTIC VIEWSESSION POLICYSEQUENCESTAGESTREAMTABLETAGTASKVIEW
object_type_pluralobject_typeの複数形(例:TABLES、VIEWS)。パイプへの一括付与は許可されていません。
name受信者アプリケーション(権限が付与されるロール)の識別子を指定します。
セキュリティ要件¶
- 個々のオブジェクトに対する権限の取り消し:
次の基準のいずれかを満たす アクティブなロール、または より上位のロール を使用して、オブジェクトに対する権限を他のアプリケーションロールから取り消すことができます。
ロールは、 SHOW GRANTS 出力の GRANTED_BY 列で権限の 付与者 として識別されます。
指定されたオブジェクトに対して権限付与の複数のインスタンスがある場合は、アクティブな付与者ロールによって付与されたインスタンスのみが取り消されます。
ロールには MANAGE GRANTS グローバル権限があります。
指定されたオブジェクトに対して権限付与の複数のインスタンスがある場合は、 すべて のインスタンスが取り消されます。
SECURITYADMIN 以上のシステムロールのみがデフォルトで MANAGE GRANTS 権限を持っていることに注意してください。ただし、この権限はカスタムロールに付与できます。
管理アクセススキーマ(CREATE SCHEMA ... WITH MANAGED ACCESS 構文を使用して作成されたスキーマ)では、スキーマの所有者(つまり、スキーマに対する OWNERSHIP 権限を持つロール)または MANAGE GRANTS グローバル権限を持つロール、またはそれ以上のロールのみが、スキーマ内にあるオブジェクトの権限を取り消すことができます。
使用上の注意¶
どのクラスに対しても、権限を直接付与したり、取り消したりすることはできません。しかし、クラスのインスタンスを作成し、アカウントロールから インスタンスロール を取り消すことはできます。ロールがクラスのインスタンスを作成できないように、スキーマの CREATE <クラス名> 権限を取り消します。
権限は、異なる付与者によってロールに複数回付与できます。REVOKE <権限> ステートメントは、アクティブなロールまたは階層内の下位のロールが付与者である付与のみを取り消します。他の付与者による指定された権限の追加の付与は無視されます。
また、権限が取り消されなくても、 REVOKE <権限> ステートメントは成功することに注意してください。REVOKE <権限> ステートメントは、指定された権限に依存する付与があり、ステートメントで CASCADE 句が省略されている場合にのみエラーを返します。
単一の GRANT ステートメントで同じオブジェクトタイプに複数の権限を指定できます(各権限をコンマで区切る)か、特別な
ALL [ PRIVILEGES ]キーワードを使用して、指定したオブジェクトタイプにすべての適用可能な権限を付与できます。ただし、 GRANT コマンドを実行するロールが保持および付与できる権限のみが実際にターゲットロールに付与されることに注意してください。付与できなかった権限については、警告メッセージが返されます。タグにこのキーワードを指定することはできません。
データベースの場合、 IMPORTED PRIVILEGES 権限は共有データベース(共有から作成されたデータベース)にのみ適用されます。詳細については、 インポートされたデータの消費 をご参照ください。
スキーマおよびスキーマ内のオブジェクトには、コンテナー(データベースまたはスキーマ)内にある同じ型のオブジェクトすべてに対する権限を付与するオプションが提供されます。これは便利なオプションです。内部的には、コマンドは各オブジェクト上で一連の個別の GRANT コマンドに展開されます。コンテナ内に現在存在するオブジェクトのみが影響を受けます。
ただし、Snowflakeモデルでは、権限の一括付与は推奨されていないことに注意してください。代わりに、共有ロールを作成し、そのロールを使用して、ロールを付与されたすべてのユーザーが自動的にアクセスできるオブジェクトを作成することをお勧めします。
ステージの場合:
USAGE 外部ステージにのみ適用されます。
READ | WRITE は内部ステージにのみ適用されます。さらに、内部ステージで WRITE 権限を付与するには、まずステージで READ 権限を付与する必要があります。
外部ステージと内部ステージの詳細については、 CREATE STAGE をご参照ください。
個々の 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 app_snowflake_credits;