依赖于策略的对象和原则 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

依赖于策略的对象和原则

为了为应用程序提供安全性并防止策略对象过时或失效,Amazon Redshift 不允许删除或更改 RLS 策略引用的对象。

以下示例说明了如何跟踪架构依赖关系。

-- The CREATE and ATTACH policy statements for `policy_events` references some -- target and lookup tables. -- Target tables are tickit_event_redshift and target_schema.target_event_table. -- Lookup table is tickit_sales_redshift. -- Policy `policy_events` has following dependencies: -- table tickit_sales_redshift column eventid, qtysold -- table tickit_event_redshift column eventid -- table target_event_table column eventid -- schema public and target_schema CREATE RLS POLICY policy_events WITH (eventid INTEGER) USING ( eventid IN (SELECT eventid FROM tickit_sales_redshift WHERE qtysold <3) ); ATTACH RLS POLICY policy_events ON tickit_event_redshift TO ROLE analyst; ATTACH RLS POLICY policy_events ON target_schema.target_event_table TO ROLE consumer;

下面列出了 Amazon Redshift 针对 RLS 策略跟踪的架构对象依赖关系。

  • 在跟踪目标表的架构对象依赖关系时,Amazon Redshift 将遵循以下规则:

    • 当您删除目标表时,Amazon Redshift 会将策略与关系、用户、角色或公共分离。

    • 当您重命名目标表名称时,对附加的策略没有任何影响。

    • 如果您首先删除或分离策略,您只能删除策略定义中引用的目标表的列。在指定 CASCADE 选项时,这也将适用。您可以删除目标表中的其他列。

    • 您无法重命名目标表的引用列。要重命名引用列,请先分离策略。在指定 CASCADE 选项时,这也将适用。

    • 即便指定了 CASCADE 选项,您也无法更改引用列的类型。

  • 在跟踪查找表的架构对象依赖关系时,Amazon Redshift 将遵循以下规则:

    • 您无法删除查找表。要删除查找表,请先删除引用该查找表的策略。

    • 您无法重命名查找表。要重命名查找表,请先删除引用该查找表的策略。在指定 CASCADE 选项时,这也将适用。

    • 您无法删除策略定义中使用的查找表列。要删除策略定义中使用的查找表列,请先删除引用该查找表的策略。当在 ALTER TABLE DROP COLUMN 语句中指定了 CASCADE 选项时,此规则也适用。您可以删除查找表中的其他列。

    • 您无法重命名查找表的引用列。要重命名引用列,请先删除引用该查找表的策略。在指定 CASCADE 选项时,这也将适用。

    • 您无法更改引用列的类型。

  • 在删除用户或角色时,Amazon Redshift 将自动分离附加到该用户或角色的所有策略。

  • 当您在 DROP SCHEMA 语句中使用 CASCADE 选项时,Amazon Redshift 还会删除架构中的关系。它还会删除依赖于已删除架构中的关系的任何其他架构中的关系。对于作为策略中查找表的关系,Amazon Redshift 将使 DROP SCHEMA DDL 失败。对于 DROP SCHEMA 语句删除的任何关系,Amazon Redshift 将分离附加到这些关系的所有策略。

  • 当您同时删除策略时,您只能删除查找函数(在策略定义中引用的函数)。在指定 CASCADE 选项时,这也将适用。

  • 在将策略附加到表时,Amazon Redshift 会检查此表是否是不同策略中的查找表。如果属于这种情况,Amazon Redshift 将不允许将策略附加到此表。

  • 在创建 RLS 策略时,Amazon Redshift 会检查此表是否是任何其他 RLS 策略的目标表。如果属于这种情况,Amazon Redshift 将不允许在此表上创建策略。