限制服务帐号的使用

Resource Manager 提供了多种可在组织政策中使用的限制条件,用以约束 Cloud Identity and Access Management 服务帐号的使用。

在您设置此类限制条件后,它们将被应用于今后服务帐号的创建和修改。这些限制条件不具有回溯性,不会影响之前创建和配置的服务帐号。

停用服务帐号创建功能

您可以使用 iam.disableServiceAccountCreation 布尔值限制条件来停用创建新服务帐号的功能。这样您就可以集中管理服务帐号,同时不会限制开发者对项目拥有的其他权限。

停用服务帐号密钥创建功能

您可以使用 iam.disableServiceAccountKeyCreation 布尔值限制条件来停用创建新外部服务帐号密钥的功能。这样您就可以控制服务帐号的非托管式长期凭据的使用。设置此限制条件后,便无法为受该限制条件影响的项目中的服务帐号创建用户管理的凭据。

设置政策

服务帐号限制条件是一种布尔值限制条件

您必须具有修改组织政策的权限才能设置该限制条件。例如,resourcemanager.organizationAdmin 角色具有设置组织政策限制条件的权限。如需详细了解如何在组织级层管理政策,请参阅使用限制条件页面。

Console

要设置包含相关限制条件的组织政策以停用服务帐号密钥创建功能,请执行以下操作:

  1. 转到 Google Cloud Console 中的组织政策页面。

    转到“组织政策”页面

  2. 在页面顶部,点击组织下拉列表,然后选择您的组织。
  3. 点击禁止创建服务帐号或禁止创建服务帐号密钥。
  4. 点击修改按钮。
  5. 应用对象下,选择自定义。
  6. 实施下,选择开启。
  7. 点击保存。此时将显示一条通知,确认政策已更新。

gcloud

您可以通过 gcloud 命令行工具设置政策。

要停用服务帐号创建功能,请运行以下命令:

gcloud alpha resource-manager org-policies enable-enforce \
    --organization 'ORGANIZATION_ID' \
    iam.disableServiceAccountCreation

要禁止创建服务帐号密钥,请运行以下命令:

gcloud alpha resource-manager org-policies enable-enforce \
    --organization 'ORGANIZATION_ID' \
    iam.disableServiceAccountKeyCreation

要停用政策,您可以发出相同命令,但需要搭配

disable-enforce
命令。

如需了解如何在组织政策中使用限制条件,请参阅使用限制条件

政策示例

以下代码段展示了一项组织政策,其中包含禁止创建服务帐号的限制条件:

resource: "organizations/842463781240"
policy {
  constraint: "constraints/iam.disableServiceAccountCreation"
  etag: "\a\005L\252\122\321\946\334"
  boolean_policy {
  enforced: true
  }
}

以下代码段展示的组织政策包含用于停用服务帐号密钥创建功能的限制条件:

resource: "organizations/842463781240"
policy {
  constraint: "constraints/iam.disableServiceAccountKeyCreation"
  etag: "\a\005L\252\122\321\946\334"
  boolean_policy {
  enforced: true
  }
}

限制服务帐号密钥上传功能

您可以使用 iam.allowedPublicCertificateTrustedRootCA 列表限制条件来限制可上传到服务帐号的公钥。通过此限制条件,您可以定义一组可信赖的证书授权机构,以便从中将已颁发的公共证书上传到 Cloud Identity and Access Management 服务帐号。此外,您还可以通过将此列表限制条件设置为 Deny All 来完全停用服务帐号密钥上传功能。

设置政策

服务帐号上传限制条件是一种列表限制条件

您必须具有修改组织政策的权限才能设置该限制条件。例如,resourcemanager.organizationAdmin 角色具有设置组织政策限制条件的权限。如需详细了解如何在组织级层管理政策,请参阅使用限制条件

Console

要设置包含服务帐号密钥上传限制条件的组织政策,请执行以下操作:

  1. 转到 Google Cloud Console 中的组织政策页面。

    转到“组织政策”页面

  2. 点击页面顶部的组织下拉列表,然后选择您的组织。
  3. 点击定义允许的根证书授权机构
  4. 点击修改按钮。
  5. 应用对象下,选择自定义。
  6. 政策值下,选择自定义。
  7. 自定义值文本框中输入证书授权机构
    1. 要输入多个值,请点击新政策值,然后在每行输入一个证书授权机构。
  8. 点击保存。此时将显示一条通知,确认政策已更新。

gcloud

您可以通过 gcloud 命令行工具设置政策。

要针对服务帐号密钥上传功能设置允许的证书授权机构,请运行以下命令:

gcloud alpha resource-manager org-policies allow \
    iam.allowedPublicCertificateTrustedRootCA \
    'ALLOWED_VALUE' \
    --organization 'ORGANIZATION_ID' \

要设置不允许的证书授权机构,您可以搭配以下命令发出相同的命令:

gcloud alpha resource-manager org-policies deny \
    iam.allowedPublicCertificateTrustedRootCA \
    'DENIED_VALUE' \
    --organization 'ORGANIZATION_ID' \

如需了解如何在组织政策中使用限制条件,请参阅使用限制条件

组织政策示例

以下代码段展示了包含允许的证书授权机构的组织政策:

resource: "organizations/842463781240"
policy {
  constraint: "constraints/iam.allowedPublicCertificateTrustedRootCA"
  etag: "\a\005L\252\122\321\946\334"
  list_policy {
  allowed_values: "issuer=C = AU, ST = Some-State, O = Internet Widgits Pty Ltd"
  }
}

从公钥证书中检索证书授权机构

您可以使用以下命令获取公钥证书的证书授权机构:

openssl x509 -noout -in $PUBLIC_KEY_CERT_PATH -issuer

请注意,此命令仅适用于采用 X509 PEM 格式的公钥证书。

错误消息

停用服务帐号创建功能

如果您实施了 iam.disableServiceAccountCreation,则创建服务帐号的操作将失败,并显示以下错误:

FAILED_PRECONDITION: Service account creation is not allowed on this project.

停用服务帐号密钥创建功能

如果您实施了 iam.disableServiceAccountKeyCreation,则创建服务帐号的操作将失败,并显示以下错误:

FAILED_PRECONDITION: Key creation is not allowed on this service account.

排查已知问题

默认服务帐号

应用 iam.disableServiceAccountCreation 限制条件后,系统将阻止在相关项目中创建服务帐号。此限制也会影响到 Google Cloud 服务,这些服务在启用时会自动在项目中创建默认服务帐号,例如:

  • Compute Engine
  • GKE
  • App Engine
  • Dataflow

在应用 iam.disableServiceAccountCreation 限制条件后,由于系统无法为这些服务创建默认服务帐号,尝试启用这些服务的操作将会失败。

要解决此问题,请执行以下操作:

  1. 暂时移除 iam.disableServiceAccountCreation 限制条件。
  2. 启用所需服务。
  3. 创建任何其他所需的服务帐号。
  4. 最后,重新应用该限制条件。