Невозможно клонировать базу данных из-за разрешений в снежинке - PullRequest
0 голосов
/ 01 ноября 2019

Созданный пользователь с именем 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. Но мне нужно CLONE, когда я настроен на DEV_ROLE.

Что мне не хватает?

1 Ответ

2 голосов
/ 01 ноября 2019

привилегии контроля доступа безопасности говорит, что для клона вам нужны глобальные привилегии 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;
...