CREATE ROW ACCESS POLICY
TiDB Cloud Lake に新しい行アクセスポリシーを作成します。行アクセスポリシーは、ポリシーがテーブルにアタッチされたときに TiDB Cloud Lake が行に適用する Boolean 述語を定義します。
構文
CREATE ROW ACCESS POLICY [ IF NOT EXISTS ] <policy_name> AS
( <arg_name> <arg_type> [ , <arg_name> <arg_type> ... ] )
RETURNS BOOLEAN -> <predicate_expression>
[ COMMENT = '<comment>' ]
アクセス制御要件
TiDB Cloud Lake は、新しい行アクセスポリシーに対する OWNERSHIP を現在のロールに自動的に付与するため、そのロールは他のユーザーとともにポリシーを管理できます。
例
この例では、現在のロールが admin でない限り、Engineering 部門の行のみを表示するポリシーを作成します。
SET enable_experimental_row_access_policy = 1;
CREATE TABLE employees (
id INT,
name STRING,
department STRING
);
INSERT INTO employees VALUES
(1, 'Alice', 'Engineering'),
(2, 'Bob', 'Sales'),
(3, 'Charlie', 'Engineering');
CREATE ROW ACCESS POLICY rap_engineering
AS (dept STRING)
RETURNS BOOLEAN ->
CASE
WHEN current_role() = 'admin' THEN true
WHEN dept = 'Engineering' THEN true
ELSE false
END
COMMENT = 'show engineering rows';
ALTER TABLE employees
ADD ROW ACCESS POLICY rap_engineering ON (department);
SELECT id, name, department FROM employees ORDER BY id;
┌────┬─────────┬─────────────┐
│ id │ name │ department │
├────┼─────────┼─────────────┤
│ 1 │ Alice │ Engineering │
│ 3 │ Charlie │ Engineering │
└────┴─────────┴─────────────┘
ON (department) 句は、テーブルカラム department をポリシー引数 dept にマッピングします。