我有一个服务帐号,它已分配给我的 GCE 实例并被列为活动状态,我可以通过gcloud auth list
在任何实例上运行来验证这一点。该服务帐号目前拥有对一些服务的 Google Cloud API 访问权限。我想要做的是更新此访问权限,以便服务帐号可以从 Google Cloud DNS 读取区域/记录集信息。
我查看了有关服务帐户及其访问权限的文档,并尝试编辑 GCP 中的服务帐户权限,但我没有找到直接添加对 Google Cloud DNS 或 Google Cloud Networking(包括 DNS)的访问权限的方法。可以将服务帐户权限设置为我自己的用户帐户并分配所有者/编辑角色,但我希望仅授予服务帐户对 Google Cloud DNS 所需的额外访问权限。
任何帮助或见解都将非常感谢,谢谢!
答案1
我相信最终您将能够使用 IAM 权限来实现这一点。目前,我没有看到在IAM 控制台。为了授权对 Cloud DNS 的请求,您必须使用本文。
IE
https://www.googleapis.com/auth/ndev.clouddns.readwrite
https://cloud.google.com/dns/api/authorization
如果您使用默认服务帐户,必须在范围标志中创建 VM 期间定义范围。
IE
gcloud compute --project "Myproject" instances create "instance-8" --zone "us-central1-f" --machine-type "n1-standard-1" --network "default" --maintenance-policy "MIGRATE" --scopes default="https://www.googleapis.com/auth/devstorage.full_control","https://www.googleapis.com/auth/ndev.clouddns.readwrite" --image "/debian-cloud/debian-8-jessie-v20161020" --boot-disk-size "10" --boot-disk-type "pd-standard" --boot-disk-device-name "instance-8"
如果您在创建虚拟机时将其关联到非默认服务帐户,则可以添加编辑或所有者在 IAM 控制台中授予该账户的权限。不过,这可能会提供比您正在寻找的更广泛的范围。
答案2
- 在 Google 控制台中,导航到“IAM 和管理”部分
- 在左侧导航栏上,单击“IAM”
- 在右侧找到您的服务帐户。
- 单击“角色”列中的下拉菜单,为服务帐户选择一个角色。
答案3
我在访问存储 API 时遇到了麻烦,所以我意识到问题出在范围上。经过一番研究,我找到了可以更改的地方。
您必须编辑当前“服务帐户”的“范围”,它已在创建虚拟机时设置,并且默认值非常严格:
- 转到 Compute Engine/VM 实例
- 找到您的虚拟机并选择它(复选框)
- 确保它已停止(否则单击“停止”)
- 点击其名称
- 点击“编辑”
- 向下滚动直到找到“服务帐户”
- 它应该说“默认范围”,更改为“允许完全访问所有云 API”
就是这样!