GCP - Cloud Build Enum
Last updated
Last updated
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
Google Cloud Build 是一个托管的 CI/CD 平台,自动化软件构建和发布过程,集成了源代码库并支持多种编程语言。它允许开发人员自动构建、测试和部署代码,同时提供自定义构建步骤和工作流的灵活性。
每个 Cloud Build 触发器与 Cloud Repository 相关或直接连接到外部仓库(Github、Bitbucket 和 Gitlab)。
我无法从这里或 Cloud Repositories 中窃取 Github/Bitbucket 令牌,因为当仓库被下载时,它是通过 https://source.cloud.google.com/ URL 访问的,而 Github 并不是由客户端访问的。
Cloud Build 可以在以下情况下被触发:
推送到分支:指定分支
推送新标签:指定标签
拉取请求:指定接收 PR 的分支
手动调用
Pub/Sub 消息:指定主题
Webhook 事件:将暴露一个 HTTPS URL,请求必须使用密钥进行身份验证
有 3 个选项:
一个 yaml/json 指定要执行的命令。通常是:/cloudbuild.yaml
只能在 Web 控制台和 CLI 中“内联”指定的一个
最常见的选项
与未认证访问相关
一个 Dockerfile 进行构建
一个 Buildpack 进行构建
服务账户具有 cloud-platform
范围,因此可以使用所有权限。如果未指定 SA(例如在提交时),将使用默认 SA <proj-number>@cloudbuild.gserviceaccount.com
。
默认情况下不授予权限,但很容易授予一些:
可以配置 Cloud Build 要求构建执行的审批(默认情况下禁用)。
当触发器是 PR 时,因为任何人都可以对公共仓库进行 PR,所以仅仅允许执行任何 PR 的触发器将非常危险。因此,默认情况下,执行将仅对所有者和合作者自动进行,为了使用其他用户的 PR 执行触发器,所有者或合作者必须评论 /gcbrun
。
可以通过以下方式创建连接:
GitHub:将显示一个 OAuth 提示,要求权限以获取 Github 令牌,该令牌将存储在Secret Manager中。
GitHub 企业版:将要求安装一个GithubApp。将创建并存储来自您的 GitHub 企业主机的身份验证令牌,作为此项目的 Secret Manager 秘密。
GitLab / 企业版:您需要提供 API 访问令牌和读取 API 访问令牌,这些将存储在Secret Manager中。
一旦生成连接,您可以使用它来链接 Github 账户有访问权限的仓库。
此选项可通过按钮访问:
请注意,通过此方法连接的仓库仅在使用第二代的触发器中可用。
这与**连接
不同。这允许不同的方式获取对Github 或 Bitbucket** 仓库的访问,但不生成连接对象,而是生成一个仓库对象(第一代)。
此选项可通过按钮访问:
有时 Cloud Build 将生成一个新的存储以存储触发器的文件。例如,在 GCP 提供的示例中:
一个名为 security-devbox_cloudbuild 的存储桶被创建用来存储一个包含要使用的文件的 .tgz
。
安装 gcloud 在 cloud build 中:
您可以在构建配置和日志中找到敏感信息。
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)