【问题标题】:What is the difference between Service account, Roles and Access Scopes in GCP?GCP 中的服务帐户、角色和访问范围有什么区别?
【发布时间】:2020-10-27 17:17:05
【问题描述】:

我正在使用以下 python 方法创建 gcp 实例:

compute.instances().insert(project=project, zone=zonee, body=config).execute() 

在配置变量中,我添加了 serviceAccount 部分:

 "serviceAccounts": [
                 {
            "email": SA-email,
            "scopes": [
               "https://www.googleapis.com/auth/devstorage.read_only",
               "https://www.googleapis.com/auth/logging.write",
               "https://www.googleapis.com/auth/monitoring.write",
               "https://www.googleapis.com/auth/service.management.readonly",
               "https://www.googleapis.com/auth/servicecontrol"
               "https://www.googleapis.com/auth/trace.append",
               "https://www.googleapis.com/auth/compute",
               "https://www.googleapis.com/auth/cloud-platform"
         ]
    }
    ]

我不确定我应该为这个 SA 电子邮件分配什么角色。如果我提到访问范围,是否意味着必须将这些角色分配给 SA 电子邮件?

当我运行上面的代码时。实例创建失败。

我对 SA、角色和范围感到很困惑。

我应该检查什么属性来解决上述问题。

【问题讨论】:

  • 请在您获得授权的地方出示您的代码。 OAuth(范围)和服务帐户(角色)之间存在差异。正确答案取决于您使用的授权类型。
  • 同意约翰·汉利。

标签: google-cloud-platform google-iam


【解决方案1】:

服务帐户是属于您的应用程序或虚拟机而不是个人最终用户的特殊 Google 帐户。 Service Account 的作用类似于与应用程序关联的身份,应用程序使用服务帐户在应用程序和 GCP 服务之间进行身份验证,这样用户就不会直接参与1

服务帐户非常独特,除了作为身份之外,服务帐户也是附加了 IAM 策略的资源,这些策略决定了谁可以使用此服务帐户,因此它既是身份又是资源。

例如,如果您授予 Bob 具有服务帐户用户角色的计算实例管理员角色,他可以创建和管理使用服务帐户的计算引擎实例。将 IAM 角色授予该服务帐户后,您可以将该服务帐户分配给一个或多个新虚拟机实例,现在 Bob 将拥有这些实例的管理员访问权限。总而言之,用户帐号必须被授予服务帐号用户角色,并且服务帐号必须被授予访问 GCP 资源的角色。

服务帐户ACCESS SCOPES 是为您的实例指定权限的传统方法,它们用于替代 IAM 角色。它们专门用于默认或基于启用的 API 自动创建的服务帐户。在 IAM 角色存在之前,访问范围是向服务帐户授予权限的唯一方法,尽管它们现在不是授予权限的主要方式,但在将实例配置为作为服务运行时,您仍然必须设置服务帐户访问范围。帐户。但是,当您使用自定义服务帐户时,您将不会使用访问范围,而是使用 IAM 角色。因此,当您为计算实例使用默认服务帐户时,它将默认使用范围而不是 IAM 角色。

对于您的配置变量,您可以从完整列表中选择访问范围,或者您可以创建自定义服务帐户并分配 IAM 角色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 2021-05-31
    • 2019-01-01
    • 2015-02-26
    • 1970-01-01
    相关资源
    最近更新 更多