跳到主要内容
跳到主要内容

安全访问 S3 数据

This article demonstrates how ClickHouse Cloud customers can leverage role-based access to authenticate with Amazon Simple Storage Service(S3) and access their data securely.

Introduction

在深入了解安全 S3 访问设置之前,了解其工作原理是非常重要的。以下是 ClickHouse 服务如何通过在客户的 AWS 账户中假设角色来访问私有 S3 桶的概述。

这种方法允许客户在一个地方(假设角色的 IAM 策略)管理对其 S3 桶的所有访问,而无需遍历其所有桶策略来添加或删除访问权限。

Setup

Obtaining the ClickHouse service IAM role Arn

1 - 登录到您的 ClickHouse 云账户。

2 - 选择您要创建集成的 ClickHouse 服务。

3 - 选择 设置 选项卡。

4 - 向下滚动到页面底部的 网络安全信息 部分。

5 - 复制该服务的 服务角色 ID (IAM) 值,如下所示。

Setting up IAM assume role

Option 1: Deploying with CloudFormation stack

1 - 使用具有创建和管理 IAM 角色权限的 IAM 用户登录到您的 AWS 账户。

2 - 访问 this url 来填充 CloudFormation 堆栈。

3 - 输入(或粘贴)属于 ClickHouse 服务的 IAM 角色

4 - 配置 CloudFormation 堆栈。以下是关于这些参数的额外信息。

参数默认值描述
RoleNameClickHouseAccess-001ClickHouse Cloud 将用于访问您的 S3 桶的新角色的名称
Role Session Name*角色会话名称可以用作共享密钥以进一步保护您的桶。
ClickHouse Instance Roles可使用此安全 S3 集成的 ClickHouse 服务 IAM 角色的逗号分隔列表。
Bucket AccessRead设置提供桶的访问级别。
Bucket Names此角色将有权访问的 桶名称 的逗号分隔列表。

注意: 请勿填写完整的桶 Arn,而只需填写桶名称。

5 - 选择 我承认 AWS CloudFormation 可能会创建带有自定义名称的 IAM 资源。 复选框。

6 - 点击右下角的 创建堆栈 按钮。

7 - 确保 CloudFormation 堆栈完成且没有错误。

8 - 选择 CloudFormation 堆栈的 输出

9 - 复制该集成的 RoleArn 值。这是访问您的 S3 桶所需的。

Option 2: Manually create IAM role.

1 - 使用具有创建和管理 IAM 角色权限的 IAM 用户登录到您的 AWS 账户。

2 - 浏览到 IAM 服务控制台。

3 - 创建一个新的 IAM 角色,使用以下 IAM 和信任策略。

信任策略(请将 {ClickHouse_IAM_ARN} 替换为属于您的 ClickHouse 实例的 IAM 角色 Arn):

IAM 策略(请将 {BUCKET_NAME} 替换为您的桶名称):

4 - 创建后复制新的 IAM 角色 Arn。这是访问您的 S3 桶所需的。

Access your S3 bucket with the ClickHouseAccess Role

ClickHouse Cloud 具有一个新功能,允许您在 S3 表函数中指定 extra_credentials。以下是如何使用从上面复制的新角色运行查询的示例。

下面是一个示例查询,它使用 role_session_name 作为共享密钥从桶中查询数据。如果 role_session_name 不正确,此操作将失败。

备注

我们建议您的源 S3 位于与您 ClickHouse 云服务相同的区域,以减少数据传输成本。有关更多信息,请参考 S3 pricing