# GCP - Cloud Scheduler Enum

{{#include ../../../banners/hacktricks-training.md}}

## 基本情報

Google Cloud Schedulerは、任意のジョブ（バッチ、ビッグデータジョブ、クラウドインフラストラクチャ操作など）を固定の時間、日付、または間隔で実行できる完全に管理された**cronジョブサービス**です。これはGoogle Cloudサービスと統合されており、**定期的なスケジュールでの更新やバッチ処理など、さまざまなタスクを自動化する方法を提供します**。

攻撃的な観点から見るとこれは素晴らしいことのように思えますが、実際にはそれほど興味深いものではありません。なぜなら、このサービスは特定の時間に特定の単純なアクションをスケジュールすることしか許可せず、任意のコードを実行することはできないからです。

この執筆時点で、このサービスがスケジュールを許可するアクションは次のとおりです：

<figure><img src="../../../images/image (347).png" alt="" width="563"><figcaption></figcaption></figure>

- **HTTP**: リクエストのヘッダーとボディを定義してHTTPリクエストを送信します。
- **Pub/Sub**: 特定のトピックにメッセージを送信します。
- **App Engine HTTP**: App Engineで構築されたアプリにHTTPリクエストを送信します。
- **Workflows**: GCP Workflowを呼び出します。

## サービスアカウント

サービスアカウントは、各スケジューラによって常に必要なわけではありません。**Pub/Sub**および**App Engine HTTP**タイプは、サービスアカウントを必要としません。**Workflow**はサービスアカウントを必要としますが、単にワークフローを呼び出すだけです。\
最後に、通常のHTTPタイプはサービスアカウントを必要としませんが、ワークフローによって何らかの認証が必要であることを示し、送信されるHTTPリクエストに**OAuthトークンまたはOIDCトークンを追加する**ことが可能です。

> [!CAUTION]
> したがって、**HTTPタイプ**を悪用してサービスアカウントから**OIDC**トークンを盗んだり、**OAuth**トークンを悪用したりすることが可能です。特権昇格ページでの詳細。

OAuthトークンのスコープを制限することは可能ですが、デフォルトでは`cloud-platform`になります。

## 列挙
```bash
# Get schedulers in a location
gcloud scheduler jobs list --location us-central1

# Get information of an specific scheduler
gcloud scheduler jobs describe --location us-central1 <scheduler-name>
```
## 権限昇格

{{#ref}}
../gcp-privilege-escalation/gcp-cloudscheduler-privesc.md
{{#endref}}

{{#include ../../../banners/hacktricks-training.md}}
