权限被拒绝 - GCP 云资源管理器 setIamPolicy

Posted

技术标签:

【中文标题】权限被拒绝 - GCP 云资源管理器 setIamPolicy【英文标题】:Permission Denied - GCP Cloud Resource Manager setIamPolicy 【发布时间】:2019-04-09 07:51:34 【问题描述】:

在运行部署管理器以创建部署时,我从 GCP 收到 403 PERMISSION_DENIED 响应,该部署创建服务帐户并使用云资源管理器 API 为其设置 IAM 策略。这是 setIamPolicy 模板:


        'resources': [
            
                'name': context.env['name'],
                'action': 'gcp-types/cloudresourcemanager-v1:cloudresourcemanager.projects.setIamPolicy',
                'properties': 
                    'resource': context.properties['resource'],
                    'policy': 
                        'bindings': context.properties['bindings']
                    
                
            
        ]
    

来自 GCP 的回应:

'"ResourceType":"gcp-types/cloudresourcemanager-v1:cloudresourcemanager.projects.setIamPolicy","ResourceErrorCode":"403","ResourceErrorMessage":"code":403,"message":"The 调用者没有权限","status":"PERMISSION_DENIED","statusMessage":"Forbidden","re​​questPath":"https://cloudresourcemanager.googleapis.com/v1/projects/project-name@project-name.iam.gserviceaccount.com:setIamPolicy","httpMethod":"POST"'

仅供参考:机器人帐户 (12345@cloudservices.gserviceaccount.com) 在 IAM 中被授予项目所有者权限。

【问题讨论】:

你从哪里运行这个机器/设备?项目所有者权限不一定等于部署权限。您需要将该角色添加到该帐户。 【参考方案1】:

正确的做法是:

    
        # Set the IAM policy by patching the existing policy with the
        # config contents.
        'name': policy_add_name,
        'action': 'gcp-types/cloudresourcemanager-v1:cloudresourcemanager.projects.setIamPolicy',
        'properties':
            
                'resource': project_id,
                'policy': '$(ref.' + policy_get_name + ')',
                'gcpIamPolicyPatch': 
                    'add': policies_to_add,
                
            
    

【讨论】:

以上是关于权限被拒绝 - GCP 云资源管理器 setIamPolicy的主要内容,如果未能解决你的问题,请参考以下文章

创建 GCP 服务帐户密钥时权限被拒绝

调用 GCP App 引擎 REST API 时权限被拒绝

GCP 等效于 aws 策略中的“拒绝”权限

Android 模拟器设备文件资源管理器中的权限被拒绝

应用使用权限被拒绝如何解决

CloudScheduler 403 创建时权限被拒绝