存储库中的 Cloud Build yaml 和绕过权限的可能性?
Cloud Build yaml in repository and potential for bypassing permissions?
假设我的存储库中有以下 cloudbuild.yaml
,并且在设置期间通过手动触发器引用它(即它在存储库中查找 cloudbuild.yaml
)
# repo/main/cloudbuild.yaml
steps:
- id: 'Safe step'
name: 'gcr.io/cloud-builders/git'
entrypoint: '/bin/bash'
args: ['echo', 'hello world']
假设用户可以根据需要手动运行触发器。然而,云构建服务帐户也是高性能的,并且可以访问某些可能具有破坏性的权限。这对于需要批准的其他手动触发器是必需的。
用户能否创建一个分支,编辑 cloudbuild.yaml
来做一些破坏性的事情,将他的分支向上推,然后当他们转到 运行 触发器时,他们只是引用他们的分支而不是绕过控制能够编辑触发器?
# repo/branch-xyz/cloudbuild.yaml
steps:
- id: 'Safe step'
name: 'gcr.io/cloud-builders/git'
entrypoint: '/bin/bash'
args: ['do', 'something', 'destructive']
作为社区 Wiki 发布,因为这是基于@bhito 的评论:
这取决于触发器的配置方式。
根据您的描述,它似乎与所有分支都匹配,并且正在使用的服务帐户是 Cloud Build 的默认帐户。使用该设置,您所描述的是正确的,触发器将执行 cloudbuild.yaml 定义的任何内容。
您应该能够通过按分支过滤触发器、限制服务帐户权限或使用自定义权限或同时使用这两个选项来限制该行为。通过分支过滤和自定义服务帐户的组合,您可以进行细粒度的访问控制。
假设我的存储库中有以下 cloudbuild.yaml
,并且在设置期间通过手动触发器引用它(即它在存储库中查找 cloudbuild.yaml
)
# repo/main/cloudbuild.yaml
steps:
- id: 'Safe step'
name: 'gcr.io/cloud-builders/git'
entrypoint: '/bin/bash'
args: ['echo', 'hello world']
假设用户可以根据需要手动运行触发器。然而,云构建服务帐户也是高性能的,并且可以访问某些可能具有破坏性的权限。这对于需要批准的其他手动触发器是必需的。
用户能否创建一个分支,编辑 cloudbuild.yaml
来做一些破坏性的事情,将他的分支向上推,然后当他们转到 运行 触发器时,他们只是引用他们的分支而不是绕过控制能够编辑触发器?
# repo/branch-xyz/cloudbuild.yaml
steps:
- id: 'Safe step'
name: 'gcr.io/cloud-builders/git'
entrypoint: '/bin/bash'
args: ['do', 'something', 'destructive']
作为社区 Wiki 发布,因为这是基于@bhito 的评论:
这取决于触发器的配置方式。
根据您的描述,它似乎与所有分支都匹配,并且正在使用的服务帐户是 Cloud Build 的默认帐户。使用该设置,您所描述的是正确的,触发器将执行 cloudbuild.yaml 定义的任何内容。
您应该能够通过按分支过滤触发器、限制服务帐户权限或使用自定义权限或同时使用这两个选项来限制该行为。通过分支过滤和自定义服务帐户的组合,您可以进行细粒度的访问控制。