Безопасный доступ к данным S3
В этой статье показано, как клиенты ClickHouse Cloud могут использовать контроль доступа на основе ролей для аутентификации с Amazon Simple Storage Service (S3) и безопасного доступа к своим данным.
Введение
Перед тем как погрузиться в настройку безопасного доступа к S3, важно понять, как это работает. Ниже представлено общее представление о том, как службы ClickHouse могут получать доступ к приватным контейнерам S3, принимая на себя роль в учетной записи AWS клиентов.

Этот подход позволяет клиентам управлять всем доступом к своим контейнерам S3 в одном месте (политика IAM предполагаемой роли), не проходя через все их политике контейнеров для добавления или удаления доступа.
Настройка
Получение Arn IAM роли службы ClickHouse
1 - Войдите в свою учетную запись ClickHouse Cloud.
2 - Выберите службу ClickHouse, для которой хотите создать интеграцию.
3 - Выберите вкладку Настройки.
4 - Прокрутите вниз до раздела Информация о сетевой безопасности в нижней части страницы.
5 - Скопируйте значение ID роли службы (IAM), принадлежащее службе, как показано ниже.

Настройка IAM assume role
Вариант 1: Развертывание с помощью стека CloudFormation
1 - Войдите в свою учетную запись AWS в веб-браузере с IAM пользователем, который имеет разрешение на создание и управление IAM ролями.
2 - Перейдите по ссылке для заполнения стека CloudFormation.
3 - Введите (или вставьте) IAM роль, принадлежащую службе ClickHouse.
4 - Настройте стек CloudFormation. Ниже представлена дополнительная информация о этих параметрах.
Параметр | Значение по умолчанию | Описание |
---|---|---|
RoleName | ClickHouseAccess-001 | Имя новой роли, которую ClickHouse Cloud будет использовать для доступа к вашему контейнеру S3 |
Role Session Name | * | Имя сессии роли может быть использовано как общий секрет для дополнительной защиты вашего контейнера. |
ClickHouse Instance Roles | Список IAM ролей службы ClickHouse, разделенный запятыми, которые могут использовать эту интеграцию с безопасным S3. | |
Bucket Access | Read | Устанавливает уровень доступа для предоставленных контейнеров. |
Bucket Names | Список имен контейнеров, разделенный запятыми, к которым эта роль будет иметь доступ. |
Примечание: Не указывайте полный Arn контейнера, вместо этого укажите только имя контейнера.
5 - Выберите флажок Я подтверждаю, что AWS CloudFormation может создать IAM-ресурсы с пользовательскими именами.
6 - Нажмите кнопку Создать стек в правом нижнем углу.
7 - Убедитесь, что стек CloudFormation завершился без ошибок.
8 - Выберите Выходные данные стека CloudFormation.
9 - Скопируйте значение RoleArn для этой интеграции. Оно необходимо для доступа к вашему контейнеру S3.

Вариант 2: Ручное создание IAM роли.
1 - Войдите в свою учетную запись AWS в веб-браузере с IAM пользователем, который имеет разрешение на создание и управление IAM ролями.
2 - Перейдите в консоль службы IAM.
3 - Создайте новую IAM роль со следующей политикой IAM и доверительными отношениями.
Политика доверия (Пожалуйста, замените {ClickHouse_IAM_ARN}
на IAM Role arn, принадлежащий вашему экземпляру ClickHouse):
IAM политика (Пожалуйста, замените {BUCKET_NAME}
на имя вашего контейнера):
4 - Скопируйте новый IAM Role Arn после создания. Оно необходимо для доступа к вашему контейнеру S3.
Доступ к вашему контейнеру S3 с ролью ClickHouseAccess
ClickHouse Cloud имеет новую функцию, которая позволяет вам указывать extra_credentials
в качестве части табличной функции S3. Ниже приведен пример выполнения запроса с использованием вновь созданной роли, скопированной из вышеуказанного.
Ниже приведен пример запроса, который использует role_session_name
в качестве общего секрета для запроса данных из контейнера. Если role_session_name
некорректен, эта операция завершится неудачно.
Мы рекомендуем, чтобы ваше исходное S3 находилось в том же регионе, что и ваша служба ClickHouse Cloud, чтобы снизить затраты на передачу данных. Для получения дополнительной информации обратитесь к ценам на S3