目前,我们使用 AWS IAM 用户永久凭证,按照 BigQuery 数据传输服务文档,将客户的数据从我们公司的内部 AWS S3 存储桶传输到客户的 Google BigQuery 表。
使用永久凭证存在与 AWS S3 中存储的数据相关的安全风险。
我们希望使用AWS IAM角色临时凭证,这需要BiqQuery端会话令牌的支持才能在AWS端获得授权。
BigQuery 数据传输服务是否可以使用 AWS IAM 角色或临时凭证对 AWS 进行授权并传输数据?
我们考虑使用 Omni 框架 (https://cloud.google.com/bigquery/docs/omni-aws-cross-cloud-transfer) 将数据从 S3 传输到 BQ,但是,我们面临一些问题/限制:
我们考虑了一种解决方法,通过 GCS 中的暂存(即 S3 -> GCS -> BQ)从 S3 导出数据,但这也需要客户和我们公司双方付出大量努力才能迁移到新解决方案。
BigQuery 数据传输服务是否可以使用 AWS IAM 角色或临时凭证对 AWS 进行授权并传输数据?
不幸的是没有。
官方 Google BigQuery 数据传输服务在整个文档中仅提及 AWS 访问密钥:
访问密钥 ID 和秘密访问密钥用于代表您访问 Amazon S3 数据。作为最佳实践,请专门为 Amazon S3 传输创建唯一的访问密钥 ID 和秘密访问密钥,以提供对 BigQuery Data Transfer Service 的最小访问权限。有关管理访问密钥的信息,请参阅 AWS 一般参考文档。
Google 文档的讽刺之处在于,虽然它提到了最佳实践并链接到官方 AWS 文档,但它实际上并不认可最佳实践并忽略了 AWS 提到的内容:
我们建议您使用临时访问密钥而不是长期访问密钥,如上一节所述。
重要
除非没有其他选择,否则我们强烈建议您不要为您的(根)用户创建长期访问密钥。如果恶意用户获得了您的(根)用户访问密钥的访问权限,他们就可以完全接管您的帐户。
您有几个选择:
手动挂钩双方(即链接各种 SDK 和/或 API)
找到一个与 BigQuery 兼容的替代服务,它的作用就是这样的
接受长期访问密钥的风险。
总而言之,谷歌在这里没有遵循安全最佳实践,而你——作为消费者——将不得不承担风险。
仅供参考,这是一个功能请求:https://issuetracker.google.com/issues/259020746