📣新登場!TiDB Cloud BYOC、TiDB Cloud Filesystem、PostgreSQL-compatible TiDB Cloud Starter がパブリックプレビュー中。このページは自動翻訳されたものです。原文はこちらからご覧ください。

GRANT



特定のデータベースオブジェクトに対する権限、ロール、および所有権を付与します。これには以下が含まれます。

  • ロールに権限を付与する。
  • ユーザーまたは他のロールにロールを割り当てる。
  • ロールに所有権を移譲する。

関連情報:

GRANT で権限またはロールを変更した後は、更新内容をすべてのクエリノードに即座に反映するために、SYSTEM FLUSH PRIVILEGES を実行してください。

構文

権限の付与

権限とは何か、およびその仕組みについては、権限 を参照してください。

GRANT { schemaObjectPrivileges | ALL [ PRIVILEGES ] ON <privileges_level> } TO ROLE <role_name>

各要素の定義は次のとおりです。

schemaObjectPrivileges ::= -- For TABLE { SELECT | INSERT } -- For SCHEMA { CREATE | DROP | ALTER } -- For USER { CREATE USER } -- For ROLE { CREATE ROLE} -- For STAGE { READ, WRITE } -- For UDF { USAGE } -- For MASKING POLICY (account-level privileges) { CREATE MASKING POLICY | APPLY MASKING POLICY } -- For ROW ACCESS POLICY (account-level privileges) { CREATE ROW ACCESS POLICY | APPLY ROW ACCESS POLICY }
privileges_level ::= *.* | db_name.* | db_name.tbl_name | STAGE <stage_name> | UDF <udf_name> | MASKING POLICY <policy_name> | ROW ACCESS POLICY <policy_name>

マスキングポリシー権限の付与

個々のマスキングポリシーへのアクセスを管理するには、次の形式を使用します。

GRANT APPLY ON MASKING POLICY <policy_name> TO ROLE <role_name> GRANT ALL [ PRIVILEGES ] ON MASKING POLICY <policy_name> TO ROLE <role_name> GRANT OWNERSHIP ON MASKING POLICY <policy_name> TO ROLE '<role_name>'
  • CREATE MASKING POLICY は、ロールが新しいマスキングポリシーを作成できるようにします。
  • APPLY MASKING POLICY は、適切な ALTER TABLE またはポリシーコマンドと組み合わせることで、被付与者が任意のマスキングポリシーをアタッチ、デタッチ、記述、または削除できるようにします。
  • GRANT APPLY ON MASKING POLICY ... は、グローバルアクセスを付与せずに、被付与者が特定のマスキングポリシーを管理できるようにします。
  • OWNERSHIP はマスキングポリシーに対する完全な制御を提供します。TiDB Cloud Lake は新しいポリシーに対する OWNERSHIP を作成者ロールに自動的に付与し、ポリシーが削除されるとそれを取り消します。

行アクセスポリシー権限の付与

個々の行アクセスポリシーへのアクセスを管理するには、次の形式を使用します。

GRANT APPLY ON ROW ACCESS POLICY <policy_name> TO ROLE <role_name> GRANT ALL [ PRIVILEGES ] ON ROW ACCESS POLICY <policy_name> TO ROLE <role_name> GRANT OWNERSHIP ON ROW ACCESS POLICY <policy_name> TO ROLE '<role_name>'
  • CREATE ROW ACCESS POLICY は、ロールが新しい行アクセスポリシーを作成できるようにします。
  • APPLY ROW ACCESS POLICY は、任意の行アクセスポリシーをテーブルにアタッチまたはデタッチする権限を付与し、DESCRIBE/DROP コマンドもあわせて許可します。
  • GRANT APPLY ON ROW ACCESS POLICY ... は、アクセスを特定の行アクセスポリシーに限定します。
  • OWNERSHIP は行アクセスポリシーに対する完全な制御を提供します。作成者ロールは OWNERSHIP を自動的に受け取り、ポリシーが削除されるとそれを失います。

ロールの付与

ロールとは何か、およびその仕組みについては、ロール を参照してください。

-- Grant a role to a user GRANT ROLE <role_name> TO <user_name> -- Grant a role to a role GRANT ROLE <role_name> TO ROLE <role_name>

所有権の付与

所有権とは何か、およびその仕組みについては、所有権 を参照してください。

-- Grant ownership of a specific table within a database to a role GRANT OWNERSHIP ON <database_name>.<table_name> TO ROLE '<role_name>' -- Grant ownership of a stage to a role GRANT OWNERSHIP ON STAGE <stage_name> TO ROLE '<role_name>' -- Grant ownership of a user-defined function (UDF) to a role GRANT OWNERSHIP ON UDF <udf_name> TO ROLE '<role_name>'

例

例 1: ロールへの権限の付与

ロールを作成します。

CREATE ROLE user1_role;

default データベース内の既存のすべてのテーブルに対する ALL 権限を、ロール user1_role に付与します。

GRANT ALL ON default.* TO ROLE user1_role;
SHOW GRANTS FOR ROLE user1_role; +--------------------------------------------------+ | Grants | +--------------------------------------------------+ | GRANT ALL ON 'default'.* TO ROLE 'user1_role' | +--------------------------------------------------+

すべてのデータベースに対する ALL 権限を、ロール user1_role に付与します。

GRANT ALL ON *.* TO ROLE user1_role;
SHOW GRANTS FOR ROLE user1_role; +--------------------------------------------------+ | Grants | +--------------------------------------------------+ | GRANT ALL ON 'default'.* TO ROLE 'user1_role' | | GRANT ALL ON *.* TO ROLE 'user1_role' | +--------------------------------------------------+

s1 という名前の stage に対する ALL 権限を、ロール user1_role に付与します。

GRANT ALL ON STAGE s1 TO ROLE user1_role;
SHOW GRANTS FOR ROLE user1_role; +--------------------------------------------------+ | Grants | +--------------------------------------------------+ | GRANT ALL ON STAGE s1 TO ROLE 'user1_role' | +--------------------------------------------------+

f1 という名前の UDF に対する ALL 権限を、ロール user1_role に付与します。

GRANT ALL ON UDF f1 TO ROLE user1_role;
SHOW GRANTS FOR ROLE user1_role; +--------------------------------------------------+ | Grants | +--------------------------------------------------+ | GRANT ALL ON UDF f1 TO ROLE 'user1_role' | +--------------------------------------------------+

例 2: ロールへの特定の権限の付与

mydb データベース内の既存のすべてのテーブルに対する SELECT 権限を、ロール role1 に付与します。

ロールを作成します。

CREATE ROLE role1;

ロールに権限を付与します。

GRANT SELECT ON mydb.* TO ROLE role1;

ロールに付与されている権限を表示します。

SHOW GRANTS FOR ROLE role1; +-------------------------------------+ | Grants | +-------------------------------------+ | GRANT SELECT ON 'mydb'.* TO 'role1' | +-------------------------------------+

例 3: ユーザーへのロールの付与

ユーザーを作成します。

CREATE USER user1 IDENTIFIED BY 'abc123' WITH DEFAULT_ROLE = 'role1';

ロール role1 に付与されている権限は次のとおりです。

SHOW GRANTS FOR ROLE role1; +-------------------------------------+ | Grants | +-------------------------------------+ | GRANT SELECT ON 'mydb'.* TO 'role1' | +-------------------------------------+

ロール role1 をユーザー user1 に付与します。

GRANT ROLE role1 TO user1;

これで、ユーザー user1 に付与されている権限は次のとおりです。

SHOW GRANTS FOR user1; +-------------------------------------+ | Grants | +-------------------------------------+ | GRANT ROLE role1 TO 'user1'@'%' | +-------------------------------------+

例 4: ロールへの所有権の付与

-- Grant ownership of all tables in the 'finance_data' database to the role 'data_owner' GRANT OWNERSHIP ON finance_data.* TO ROLE 'data_owner'; -- Grant ownership of the table 'transactions' in the 'finance_data' schema to the role 'data_owner' GRANT OWNERSHIP ON finance_data.transactions TO ROLE 'data_owner'; -- Grant ownership of the stage 'ingestion_stage' to the role 'data_owner' GRANT OWNERSHIP ON STAGE ingestion_stage TO ROLE 'data_owner'; -- Grant ownership of the user-defined function 'calculate_profit' to the role 'data_owner' GRANT OWNERSHIP ON UDF calculate_profit TO ROLE 'data_owner';

例 5: マスキングポリシー権限の付与

-- Allow the current user to create masking policies GRANT CREATE MASKING POLICY ON *.* TO ROLE security_admin; -- Create a masking policy while assuming the security_admin role CREATE MASKING POLICY email_mask AS (val STRING) RETURNS STRING -> '***'; -- Grant a role the ability to apply the policy when altering tables GRANT APPLY ON MASKING POLICY email_mask TO ROLE pii_readers; -- Review the masking policy privileges SHOW GRANTS ON MASKING POLICY email_mask;

例 6: 行アクセスポリシー権限の付与

-- Allow the current role to create row access policies GRANT CREATE ROW ACCESS POLICY ON *.* TO ROLE row_policy_admin; -- Define a row access policy while assuming the row_policy_admin role CREATE ROW ACCESS POLICY rap_region AS (region STRING) RETURNS BOOLEAN -> region = 'APAC'; -- Allow a role to apply the policy when altering tables GRANT APPLY ON ROW ACCESS POLICY rap_region TO ROLE apac_only; -- Review the row access policy privileges SHOW GRANTS ON ROW ACCESS POLICY rap_region;

このページは役に立ちましたか?