【问题标题】:Cannot CLONE a database because of permissions in snowflake由于雪花中的权限,无法克隆数据库
【发布时间】:2019-10-31 21:18:05
【问题描述】:

创建了一个名为 DEV_USER 的用户,属于角色 DEV_ROLE。

GRANT USAGE ON WAREHOUSE MYWH TO ROLE DEV_ROLE;
CREATE USER DEV_USER PASSWORD = 'secrets' COMMENT = 'Dev User' LOGIN_NAME = 'DEV_USER' DISPLAY_NAME = 'Development Only User' DEFAULT_ROLE = 'DEV_ROLE'  DEFAULT_WAREHOUSE = 'MYWH' MUST_CHANGE_PASSWORD = FALSE;
ALTER USER DEV_USER SET DEFAULT_NAMESPACE = 'PUBLIC';
GRANT ROLE DEV_ROLE TO USER DEV_USER;
GRANT ROLE DEV_ROLE TO USER MYUSERACCT;
GRANT ALL ON DATABASE DEV_DB TO ROLE DEV_ROLE WITH GRANT OPTION;
GRANT ALL ON DATABASE "DEV_DB" TO ROLE "DEV_ROLE" WITH GRANT OPTION;
GRANT ALL ON SCHEMA "DEV_DB"."PUBLIC" TO ROLE "DEV_ROLE"  WITH GRANT OPTION; 

我使用 MYUSERACCT 登录。我默认为 DEV_ROLE。我去 DATABASES 并尝试将 DEV_DB 克隆到 DEV_DB_CLONE 但收到以下错误:

无法创建数据库 DEV_DB_CLONE。 SQL 访问控制错误:权限不足,无法对帐户 'XX12345' 进行操作

显然,如果我将用户设置为 SYSADMIN 或 ACCOUNTADMIN,它将起作用。但是当我设置为 DEV_ROLE 时,我需要它来克隆。

我错过了什么?

【问题讨论】:

    标签: database permissions clone snowflake-cloud-data-platform


    【解决方案1】:

    security access control privileges 表示克隆你需要通过角色获得CREATE DATABASE 的全局权限

    CREATE USER DEV_USER1 PASSWORD = 'secrets' COMMENT = 'Dev User' LOGIN_NAME = 'DEV_USER' DISPLAY_NAME = 'Development Only User';
    CREATE ROLE CLONE_ROLE;
    GRANT CREATE DATABASE ON ACCOUNT TO ROLE CLONE_ROLE;
    GRANT ROLE CLONE_ROLE TO USER DEV_USER1;
    
    DROP USER DEV_USER1;
    DROP ROLE CLONE_ROLE;
    

    【讨论】:

    • 所以似乎 GRANT ALL PRIVILEGES ON ... 与 GRANT CREATE DATABASE 不同。有效的语句是 GRANT CREATE DATABASE ON ACCOUNT TO ROLE DEV_ROLE;谢谢。
    • 关键是在ACCOUNT上设置CREATE DATABASE。我正在对数据库进行操作。所以结果是 GRANT CREATE DATABASE ON ACCOUNT TO ROLE DEV_ROLE;
    猜你喜欢
    • 1970-01-01
    • 2020-03-27
    • 2022-07-28
    • 2021-12-31
    • 2021-11-25
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多