Создать базу данных изменил мои данные из недавно скопированных данных из корзины S3 - PullRequest
0 голосов
/ 18 января 2020

СОЗДАТЬ ИЛИ ЗАМЕНИТЬ БАЗУ ДАННЫХ "Заказы";

Я не установил никаких разрешений для этой базы данных. Другой человек в моей компании запустил SQL выше и заменил данные. Как я могу предотвратить это в будущем, используя разрешения в Snowflake?

1 Ответ

2 голосов
/ 18 января 2020

TL; DR: глобальная привилегия CREATE DATABASE в Snowflake разрешает пользователю / роли выполнять такой оператор. Чтобы удалить его, необходимо спроектировать систему доступа на основе ролей и отозвать права администратора на уровне существующих пользователей.

Как минимум, строго ограничить пользователей, которым разрешено запускать операторы, как ACCOUNTADMIN, SECURITYADMIN или SYSADMIN ролей . Отмените эти привилегии у группы пользователей, которую вы хотите запретить выполнять операции уровня DATABASE:

REVOKE accountadmin FROM USER other_user1;
REVOKE securityadmin FROM USER other_user1;
REVOKE sysadmin FROM USER other_user1;

REVOKE accountadmin FROM USER other_user2;
REVOKE securityadmin FROM USER other_user2;
REVOKE sysadmin FROM USER other_user2;

(… repeat for all users that need to be limited …)

Далее создайте пользовательские роли и определите желаемый уровень доступа к ним. Также определите, какие имена пользователей будут принадлежать каждой роли в зависимости от их функций в вашей организации.

Ниже приведен очень обобщенный пример c и basi c только для иллюстративных целей, который разделяет всех пользователей базы данных «Заказы». на два уровня доступа. Потребности в спецификациях c будут различаться в зависимости от уникальной ситуации в вашей организации.

CREATE ROLE orders_read_and_write;
CREATE ROLE orders_read_only;

-- Snowflake recommends you create a hierarchy of roles so you can allow any
-- SYSADMIN-allowed users to manage these newly created roles instead of
-- requiring an ACCOUNTADMIN level user to do so in future
GRANT ROLE orders_read_and_write TO ROLE sysadmin;
GRANT ROLE orders_read_only TO ROLE sysadmin;

Созданным выше двум ролям orders_read_and_write и orders_read_only могут быть предоставлены соответствующие права для управления уровнем доступа к схеме и таблицы в базе данных «Заказы». Продолжая пример:

-- Allow both these roles to access schema and tables under "Orders" DB
-- This does not allow them to perform any DB-level operations
-- such as replacing/overwriting it

GRANT USAGE ON DATABASE "Orders" TO ROLE orders_read_and_write;
GRANT USAGE ON DATABASE "Orders" TO ROLE orders_read_only;

-- Allow read and write access appropriately to schema under the DB
-- Note the difference on using ALL vs. USAGE in the privilege granted
-- to each role here:

GRANT ALL ON SCHEMA "Orders"."SCHEMA-NAME" TO ROLE orders_read_and_write;

GRANT USAGE ON SCHEMA "Orders"."SCHEMA-NAME" TO ROLE orders_read_only;
GRANT SELECT
  ON ALL TABLES IN SCHEMA "Orders"."SCHEMA-NAME"
  TO ROLE orders_read_only;

Наконец, присвойте роли соответствующим именам пользователей.

GRANT ROLE orders_read_and_write TO USER other_user_1;

GRANT ROLE orders_read_only TO USER other_user_2;

(…)

Любая роль, не обладающая привилегией уровня CREATE DATABASE больше не сможет выполнять оператор, такой как CREATE OR REPLACE DATABASE "Orders";.

. В приведенном выше примере обе роли получают доступ только на уровне USAGE к базе данных Orders, что не позволяет им выполнять такие заявления больше.

Если вам когда-либо понадобится разрешить такую ​​привилегию для роли, вы можете GRANT явно указать ее для роли выбора, которой доверяют пользователи:

GRANT CREATE DATABASE TO ROLE role_name;

Я настоятельно рекомендую несколько раз пройтись по разделу в Snowflake , чтобы привыкнуть к терминологии. Это упрощает внедрение и управление эффективными средствами контроля доступа в вашей организации.

Примечание . Введение контроля доступа - это серьезное изменение, которое потребует подлинной коммуникации и координации в вашей организации. эффективный. Всегда трудно удалить свободу, так как это может быть заложено в уже используемые скрипты и программы.

...