GCP - Cloud Build Enum
基本情報
Google Cloud Buildは、ソースコードリポジトリと統合し、幅広いプログラミング言語をサポートする、ソフトウェアビルドとリリースプロセスを自動化するマネージドCI/CDプラットフォームです。開発者がコードを自動的にビルド、テスト、デプロイできるようにし、ビルドステップやワークフローをカスタマイズできます。
各Cloud Buildトリガーは、Cloudリポジトリに関連付けられているか、外部リポジトリ(Github、Bitbucket、Gitlab)と直接接続されています。
ここからまたはCloudリポジトリから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
SA権限
サービスアカウントにはcloud-platform
スコープがあり、すべての特権を使用できます。SAが指定されていない場合(submitを行うときのように)、デフォルトのSA <proj-number>@cloudbuild.gserviceaccount.com
が使用されます。
デフォルトでは権限が与えられていませんが、簡単に権限を与えることができます:
承認
Cloud Buildを構成して、ビルドの実行に承認が必要なようにすることができます(デフォルトでは無効)。
PR承認
トリガーがPRの場合、誰でもパブリックリポジトリにPRを行うことができるため、どのPRでもトリガーの実行を許可するのは非常に危険です。そのため、デフォルトでは、実行は所有者と共同作業者に対してのみ自動的に行われ、他のユーザーのPRでトリガーを実行するには、所有者または共同作業者が/gcbrun
とコメントする必要があります。
接続とリポジトリ
接続は以下で作成できます:
GitHub: Githubトークンを取得するためにOAuthプロンプトが表示され、Secret Manager内に保存される
GitHub Enterprise: GithubAppをインストールするように求められます。GitHub Enterpriseホストからの認証トークンが作成され、このプロジェクト内にSecret Managerシークレットとして保存されます。
GitLab / Enterprise: APIアクセストークンとRead APIアクセストークンを提供する必要があり、Secret Managerに保存されます。
接続が生成されると、Githubアカウントがアクセス権を持つリポジトリをリンクすることができます。
このオプションは、次のボタンを介して利用できます:
この方法で接続されたリポジトリは、2世代を使用するトリガーでのみ利用可能です。
リポジトリの接続
これは**接続
とは異なります。これにより、異なる方法でGithubまたはBitbucket**リポジトリにアクセスできますが、接続オブジェクトは生成されません。ただし、リポジトリオブジェクト(1世代)は生成されます。
このオプションは、次のボタンを介して利用できます:
ストレージ
時々、Cloud Buildはトリガーのためにファイルを保存するための新しいストレージを生成します。これは、GCPが提供する例で発生します。
シェルを取得
列挙
ビルド構成とログに機密情報が含まれている可能性があります。
特権昇格
pageGCP - Cloudbuild Privesc認証されていないアクセス
pageGCP - Cloud Build Unauthenticated Enum攻撃後の処理
pageGCP - Cloud Build Post Exploitation最終更新