mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-05 01:07:11 -08:00
Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/
This commit is contained in:
@@ -12,8 +12,8 @@ AWS Step Functionsは、複数のAWSサービスをサーバーレスワーク
|
||||
|
||||
AWS Step Functionsは、2種類の**状態マシンワークフロー**を提供します:StandardとExpress。
|
||||
|
||||
- **Standard Workflow**:このデフォルトのワークフロータイプは、長時間実行される耐久性があり、監査可能なプロセス向けに設計されています。**exactly-once execution**をサポートし、リトライが指定されない限り、タスクは一度だけ実行されることを保証します。詳細な実行履歴が必要なワークフローに最適で、最大1年間実行できます。
|
||||
- **Express Workflow**:このタイプは、高ボリュームで短期間のタスクに最適で、最大5分間実行されます。**at-least-once execution**をサポートし、データ処理のような冪等タスクに適しています。これらのワークフローは、実行、期間、およびメモリ使用量に基づいて課金され、コストとパフォーマンスが最適化されています。
|
||||
- **Standard Workflow**:このデフォルトのワークフロータイプは、長時間実行される耐久性のある監査可能なプロセス向けに設計されています。**正確に1回の実行**をサポートし、リトライが指定されない限り、タスクは1回だけ実行されます。詳細な実行履歴が必要なワークフローに最適で、最大1年間実行できます。
|
||||
- **Express Workflow**:このタイプは、高ボリュームの短期間のタスクに最適で、最大5分間実行されます。**少なくとも1回の実行**をサポートし、データ処理のような冪等タスクに適しています。これらのワークフローは、コストとパフォーマンスの最適化が行われており、実行、期間、メモリ使用量に基づいて課金されます。
|
||||
|
||||
### States
|
||||
|
||||
@@ -25,7 +25,7 @@ Statesは状態マシンの基本単位です。ワークフロー内の個々
|
||||
- **Pass:** 入力を出力に渡すか、データを注入します。
|
||||
- **Wait:** 設定された時間だけ実行を遅延させます。
|
||||
- **Parallel:** 並列ブランチを開始します。
|
||||
- **Map:** アイテムに対して動的にステップを反復します。
|
||||
- **Map:** アイテムに対してステップを動的に反復します。
|
||||
|
||||
### Task
|
||||
|
||||
@@ -38,7 +38,7 @@ Statesは状態マシンの基本単位です。ワークフロー内の個々
|
||||
- **AWS Services**: DynamoDBやS3など、他のAWSサービスと直接統合します。
|
||||
- Resource: **`arn:partition:states:region:account:servicename:APIname`**.
|
||||
- **HTTP Task**: サードパーティAPIを呼び出します。
|
||||
- Resource field: **`arn:aws:states:::http:invoke`**. 次に、API URL、メソッド、および認証の詳細など、APIエンドポイントの構成詳細を提供する必要があります。
|
||||
- Resource field: **`arn:aws:states:::http:invoke`**. 次に、API URL、メソッド、認証の詳細など、APIエンドポイントの構成詳細を提供する必要があります。
|
||||
|
||||
以下の例は、HelloWorldというLambda関数を呼び出すTask状態の定義を示しています:
|
||||
```json
|
||||
@@ -54,10 +54,10 @@ Statesは状態マシンの基本単位です。ワークフロー内の個々
|
||||
```
|
||||
### Choice
|
||||
|
||||
**Choice** ステートは、ワークフローに条件付きロジックを追加し、入力データに基づいて決定を可能にします。指定された条件を評価し、結果に基づいて対応するステートに遷移します。
|
||||
A **Choice** state adds conditional logic to a workflow, enabling decisions based on input data. It evaluates the specified conditions and transitions to the corresponding state based on the results.
|
||||
|
||||
- **Comparison**: 各選択ルールには、入力変数を指定された値または別の変数と比較する比較演算子(例:**`NumericEquals`**、**`StringEquals`**)が含まれています。
|
||||
- **Next Field**: Choice ステートは **`End`** フィールドをサポートしていません。代わりに、比較が真である場合に遷移する **`Next`** ステートを定義します。
|
||||
- **Next Field**: Choice states do not support don't support the **`End`** field, instead, they define the **`Next`** state to transition to if the comparison is true.
|
||||
|
||||
Example of **Choice** state:
|
||||
```json
|
||||
@@ -74,7 +74,7 @@ Example of **Choice** state:
|
||||
**`Succeed`** ステートは、実行を成功裏に停止します。通常、ワークフローが成功裏に完了したときに終了するために使用されます。このステートは **`Next`** フィールドを必要としません。
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="失敗の例" }}
|
||||
{{#tab name="Fail example" }}
|
||||
```json
|
||||
"FailState": {
|
||||
"Type": "Fail",
|
||||
@@ -95,7 +95,7 @@ Example of **Choice** state:
|
||||
|
||||
### Pass
|
||||
|
||||
**Pass**ステートは、作業を行うことなく、またはフィルターを使用してJSONステート入力を変換することによって、その入力を出力に渡し、変換されたデータを次のステートに渡します。これは、静的データを注入したり、データを変換したりすることを可能にするため、ステートマシンのテストや構築に役立ちます。
|
||||
**Pass** ステートは、作業を行うことなく、またはフィルターを使用してJSONステート入力を変換し、その変換されたデータを次のステートに渡すことによって、入力を出力に渡します。これは、静的データを注入したり変換したりすることを可能にし、ステートマシンのテストや構築に役立ちます。
|
||||
```json
|
||||
"PassState": {
|
||||
"Type": "Pass",
|
||||
@@ -106,9 +106,9 @@ Example of **Choice** state:
|
||||
```
|
||||
### Wait
|
||||
|
||||
**Wait**ステートは、指定された期間、ステートマシンの実行を遅延させます。待機時間を設定するための主な方法は3つあります。
|
||||
**Wait**ステートは、指定された期間だけステートマシンの実行を遅延させます。待機時間を設定するための主な方法は3つあります。
|
||||
|
||||
- **X秒**: 待機する固定の秒数。
|
||||
- **X Seconds**: 待機する固定の秒数。
|
||||
|
||||
```json
|
||||
"WaitState": {
|
||||
@@ -118,7 +118,7 @@ Example of **Choice** state:
|
||||
}
|
||||
```
|
||||
|
||||
- **絶対タイムスタンプ**: 待機する正確な時間。
|
||||
- **Absolute Timestamp**: 待機する正確な時間。
|
||||
|
||||
```json
|
||||
"WaitState": {
|
||||
@@ -128,7 +128,7 @@ Example of **Choice** state:
|
||||
}
|
||||
```
|
||||
|
||||
- **動的待機**: **`SecondsPath`**または**`TimestampPath`**を使用して入力に基づく。
|
||||
- **Dynamic Wait**: **`SecondsPath`**または**`TimestampPath`**を使用して入力に基づく。
|
||||
|
||||
```json
|
||||
jsonCopiar código
|
||||
@@ -143,9 +143,9 @@ jsonCopiar código
|
||||
|
||||
**Parallel**ステートは、ワークフロー内で複数のタスクのブランチを同時に実行することを可能にします。各ブランチは独立して実行され、それぞれのステートのシーケンスを処理します。実行は、すべてのブランチが完了するまで待機し、その後次のステートに進みます。主なフィールドは次のとおりです。
|
||||
|
||||
- **Branches**: 並列実行パスを定義する配列。各ブランチは別々のステートマシンです。
|
||||
- **Branches**: 並行実行パスを定義する配列。各ブランチは別々のステートマシンです。
|
||||
- **ResultPath**: ブランチの結合出力をどこに(入力内で)配置するかを定義します。
|
||||
- **Retry and Catch**: 並列ステートのエラーハンドリング設定。
|
||||
- **Retry and Catch**: 並行ステートのエラーハンドリング設定。
|
||||
```json
|
||||
"ParallelState": {
|
||||
"Type": "Parallel",
|
||||
@@ -162,11 +162,11 @@ jsonCopiar código
|
||||
"Next": "NextState"
|
||||
}
|
||||
```
|
||||
### Map
|
||||
### マップ
|
||||
|
||||
**Map** ステートは、データセット内の各アイテムに対して一連のステップを実行することを可能にします。データの並列処理に使用されます。データセットのアイテムをどのように処理したいかに応じて、Step Functions は以下のモードを提供します。
|
||||
|
||||
- **Inline Mode**: 各 JSON 配列アイテムに対してステートのサブセットを実行します。40 未満の並列反復を持つ小規模なタスクに適しており、**`Map`** ステートを含むワークフローのコンテキスト内でそれぞれを実行します。
|
||||
- **インラインモード**: 各 JSON 配列アイテムに対してステートのサブセットを実行します。40 未満の並列反復を持つ小規模なタスクに適しており、**`Map`** ステートを含むワークフローのコンテキスト内でそれぞれを実行します。
|
||||
|
||||
```json
|
||||
"MapState": {
|
||||
@@ -195,7 +195,7 @@ jsonCopiar código
|
||||
}
|
||||
```
|
||||
|
||||
- **Distributed Mode**: 高い同時実行性を持つ大規模な並列処理のために設計されています。Amazon S3 に保存されているような大規模データセットの処理をサポートし、最大 10,000 の並列子ワークフロー実行を高い同時実行性で実行します。これらの子は別の子実行として実行されます。
|
||||
- **分散モード**: 高い同時実行性を持つ大規模な並列処理のために設計されています。Amazon S3 に保存されているような大規模データセットの処理をサポートし、最大 10,000 の並列子ワークフロー実行を高い同時実行性で実行します。これらの子は別の子実行として実行されます。
|
||||
|
||||
```json
|
||||
"DistributedMapState": {
|
||||
@@ -232,23 +232,23 @@ jsonCopiar código
|
||||
}
|
||||
```
|
||||
|
||||
### Versions and aliases
|
||||
### バージョンとエイリアス
|
||||
|
||||
Step Functions は、**バージョン** と **エイリアス** を通じてワークフローデプロイメントを管理することもできます。バージョンは、実行可能なステートマシンのスナップショットを表します。エイリアスは、ステートマシンの最大 2 つのバージョンへのポインタとして機能します。
|
||||
Step Functions は、ステートマシンの**バージョン**と**エイリアス**を通じてワークフローデプロイメントを管理することもできます。バージョンは、実行可能なステートマシンのスナップショットを表します。エイリアスは、ステートマシンの最大 2 つのバージョンへのポインタとして機能します。
|
||||
|
||||
- **Versions**: これらの不変のステートマシンのスナップショットは、そのステートマシンの最新のリビジョンから作成されます。各バージョンは、ステートマシン ARN とバージョン番号をコロンで区切って組み合わせた一意の ARN によって識別されます (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:version-number`**)。バージョンは編集できませんが、ステートマシンを更新して新しいバージョンを公開するか、希望するステートマシンバージョンを使用できます。
|
||||
- **Aliases**: これらのポインタは、同じステートマシンの最大 2 つのバージョンを参照できます。単一のステートマシンに対して複数のエイリアスを作成でき、それぞれはステートマシン ARN とエイリアス名をコロンで区切って組み合わせた一意の ARN によって識別されます (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:aliasName`**)。エイリアスは、ステートマシンの 2 つのバージョンのいずれかの間でトラフィックをルーティングすることを可能にします。あるいは、エイリアスはステートマシンの特定のバージョンを指すことができますが、他のエイリアスには指しません。必要に応じて、異なるバージョンのステートマシンにリダイレクトするように更新でき、制御されたデプロイメントとワークフロー管理を促進します。
|
||||
- **バージョン**: これらの不変のステートマシンのスナップショットは、そのステートマシンの最新のリビジョンから作成されます。各バージョンは、ステートマシン ARN とバージョン番号をコロンで区切って組み合わせた一意の ARN によって識別されます (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:version-number`**)。バージョンは編集できませんが、ステートマシンを更新して新しいバージョンを公開するか、希望するステートマシンバージョンを使用できます。
|
||||
- **エイリアス**: これらのポインタは、同じステートマシンの最大 2 つのバージョンを参照できます。単一のステートマシンに対して複数のエイリアスを作成でき、それぞれはエイリアス名をコロンで区切ってステートマシン ARN と組み合わせた一意の ARN によって識別されます (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:aliasName`**)。エイリアスは、ステートマシンの 2 つのバージョンのいずれかの間でトラフィックをルーティングすることを可能にします。あるいは、エイリアスはステートマシンの特定のバージョンを指すことができますが、他のエイリアスには指しません。必要に応じて、異なるバージョンのステートマシンにリダイレクトするように更新でき、制御されたデプロイメントとワークフロー管理を促進します。
|
||||
|
||||
**ASL** に関する詳細情報については、次を確認してください: [**Amazon States Language**](https://states-language.net/spec.html)。
|
||||
|
||||
## IAM Roles for State machines
|
||||
## ステートマシンのための IAM ロール
|
||||
|
||||
AWS Step Functions は、AWS Identity and Access Management (IAM) ロールを利用して、ステートマシン内のリソースとアクションへのアクセスを制御します。AWS Step Functions におけるセキュリティと IAM ロールに関連する重要な側面は以下の通りです。
|
||||
AWS Step Functions は、AWS Identity and Access Management (IAM) ロールを利用して、ステートマシン内のリソースとアクションへのアクセスを制御します。AWS Step Functions におけるセキュリティと IAM ロールに関連する主な側面は以下の通りです。
|
||||
|
||||
- **Execution Role**: AWS Step Functions の各ステートマシンは IAM 実行ロールに関連付けられています。このロールは、ステートマシンがあなたの代わりに実行できるアクションを定義します。ステートマシンが AWS サービスと相互作用するステート間を遷移する際(Lambda 関数の呼び出し、DynamoDB へのアクセスなど)、この実行ロールを引き受けてそれらのアクションを実行します。
|
||||
- **Permissions**: IAM 実行ロールは、他の AWS サービスに対する必要なアクションを許可する権限で構成する必要があります。たとえば、ステートマシンが AWS Lambda 関数を呼び出す必要がある場合、IAM ロールには **`lambda:InvokeFunction`** 権限が必要です。同様に、DynamoDB に書き込む必要がある場合、適切な権限 (**`dynamodb:PutItem`**, **`dynamodb:UpdateItem`** など) を付与する必要があります。
|
||||
- **実行ロール**: AWS Step Functions の各ステートマシンは IAM 実行ロールに関連付けられています。このロールは、ステートマシンがあなたの代わりに実行できるアクションを定義します。ステートマシンが AWS サービスと相互作用するステート間を遷移する際(Lambda 関数の呼び出し、DynamoDB へのアクセスなど)、この実行ロールを引き受けてそれらのアクションを実行します。
|
||||
- **権限**: IAM 実行ロールは、他の AWS サービスに対する必要なアクションを許可する権限で構成する必要があります。たとえば、ステートマシンが AWS Lambda 関数を呼び出す必要がある場合、IAM ロールには **`lambda:InvokeFunction`** 権限が必要です。同様に、DynamoDB に書き込む必要がある場合、適切な権限 (**`dynamodb:PutItem`**, **`dynamodb:UpdateItem`** など) を付与する必要があります。
|
||||
|
||||
## Enumeration
|
||||
## 列挙
|
||||
|
||||
ReadOnlyAccess ポリシーは、以下のすべての列挙アクションに対して十分です。
|
||||
```bash
|
||||
@@ -297,7 +297,7 @@ aws stepfunctions describe-map-run --map-run-arn <value>
|
||||
## Lists executions of a Map Run
|
||||
aws stepfunctions list-executions --map-run-arn <value> [--status-filter <RUNNING | SUCCEEDED | FAILED | TIMED_OUT | ABORTED | PENDING_REDRIVE>] [--redrive-filter <REDRIVEN | NOT_REDRIVEN>]
|
||||
```
|
||||
## プライベートエスカレーション
|
||||
## プライバシー昇格
|
||||
|
||||
次のページでは、**Step Functionsの権限を悪用して特権を昇格させる方法**を確認できます:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user