3

logging.v2.sink使用 Google Cloud 部署管理器进行部署,但是部署因权限被拒绝而失败。

该问题也发生在Google Cloud Deployment Manager 的这个 logsink 示例中

结果如下:

- code: RESOURCE_ERROR
  location: /deployments/my-project-id/resources/sink
  message: 
{   
    "ResourceType": "logging.v2.sink",
    "ResourceErrorCode": "403",
    "ResourceErrorMessage": {
        "code": 403,
        "message": "The\n    caller does not have permission",
        "status": "PERMISSION_DENIED",
        "statusMessage": "Forbidden",
        "requestPath": "https://logging.googleapis.com/v2/projects/my-project-id/sinks",
        "httpMethod": "POST"   
    }
}

部署由所有者角色执行,此外我可以使用 cli 创建日志接收器。 gcloud安装在本地是最新的(v217.0.0)。

为什么会出现这个问题?

4

2 回答 2

8

我误解了云部署管理器的权限。我注意到部署模板和创建资源的帐户不同(https://cloud.google.com/deployment-manager/docs/access-control)。

当我将 Logging Admin 角色添加到服务帐户时,部署成功。

[PROJECT_NUMBER]@cloudservices.gserviceaccount.com

于 2018-09-25T04:02:34.873 回答
2

遇到同样的问题。详细说明上面的答案:

部署管理器用于[PROJECT_NUMBER]@cloudservices.gserviceaccount.com代表您创建资源。您可以检查此服务帐户的策略绑定:

gcloud projects get-iam-policy [PROJECT_NUMBER]

该服务帐户roles/editor默认在项目上,该项目具有以下记录接收器的策略:

- logging.sinks.get
- logging.sinks.list

您可以使用以下命令确认这一点: gcloud iam roles describe roles/editor

roles/logging.configWriter具有 logging.sinks.{list, create, get, update, delete} 权限,因此您可以向项目添加新的策略绑定,然后重试:

gcloud projects add-iam-policy-binding secstate-gcp-test02 \
--member serviceAccount:[PROJECT_ID]@cloudservices.gserviceaccount.com \
--role roles/logging.configWriter
于 2020-07-21T01:15:56.253 回答