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

Этот подход позволяет клиентам управлять всем доступом к своим S3-бакетам в одном месте (IAM-политика принимаемой роли), не проходя через все свои политики бакетов для добавления или удаления доступа.
Настройка
Получение ARN роли сервиса ClickHouse IAM
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, разделенный запятыми, которые могут использовать эту интеграцию Secure 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 и Trust политики.
Политика доверия (Пожалуйста, замените {ClickHouse_IAM_ARN}
на ARN роли IAM, принадлежащий вашему экземпляру ClickHouse):
IAM политика (Пожалуйста, замените {BUCKET_NAME}
на имя вашего бакета):
4 - Скопируйте новый ARN роли IAM после создания. Это то, что нужно для доступа к вашему S3-бакету.
Доступ к вашему S3-бакету с ролью ClickHouseAccess
ClickHouse Cloud имеет новую функцию, которая позволяет вам указывать extra_credentials
как часть функции таблицы S3. Ниже приведен пример того, как выполнить запрос, используя новую созданную роль, скопированную из выше.
Ниже приведен пример запроса, который использует role_session_name
в качестве общего секрета для запроса данных из бакета. Если role_session_name
неправильный, эта операция завершится неудачей.
Рекомендуем, чтобы ваш источник S3 находился в том же регионе, что и ваша служба ClickHouse Cloud, чтобы сократить расходы на передачу данных. Для получения дополнительной информации обратитесь к ценам на S3