Google Cloud服务账号执行reset-windows-password命令报错求权限指导
问题描述
在Google Cloud中使用gcloud compute reset-windows-password命令时遇到权限相关问题:
- 使用主账号执行以下命令可正常运行:
gcloud compute reset-windows-password my-instance --zone=my-zone --project=my-project
- 使用服务账号执行同一命令时,报错如下:
ERROR: (gcloud.compute.reset-windows-password) Did not receive password in a reasonable amount of time. Please try again. If this persists, confirm that the clock on your local system is correct. Current UTC time on your system: [2023-08-21 13:11:24.059083]
已验证网络连接和系统时间均正常,怀疑是服务账号权限不足导致,但不知如何排查。
【更新】服务账号的项目级权限配置如下:
- Storage Admin
- Compute Instance Admin (v1)
- Service Account User
所需权限及排查方案
gcloud compute reset-windows-password的执行流程涉及修改实例元数据、读取实例串口输出等操作,对应的核心权限及排查步骤如下:
核心权限要求
执行该命令的服务账号至少需要以下权限:
compute.instances.get:获取目标Windows实例的基础信息compute.instances.setMetadata:向实例注入用于生成密码的临时公钥compute.instances.getSerialPortOutput:读取实例串口输出以获取加密后的密码(这是最容易引发超时错误的环节)iam.serviceAccounts.actAs:若目标实例关联了自定义服务账号,执行命令的服务账号需要拥有该权限(对应Service Account User角色),以完成密码生成流程中的身份模拟
排查步骤
验证串口输出权限
用服务账号执行以下命令,测试是否能读取实例串口输出:gcloud compute instances get-serial-port-output my-instance --zone=my-zone --project=my-project若此命令报错,说明服务账号缺少
compute.instances.getSerialPortOutput权限,需补全。检查实例串口状态
用主账号执行上述串口输出命令,确认输出中存在Windows密码生成相关的日志(如包含"password"的条目),排除实例自身运行异常导致无法生成密码的情况。确认实例服务账号授权
若目标实例使用了自定义服务账号,需确保执行命令的服务账号被授予该实例服务账号的Service Account User角色(即拥有iam.serviceAccounts.actAs权限)。排查组织政策限制
检查项目或组织是否存在限制实例元数据修改、串口输出读取的组织政策,这类政策也可能导致命令超时。
内容的提问来源于stack exchange,提问作者El_Merendero
相关产品推荐
相关产品推荐

