Google Cloud Deployment Manager无法使用权​​限被拒绝的“ logging.v2.sink”创建部署

时间:2018-09-21 10:39:19

标签: google-cloud-pubsub google-cloud-stackdriver google-deployment-manager

我使用Google Cloud Deployment Manager部署了logging.v2.sink,但是由于拒绝权限而导致部署失败。

this logsink example of Google Cloud Deployment Manager中也发生了此问题。

结果如下:

- 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)。

为什么会出现此问题?

2 个答案:

答案 0 :(得分:4)

我误解了Cloud Deployment Manager的权限。 我注意到部署模板和创建资源的过程不同(https://cloud.google.com/deployment-manager/docs/access-control)。

当我向服务帐户添加权限时,部署成功。

[PROJECT_NUMBER]@cloudservices.gserviceaccount.com

答案 1 :(得分:2)

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

Deployment Manager使用[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。{列出,创建,获取,更新,删除}权限,因此您可以向项目添加新的策略绑定,然后重试:

gcloud projects add-iam-policy-binding secstate-gcp-test02 \
--member serviceAccount:[PROJECT_ID]@cloudservices.gserviceaccount.com \
--role roles/logging.configWriter