Перейти к основному содержимому
Перейти к основному содержимому

Контроль доступа в ClickHouse Cloud

ClickHouse Cloud контролирует доступ к самой консоли и функциям, доступным в ней. Пользователь консоли является основой этого доступа, с всеми разрешениями, ролями и контролем доступа, назначенными и управляемыми через этих пользователей. Когда права доступа на уровне базы данных связаны с пользователями консоли, они управляют их доступом к данным при запросах через SQL консоль.

Пользователи консоли и роли

Настройте назначения ролей Организации и Сервиса на странице Консоли > Пользователи и роли. Настройте назначения ролей SQL Консоли на странице настроек для каждого сервиса.

Пользователям должна быть назначена роль на уровне организации и опционально могут быть назначены сервисные роли для одного или нескольких сервисов. Сервисные роли могут быть опционально настроены для пользователей для доступа к SQL консоли на странице настроек сервиса.

  • Пользователи, назначенные роли Администратора Организации, по умолчанию получают роль Администратора Сервиса.
  • Пользователи, добавленные в организацию через интеграцию SAML, автоматически получают роль Участника с минимальными привилегиями и без доступа к каким-либо сервисам, пока не будет настроено.
  • Администратору Сервиса по умолчанию назначается роль администратора SQL консоли. Разрешения SQL консоли могут быть удалены на странице настроек сервиса.
КонтекстРольОписание
ОрганизацияАдминистраторВыполнять все административные действия для организации и контролировать все настройки. По умолчанию назначается первому пользователю в организации.
ОрганизацияРазработчикДоступ к просмотру всего, кроме Сервисов, возможность генерировать ключи API с правами только на чтение.
ОрганизацияБиллингПросмотр использования и счетов, управление методами оплаты.
ОрганизацияУчастникВход только с возможностью управлять настройками личного профиля. По умолчанию назначается пользователям SAML SSO.
СервисАдминистратор СервисаУправление настройками сервиса.
СервисЧтение толькоПросмотр сервисов и настроек.
SQL консольАдминистратор SQL консолиАдминистративный доступ к базам данных в пределах сервиса, эквивалентный роли по умолчанию для базы данных.
SQL консольЧтение только SQL консолиДоступ только на чтение к базам данных в пределах сервиса
SQL консольПользовательскаяНастройка с помощью SQL GRANT оператора; назначьте роль пользователю SQL консоли, назвав роль по имени пользователя

Чтобы создать пользовательскую роль для пользователя SQL консоли и предоставить ему общую роль, выполните следующие команды. Адрес электронной почты должен соответствовать адресу электронной почты пользователя в консоли.

Создать database_developer и предоставить разрешения

Создайте роль database_developer и предоставьте разрешения SHOW, CREATE, ALTER и DELETE.

CREATE ROLE OR REPLACE database_developer;
GRANT SHOW ON * TO database_developer;
GRANT CREATE ON * TO database_developer;
GRANT ALTER ON * TO database_developer;
GRANT DELETE ON * TO database_developer;

Создать роль пользователя SQL консоли

Создайте роль для пользователя SQL консоли my.user@domain.com и назначьте ей роль database_developer.

CREATE ROLE OR REPLACE `sql-console-role:my.user@domain.com`;
GRANT database_developer TO `sql-console-role:my.user@domain.com`;

Безпарольная аутентификация SQL консоли

Пользователи SQL консоли создаются для каждой сессии и аутентифицируются с использованием сертификатов X.509, которые автоматически обновляются. Пользователь удаляется по завершении сессии. При создании списков доступа для аудита перейдите на вкладку Настройки сервиса в консоли и отметьте доступ к SQL консоли, в дополнение к пользователям баз данных, которые существуют в базе данных. Если пользовательские роли настроены, доступ пользователя перечислен в роли, заканчивающейся на имя пользователя.

Права доступа к базе данных

Настройте следующее в рамках сервисов и баз данных, используя SQL GRANT оператор.

РольОписание
По умолчаниюПолный административный доступ к сервисам
ПользовательскаяНастройка с помощью SQL GRANT оператора
  • Роли баз данных являются аддитивными. Это означает, что если пользователь является участником двух ролей, пользователь имеет наибольший доступ, предоставленный двум ролям. Они не теряют доступ, добавляя роли.
  • Роли баз данных могут быть предоставлены другим ролям, создавая иерархическую структуру. Роли наследуют все разрешения ролей, членом которых они являются.
  • Роли баз данных уникальны для каждого сервиса и могут применяться ко многим базам данных внутри одного сервиса.

На иллюстрации ниже показаны различные способы предоставления пользователю разрешений.

Иллюстрация, показывающая различные способы предоставления пользователю разрешений

Начальные настройки

У баз данных есть учетная запись с именем default, которая добавляется автоматически и получает default_role при создании сервиса. Пользователь, который создает сервис, получает автоматически сгенерированный, случайный пароль, который назначается учетной записи default, когда сервис создается. Пароль не отображается после начальной настройки, но может быть изменен любым пользователем с правами Администратора Сервиса в консоли позже. Эта учетная запись или учетная запись с правами Администратора Сервиса в консоли могут настроить дополнительные пользователей баз данных и роли в любое время.

примечание

Чтобы изменить пароль, назначенный учетной записи default в консоли, перейдите в меню Сервисы слева, откройте сервис, перейдите на вкладку Настройки и нажмите кнопку Сбросить пароль.

Рекомендуется создать новую учетную запись пользователя, связанную с человеком, и предоставить пользователю default_role. Это делается для того, чтобы действия, выполняемые пользователями, были идентифицированы по их пользовательским идентификаторам, а учетная запись default оставалась резервной для экстренных действий.

CREATE USER userID IDENTIFIED WITH sha256_hash by 'hashed_password';
GRANT default_role to userID;

Пользователи могут использовать генератор хешей SHA256 или кодовые функции, такие как hashlib в Python, чтобы преобразовать пароль длиной 12+ символов с соответствующей сложностью в строку SHA256 для предоставления системному администратору в качестве пароля. Это гарантирует, что администратор не видит и не обрабатывает пароли в открытом виде.

Списки доступа к базам данных с пользователями SQL консоли

Следующий процесс можно использовать для создания полного списка доступа по SQL консоли и базам данных в вашей организации.

Получить список всех предоставлений баз данных

Запустите следующие запросы, чтобы получить список всех предоставлений в базе данных.

SELECT grants.user_name,
grants.role_name,
users.name AS role_member,
grants.access_type,
grants.database,
grants.table
FROM system.grants LEFT OUTER JOIN system.role_grants ON grants.role_name = role_grants.granted_role_name
LEFT OUTER JOIN system.users ON role_grants.user_name = users.name

UNION ALL

SELECT grants.user_name,
grants.role_name,
role_grants.role_name AS role_member,
grants.access_type,
grants.database,
grants.table
FROM system.role_grants LEFT OUTER JOIN system.grants ON role_grants.granted_role_name = grants.role_name
WHERE role_grants.user_name is null;

Связать список предоставлений с пользователями Консоли, имеющими доступ к SQL консоли

Свяжите этот список с пользователями Консоли, которые имеют доступ к SQL консоли.

a. Перейдите в Консоль.

b. Выберите соответствующий сервис.

c. Выберите Настройки слева.

d. Прокрутите до раздела доступа к SQL консоли.

e. Нажмите на ссылку для количества пользователей с доступом к базе данных There are # users with access to this service., чтобы увидеть список пользователей.