CREATE-POLICY

Name

CREATE POLICY

Description

创建策略,包含以下几种:

  1. 创建安全策略(ROW POLICY),explain 可以查看改写后的 SQL。
  2. 创建数据迁移策略(STORAGE POLICY),用于冷热数据转换。

语法:

  1. ROW POLICY
  1. CREATE ROW POLICY test_row_policy_1 ON test.table1
  2. AS {RESTRICTIVE|PERMISSIVE} TO test USING (id in (1, 2));

参数说明:

  • filterType:RESTRICTIVE 将一组策略通过 AND 连接, PERMISSIVE 将一组策略通过 OR 连接
  • 配置多个策略首先合并 RESTRICTIVE 的策略,再添加 PERMISSIVE 的策略
  • RESTRICTIVE 和 PERMISSIVE 之间通过 AND 连接的
  • 不允许对 root 和 admin 用户创建
  1. STORAGE POLICY
  1. CREATE STORAGE POLICY test_storage_policy_1
  2. PROPERTIES ("key"="value", ...);

参数说明:

  • PROPERTIES中需要指定资源的类型:
    1. storage_resource:指定策略使用的storage resource名称。
    2. cooldown_datetime:热数据转为冷数据时间,不能与cooldown_ttl同时存在。
    3. cooldown_ttl:热数据持续时间。从数据分片生成时开始计算,经过指定时间后转为冷数据。支持的格式: 1d:1天 1h:1小时 50000: 50000秒

Example

  1. 创建一组行安全策略

    1. CREATE ROW POLICY test_row_policy_1 ON test.table1
    2. AS RESTRICTIVE TO test USING (c1 = 'a');
    1. CREATE ROW POLICY test_row_policy_2 ON test.table1
    2. AS RESTRICTIVE TO test USING (c2 = 'b');
    1. CREATE ROW POLICY test_row_policy_3 ON test.table1
    2. AS PERMISSIVE TO test USING (c3 = 'c');
    1. CREATE ROW POLICY test_row_policy_3 ON test.table1
    2. AS PERMISSIVE TO test USING (c4 = 'd');

    当我们执行对 table1 的查询时被改写后的 sql 为

    1. select * from (select * from table1 where c1 = 'a' and c2 = 'b' or c3 = 'c' or c4 = 'd')
  2. 创建数据迁移策略

    1. 指定数据冷却时间创建数据迁移策略
    1. CREATE STORAGE POLICY testPolicy
    2. PROPERTIES(
    3. "storage_resource" = "s3",
    4. "cooldown_datetime" = "2022-06-08 00:00:00"
    5. );
    1. 指定热数据持续时间创建数据迁移策略
    1. CREATE STORAGE POLICY testPolicy
    2. PROPERTIES(
    3. "storage_resource" = "s3",
    4. "cooldown_ttl" = "1d"
    5. );

Keywords

  1. CREATE, POLICY

Best Practice