GCP默认服务账号与自定义服务账号的差异及VM多账号关联问题
GCP服务账号相关问题解答
一、默认服务账号与自定义服务账号的核心区别
- 生成逻辑不同:默认服务账号是GCP在启用对应服务时自动创建的,例如Compute Engine默认服务账号格式为
[PROJECT_NUMBER]-compute@developer.gserviceaccount.com,无需用户手动创建;自定义服务账号由用户主动在IAM控制台创建,命名、生命周期完全由用户管控。 - 初始权限不同:Compute Engine默认服务账号默认被授予项目级
Editor角色,权限覆盖范围极广,后续可手动调整;自定义服务账号创建时无任何默认权限,所有权限都需要用户按需手动绑定,更适配最小权限安全原则。 - 使用场景不同:默认服务账号适合快速测试、通用非敏感场景使用;自定义服务账号可以按业务场景、工作负载粒度单独配置权限,更适合生产环境的细粒度权限管控,避免权限溢出风险。
二、单个VM是否可以关联多个服务账号
单个GCP Compute Engine VM同一时间仅能绑定1个实际的服务账号实体
你在VM内执行curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" -H "Metadata-Flavor: Google"看到的两个条目,并非代表绑定了两个服务账号:其中default是GCP提供的固定别名,永远指向当前VM绑定的实际服务账号,你给VM绑定my-service-account@my-project.iam.gserviceaccount.com后,default别名就自动指向该自定义账号,因此你观察到的权限同步属于正常现象,本质上两个路径对应同一个服务账号实体。
GCP网页控制台仅展示用户实际绑定的服务账号实体,不会展示default别名,因此只会显示1个绑定账号,属于预期表现。
如果VM内的多个应用需要使用不同权限的服务身份,可以手动将多个服务账号的密钥文件导入VM内,应用调用GCP API时指定对应密钥即可实现多身份访问,无需给VM绑定多个服务账号。
内容的提问来源于stack exchange,提问作者Sanvar Inamdar
相关产品推荐
相关产品推荐

