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

Безопасный доступ к данным S3

Эта статья демонстрирует, как клиенты ClickHouse Cloud могут использовать контроль доступа на основе ролей для аутентификации с Amazon Simple Storage Service (S3) и безопасного доступа к своим данным.

Введение

Перед тем как погрузиться в настройку безопасного доступа к S3, важно понять, как это работает. Ниже приведен обзор того, как сервисы ClickHouse могут получать доступ к частным корзинам S3, перейдя на роль в аккаунте AWS клиентов.

Обзор безопасного доступа к S3 с ClickHouse

Этот подход позволяет клиентам управлять всем доступом к своим корзинам S3 в одном месте (политика IAM предполагаемой роли), не проходя через все политики своих корзин для добавления или удаления доступа.

Настройка

Получение ARN IAM роли сервиса ClickHouse

1 - Войдите в свой аккаунт ClickHouse cloud.

2 - Выберите сервис ClickHouse, для которого хотите создать интеграцию.

3 - Выберите вкладку Настройки.

4 - Прокрутите вниз до раздела Информация о сетевой безопасности в нижней части страницы.

5 - Скопируйте значение ID роли сервиса (IAM), принадлежащее сервису, как показано ниже.

Получение ARN IAM роли сервиса ClickHouse

Настройка IAM предполагаемой роли

Опция 1: Развертывание с помощью стека CloudFormation

1 - Войдите в свой аккаунт AWS в веб-браузере с пользователем IAM, у которого есть разрешение на создание и управление IAM ролями.

2 - Перейдите по этой ссылке, чтобы заполнить стек CloudFormation.

3 - Введите (или вставьте) IAM роль, принадлежащую сервису ClickHouse.

4 - Настройте стек CloudFormation. Ниже приведена дополнительная информация об этих параметрах.

ПараметрЗначение по умолчаниюОписание
RoleNameClickHouseAccess-001Имя новой роли, которую ClickHouse Cloud будет использовать для доступа к вашей корзине S3
Role Session Name*Имя сессии роли может использоваться как общий секрет для дополнительной защиты вашей корзины.
ClickHouse Instance RolesСписок IAM ролей сервиса ClickHouse, которые могут использовать эту интеграцию Secure S3.
Bucket AccessReadУстанавливает уровень доступа для предоставленных корзин.
Bucket NamesСписок имен корзин, к которым эта роль будет иметь доступ, разделённый запятыми.

Примечание: Не указывайте полный ARN корзины, а вместо этого просто укажите только имя корзины.

5 - Выберите флажок Я подтверждаю, что AWS CloudFormation может создать IAM ресурсы с нестандартными именами.

6 - Нажмите кнопку Создать стек в правом нижнем углу.

7 - Убедитесь, что стек CloudFormation завершен без ошибок.

8 - Выберите Выходные данные стека CloudFormation.

9 - Скопируйте значение RoleArn для этой интеграции. Это то, что необходимо для доступа к вашей корзине S3.

Вывод стека CloudFormation, показывающий ARN IAM роли

Опция 2: Вручную создать IAM роль

1 - Войдите в свой аккаунт AWS в веб-браузере с пользователем IAM, у которого есть разрешение на создание и управление IAM ролями.

2 - Перейдите в консоль службы IAM.

3 - Создайте новую IAM роль со следующей политикой IAM и политикой доверия.

Политика доверия (Пожалуйста, замените {ClickHouse_IAM_ARN} на ARN роли IAM, принадлежащий вашему экземпляру ClickHouse):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "{ClickHouse_IAM_ARN}"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

Политика IAM (Пожалуйста, замените {BUCKET_NAME} на имя вашей корзины):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::{BUCKET_NAME}"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::{BUCKET_NAME}/*"
            ],
            "Effect": "Allow"
        }
    ]
}

4 - Скопируйте новый ARN IAM роли после создания. Это то, что необходимо для доступа к вашей корзине S3.

Доступ к вашей корзине S3 с ролью ClickHouseAccess

ClickHouse Cloud имеет новую функцию, которая позволяет вам указывать extra_credentials как часть табличной функции S3. Ниже приведен пример запроса с использованием только что созданной роли, скопированной выше.

DESCRIBE TABLE s3('https://s3.amazonaws.com/BUCKETNAME/BUCKETOBJECT.csv','CSVWithNames',extra_credentials(role_arn = 'arn:aws:iam::111111111111:role/ClickHouseAccessRole-001'))

Ниже приведен пример запроса, который использует role_session_name как общий секрет для запроса данных из корзины. Если role_session_name неверен, эта операция завершится неудачей.

DESCRIBE TABLE s3('https://s3.amazonaws.com/BUCKETNAME/BUCKETOBJECT.csv','CSVWithNames',extra_credentials(role_arn = 'arn:aws:iam::111111111111:role/ClickHouseAccessRole-001', role_session_name = 'secret-role-name'))
примечание

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