如何在谷歌云中使用谷歌服务帐户登录



我创建了一个服务帐户并生成了一个json密钥。我想执行一个获取请求来获取一个项目。我使用https://cloud.google.com/dns/docs/reference/v1/projects/get

public static Dns createDnsService() throws IOException, GeneralSecurityException {
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
String jsonPath = "testdns-320312-136950c1074b.json";
FileInputStream stream = new FileInputStream(jsonPath);
GoogleCredential credential = GoogleCredential.fromStream(stream);
if (credential.createScopedRequired()) {
credential =credential.createScoped(Arrays.asList("https://www.googleapis.com/auth/cloud-platform"));
}
return new Dns.Builder(httpTransport, jsonFactory, credential)
.setApplicationName("Google-DnsSample/0.1")
.build();
}

当执行代码时,我得到错误:

Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
GET https://dns.googleapis.com/dns/v1/projects/testdns-320312
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Forbidden",
"reason" : "forbidden"
} ],
"message" : "Forbidden"
}

@John Hanley是对的——你缺乏适当的权限。

如果您在创建服务帐户后没有为其分配任何角色,则不能使用它执行任何操作

您需要roles/dns.admin角色才能管理项目中的所有DNS记录。

您可以通过以下步骤做到这一点:

  • 在谷歌云控制台中,转到IAM页面
  • 转到IAM页面
  • 从顶部下拉菜单中选择您的项目
  • 单击"添加">
  • 在"新成员"中,输入新成员的电子邮件地址
  • 从下拉菜单中选择所需的角色
  • 单击"保存">
  • 请验证该成员是否与您授予的角色一起列出

将DNS管理员角色授予此帐户将是控制项目的云DNS部分的最简单方法。如果你需要更细粒度/有限的访问权限,那么你可以创建你的自定义角色,并将其分配给这个帐户,而不是基本帐户。

以下是您可能会发现有用的有关授予GCP角色的更多信息。

这里也回答了非常相似的问题。

最新更新