Dataflow如何对指定的工作者服务账号进行身份认证?
Dataflow工作者服务账号的身份认证机制
你提交任务时使用的参数:
--project=projectA --serviceAccount=my-service-account-name@projectA.iam.gserviceaccount.com
Dataflow完全不需要你手动提供工作者服务账号的密钥或JSON凭据,它是通过Google Cloud内置的元数据服务器自动完成身份认证的,整个流程都是托管式的,具体逻辑如下:
- 任务提交阶段:你本地用来提交Dataflow任务的账号,只要拥有足够权限(比如
roles/dataflow.admin权限,同时具备对指定工作者服务账号的授权能力),Dataflow服务会在后台自动完成:- 校验你指定的
my-service-account-name@projectA.iam.gserviceaccount.com确实属于项目A - 将这个服务账号绑定到即将创建的Dataflow工作者VM实例上
- 校验你指定的
- 工作者运行阶段:当Dataflow启动工作者VM后,VM会自动从Google Cloud元数据服务器获取短期有效的临时身份凭证,这些凭证会自动刷新,全程不需要你手动配置任何密钥文件
- 账号分离逻辑:你提交任务用的账号和工作者服务账号属于不同角色是正常的——提交账号负责发起任务、创建相关资源,工作者账号则是给运行任务的VM提供操作权限,只要提交账号有权限指定该工作者账号即可
这种设计是Google Cloud的默认安全机制,目的是避免手动管理服务账号密钥带来的泄露风险,同时简化托管服务的身份认证流程。
内容的提问来源于stack exchange,提问作者Tomoya Ishizuka
相关产品推荐
相关产品推荐

