简介
- 你创建一个具有适当 GCS 权限的 Google Cloud 服务账号
- 你为该服务账号生成 HMAC 密钥
- 你将这些 HMAC 凭证提供给 ClickHouse Cloud
- ClickHouse Cloud 使用这些凭证访问你的 GCS 桶
前置条件
- 一个处于活动状态的 ClickHouse Cloud 服务
- 一个已启用 Cloud Storage 的 Google Cloud 项目
- 在 GCP 项目中创建服务账号并生成 HMAC 密钥的权限
设置
1
创建 Google Cloud 服务账号
- 在 Google Cloud Console 中,前往 IAM & Admin → Service Accounts
- 在左侧菜单中点击
Service accounts,然后点击Create service account:
Create and continue向服务账号授予 Storage Object User 角色:此角色提供对 GCS object 的读写权限点击 Continue,然后点击 Done记下服务账号的电子邮件地址:2
向服务账号授予存储桶访问权限
您可以在项目级别或单个存储桶级别授予访问权限。选项 1:向特定存储桶授予访问权限 (推荐)
- 导航到
Cloud Storage→Buckets - 点击您要授予访问权限的存储桶
- 转到
Permissions选项卡 - 在 “Permissions” 下,点击为前面步骤中创建的主体授予访问权限的
Grant access - 在 “New principals” 字段中,输入您的服务账号电子邮件地址
- 选择适当的角色:
- Storage Object User 用于读写访问
- Storage Object Viewer 用于只读访问
- 点击
Save - 对其他需要授权的存储桶重复此操作
选项 2:授予项目级别访问权限
- 导航到
IAM & Admin→IAM - 点击
Grant access - 在
New principals字段中输入您的服务账号电子邮件地址 - 选择 Storage Object User (只读则选择 Storage Object Viewer)
- 点击 SAVE
3
为服务账号生成 HMAC 密钥
前往Cloud Storage → Settings → Interoperability:如果未看到 “Access keys” 部分,请点击 Enable interoperability access在 “Access keys for service accounts” 下,点击 Create a key for a service account:选择你之前创建的服务账号 (例如 clickhouse-gcs-access@your-project.iam.gserviceaccount.com)点击 Create key:系统会显示 HMAC 密钥。
请立即保存 Access Key 和 Secret——之后将无法再次查看该 secret。下面显示的是示例密钥:重要请妥善保管这些凭据。
关闭此页面后,将无法再次获取该 secret。
如果丢失该 secret,则需要生成新的密钥。
在 ClickHouse Cloud 中使用 HMAC 密钥
现在,你可以使用 HMAC 凭据从 ClickHouse Cloud 访问 GCS。 为此,请使用 GCS 表函数:ClickPipes 中 GCS 的 HMAC 身份验证
ClickPipes 使用 HMAC (基于哈希的消息身份验证码) 密钥与 Google Cloud Storage 进行身份验证。在设置 GCS ClickPipe时:- 在 ClickPipe 设置过程中,在
Authentication method下选择Credentials - 提供在前面步骤中获取的 HMAC 凭据
目前尚不支持服务账号身份验证,你必须使用 HMAC 密钥
GCS 存储桶 URL 必须采用以下格式:
https://storage.googleapis.com/<bucket>/<path> (不能使用 gs://)roles/storage.objectViewer 角色的服务账号,该角色包含以下权限:storage.objects.list:列出存储桶中的对象storage.objects.get:拉取/读取对象
最佳实践
为不同环境使用单独的服务账号
clickhouse-gcs-dev@project.iam.gserviceaccount.comclickhouse-gcs-staging@project.iam.gserviceaccount.comclickhouse-gcs-prod@project.iam.gserviceaccount.com
采用最小权限原则
- 对于只读访问,使用 Storage Object Viewer
- 将访问权限授予特定桶,而非整个项目
- 可考虑使用桶级条件,将访问限制在特定路径下
定期轮换 HMAC 密钥
- 生成新的 HMAC 密钥
- 用新密钥更新 ClickHouse 配置
- 使用新密钥验证功能是否正常
- 删除旧的 HMAC 密钥
使用 Cloud Audit Logs 监控访问
- 前往 IAM & Admin → Audit Logs
- 在列表中找到 Cloud Storage
- 启用
Admin Read、Data Read和Data Write logs - 使用这些日志监控访问行为并检测异常