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

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

Настройка предполагаемой роли IAM
Вариант 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 и политикой доверия.
Политика доверия (Пожалуйста, замените {ClickHouse_IAM_ARN}
на ARN роли IAM, принадлежащей вашему экземпляру 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