

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Step Functions 中的 Identity and Access Management
<a name="auth-and-access-control-sfn"></a>

下列各節提供如何使用 [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 和 Step Functions 的詳細資訊，藉由控制誰可以存取資源，協助保護您的資源。例如，您將了解如何 AWS Step Functions 向 憑證提供存取 AWS 資源的許可，例如從其他 AWS 資源擷取事件資料。

AWS Identity and Access Management (IAM) 是一種 AWS 服務 ，可協助管理員安全地控制對 AWS 資源的存取。IAM 管理員可控制誰可以*進行身分驗證* （登入） 和*授權* （具有許可），以使用 Step Functions 資源。IAM 是 AWS 服務 您可以免費使用的 。

## 目標對象
<a name="security_iam_audience"></a>

使用方式 AWS Identity and Access Management (IAM) 會根據您的角色而有所不同：
+ **服務使用者** — 若無法存取某些功能，請向管理員申請所需許可 (請參閱 [對 Step Functions 中的身分和存取問題進行故障診斷](security_iam_troubleshoot.md))
+ **服務管理員** — 負責設定使用者存取權並提交相關許可請求 (請參閱 [AWS Step Functions 如何使用 IAM](security_iam_service-with-iam.md))
+ **IAM 管理員** — 撰寫政策以管理存取控制 (請參閱 [的身分型政策範例 AWS Step Functions](security_iam_id-based-policy-examples.md))

## 使用身分驗證
<a name="security_iam_authentication"></a>

身分驗證是您 AWS 使用身分憑證登入 的方式。您必須以 AWS 帳戶根使用者、IAM 使用者或擔任 IAM 角色身分進行身分驗證。

您可以使用身分來源的登入資料，例如 AWS IAM Identity Center (IAM Identity Center)、單一登入身分驗證或 Google/Facebook 登入資料，以聯合身分的形式登入。如需有關登入的詳細資訊，請參閱《AWS 登入 使用者指南》**中的[如何登入您的 AWS 帳戶](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)。

對於程式設計存取， AWS 提供 SDK 和 CLI 以密碼編譯方式簽署請求。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [API 請求的AWS 第 4 版簽署程序](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)。

### AWS 帳戶 根使用者
<a name="security_iam_authentication-rootuser"></a>

 當您建立 時 AWS 帳戶，您會從一個名為 AWS 帳戶 *theroot 使用者的*登入身分開始，該身分可完整存取所有 AWS 服務 和資源。強烈建議不要使用根使用者來執行日常任務。有關需要根使用者憑證的任務，請參閱《IAM 使用者指南》**中的[需要根使用者憑證的任務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

### 聯合身分
<a name="security_iam_authentication-federated"></a>

最佳實務是要求人類使用者使用聯合身分提供者，以 AWS 服務 使用臨時憑證存取 。

*聯合身分*是來自您的企業目錄、Web 身分提供者的使用者，或使用來自身分來源的 AWS 服務 憑證存取 Directory Service 。聯合身分會擔任角色，而該角色會提供臨時憑證。

若需集中化管理存取權限，建議使用 AWS IAM Identity Center。如需詳細資訊，請參閱 *AWS IAM Identity Center 使用者指南*中的[什麼是 IAM Identity Center？](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。

### IAM 使用者和群組
<a name="security_iam_authentication-iamuser"></a>

*IAM 使用者*[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)是一種身分具備單人或應用程式的特定許可權。建議以臨時憑證取代具備長期憑證的 IAM 使用者。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[要求人類使用者使用聯合身分提供者來 AWS 使用臨時憑證存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) 。

[IAM 群組](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)**會指定 IAM 使用者集合，使管理大量使用者的許可權更加輕鬆。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 使用者的使用案例](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html)。

### IAM 角色
<a name="security_iam_authentication-iamrole"></a>

*IAM 角色*[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)的身分具有特定許可權，其可以提供臨時憑證。您可以透過[從使用者切換到 IAM 角色 （主控台） ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)或呼叫 AWS CLI 或 AWS API 操作來擔任角色。如需詳細資訊，請參閱《IAM 使用者指南》**中的[擔任角色的方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)。

IAM 角色適用於聯合身分使用者存取、臨時 IAM 使用者許可、跨帳戶存取權與跨服務存取，以及在 Amazon EC2 執行的應用程式。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的快帳戶資源存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

## 使用政策管理存取權
<a name="security_iam_access-manage"></a>

您可以透過建立政策並將其連接到身分或資源 AWS 來控制 AWS 中的存取。政策定義與身分或資源相關聯的許可。當委託人提出請求時 AWS ， 會評估這些政策。大多數政策會以 JSON 文件 AWS 形式存放在 中。如需進一步了解 JSON 政策文件，請參閱《*IAM 使用者指南*》中的 [JSON 政策概觀](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)。

管理員會使用政策，透過定義哪些**主體**可在哪些**條件**下對哪些**資源**執行**動作**，以指定可存取的範圍。

預設情況下，使用者和角色沒有許可。IAM 管理員會建立 IAM 政策並將其新增至角色，供使用者後續擔任。IAM 政策定義動作的許可，無論採用何種方式執行。

### 身分型政策
<a name="security_iam_access-manage-id-based-policies"></a>

身分型政策是附加至身分 (使用者、使用者群組或角色) 的 JSON 許可政策文件。這類政策控制身分可對哪些資源執行哪些動作，以及適用的條件。如需了解如何建立身分型政策，請參閱《*IAM 使用者指南*》中的[透過客戶管理政策定義自訂 IAM 許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

身分型政策可分為*內嵌政策* (直接內嵌於單一身分) 與*受管政策* (可附加至多個身分的獨立政策)。如需了解如何在受管政策及內嵌政策之間做選擇，請參閱《IAM 使用者指南》**中的[在受管政策與內嵌政策之間選擇](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html)。

### 資源型政策
<a name="security_iam_access-manage-resource-based-policies"></a>

資源型政策是附加到資源的 JSON 政策文件。範例包括 IAM *角色信任政策*與 Amazon S3 *儲存貯體政策*。在支援資源型政策的服務中，服務管理員可以使用它們來控制對特定資源的存取權限。您必須在資源型政策中[指定主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。

資源型政策是位於該服務中的內嵌政策。您無法在以資源為基礎的政策中使用來自 IAM 的 AWS 受管政策。

### 其他政策類型
<a name="security_iam_access-manage-other-policies"></a>

AWS 支援其他政策類型，可設定更多常見政策類型授予的最大許可：
+ **許可界限** — 設定身分型政策可授與 IAM 實體的最大許可。如需詳細資訊，請參閱《 IAM 使用者指南》**中的 [IAM 實體許可界限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。
+ **服務控制政策 (SCP)** — 為 AWS Organizations中的組織或組織單位指定最大許可。如需詳細資訊，請參閱《AWS Organizations 使用者指南》**中的[服務控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ **資源控制政策 (RCP)** — 設定您帳戶中資源可用許可的上限。如需詳細資訊，請參閱《AWS Organizations 使用者指南》**中的[資源控制政策 (RCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。
+ **工作階段政策** — 在以程式設計方式為角色或聯合身分使用者建立臨時工作階段時，以參數形式傳遞的進階政策。如需詳細資訊，請參《*IAM 使用者指南*》中的[工作階段政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)。

### 多種政策類型
<a name="security_iam_access-manage-multiple-policies"></a>

當多種類型的政策套用到請求時，產生的許可會更複雜而無法理解。若要了解如何 AWS 在涉及多個政策類型時決定是否允許請求，請參閱《*IAM 使用者指南*》中的[政策評估邏輯](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)。

## 存取控制
<a name="access-control-sfn"></a>

您可以擁有有效的登入資料來驗證請求，但除非您具有許可，否則無法建立或存取 Step Functions 資源。例如，您必須擁有許可，才能叫用 AWS Lambda與 Step Functions 規則相關聯的 Amazon Simple Notification Service (Amazon SNS) 和 Amazon Simple Queue Service (Amazon SQS) 目標。

下列各節說明如何管理 Step Functions 的許可。
+ [在 Step Functions 中為您的狀態機器建立 IAM 角色](procedure-create-iam-role.md)
+ [在 Step Functions 中為非管理員使用者建立精細許可](concept-create-iam-advanced.md)
+ [為 Step Functions 建立 Amazon VPC 端點](vpc-endpoints.md)
+ [Step Functions 如何為整合服務產生 IAM 政策](service-integration-iam-templates.md)
+ [使用分散式地圖狀態的 IAM 政策](iam-policies-eg-dist-map.md)

# AWS Step Functions 如何使用 IAM
<a name="security_iam_service-with-iam"></a>

在您使用 IAM 管理 Step Functions 的存取權之前，請先了解哪些 IAM 功能可與 Step Functions 搭配使用。

下表列出您可以搭配 使用的 IAM 功能 AWS Step Functions：


| IAM 功能 | Step Functions 支援 | 
| --- | --- | 
|  [身分型政策](#security_iam_service-with-iam-id-based-policies)  |   是  | 
|  [資源型政策](#security_iam_service-with-iam-resource-based-policies)  |   否   | 
|  [政策動作](#security_iam_service-with-iam-id-based-policies-actions)  |   是  | 
|  [政策資源](#security_iam_service-with-iam-id-based-policies-resources)  |   是  | 
|  [政策條件索引鍵 (服務特定)](#security_iam_service-with-iam-id-based-policies-conditionkeys)  |   是  | 
|  [ACL](#security_iam_service-with-iam-acls)  |   否   | 
|  [ABAC(政策中的標籤)](#security_iam_service-with-iam-tags)  |   部分  | 
|  [臨時憑證](#security_iam_service-with-iam-roles-tempcreds)  |   是  | 
|  [主體許可](#security_iam_service-with-iam-principal-permissions)  |   是  | 
|  [服務角色](#security_iam_service-with-iam-roles-service)  |   是  | 
|  [服務連結角色](#security_iam_service-with-iam-roles-service-linked)  |   否   | 

若要全面了解 Step Functions 和其他 AWS 服務如何與大多數 IAM 功能搭配使用，請參閱《IAM *使用者指南*》中的[AWS 與 IAM 搭配使用的 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

## Step Functions 的身分型政策
<a name="security_iam_service-with-iam-id-based-policies"></a>

**支援身分型政策：**是

身分型政策是可以附加到身分 (例如 IAM 使用者、使用者群組或角色) 的 JSON 許可政策文件。這些政策可控制身分在何種條件下能對哪些資源執行哪些動作。如需了解如何建立身分型政策，請參閱《*IAM 使用者指南*》中的[透過客戶管理政策定義自訂 IAM 許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

使用 IAM 身分型政策，您可以指定允許或拒絕的動作和資源，以及在何種條件下允許或拒絕動作。如要了解您在 JSON 政策中使用的所有元素，請參閱《*IAM 使用者指南*》中的 [IAM JSON 政策元素參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。

### Step Functions 的身分型政策範例
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>

若要檢視 Step Functions 身分型政策的範例，請參閱 [的身分型政策範例 AWS Step Functions](security_iam_id-based-policy-examples.md)。

## Step Functions 中的資源型政策
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**支援資源型政策：**否 

資源型政策是附加到資源的 JSON 政策文件。資源型政策的最常見範例是 IAM *角色信任政策*和 Amazon S3 *儲存貯體政策*。在支援資源型政策的服務中，服務管理員可以使用它們來控制對特定資源的存取權限。對於附加政策的資源，政策會定義指定的主體可以對該資源執行的動作以及在何種條件下執行的動作。您必須在資源型政策中[指定主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。委託人可以包含帳戶、使用者、角色、聯合身分使用者或 AWS 服務。

如需啟用跨帳戶存取權，您可以在其他帳戶內指定所有帳戶或 IAM 實體作為資源型政策的主體。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的快帳戶資源存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

## Step Functions 的政策動作
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**支援政策動作：**是

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

JSON 政策的 `Action` 元素描述您可以用來允許或拒絕政策中存取的動作。政策會使用動作來授予執行相關聯動作的許可。

若要查看 Step Functions 動作的清單，請參閱《*服務授權參考*》中的 [定義的資源 AWS Step Functions](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsstepfunctions.html)。

Step Functions 中的政策動作在動作之前使用以下字首：

```
states
```

若要在單一陳述式中指定多個動作，請用逗號分隔。

```
"Action": [
          "states:action1",
          "states:action2"
             ]
```

若要檢視 Step Functions 身分型政策的範例，請參閱 [的身分型政策範例 AWS Step Functions](security_iam_id-based-policy-examples.md)。

## Step Functions 的政策資源
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**支援政策資源：**是

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

`Resource` JSON 政策元素可指定要套用動作的物件。最佳實務是使用其 [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 來指定資源。若動作不支援資源層級許可，使用萬用字元 (\$1) 表示該陳述式適用於所有資源。

```
"Resource": "*"
```

若要查看 Step Functions 資源類型及其 ARNs的清單，請參閱《*服務授權參考*》中的 [定義的動作 AWS Step Functions](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsstepfunctions.html)。若要了解您可以使用哪些動作指定每個資源的 ARN，請參閱 [定義的資源 AWS Step Functions](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsstepfunctions.html)。

若要檢視 Step Functions 身分型政策的範例，請參閱 [的身分型政策範例 AWS Step Functions](security_iam_id-based-policy-examples.md)。

## Step Functions 的政策條件索引鍵
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**支援服務特定政策條件金鑰：**是

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

`Condition` 元素會根據定義的條件，指定陳述式的執行時機。您可以建立使用[條件運算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)的條件運算式 (例如等於或小於)，來比對政策中的條件和請求中的值。若要查看所有 AWS 全域條件索引鍵，請參閱《*IAM 使用者指南*》中的[AWS 全域條件內容索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

若要查看 Step Functions 條件索引鍵的清單，請參閱《*服務授權參考*》中的 [的條件索引鍵 AWS Step Functions](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsstepfunctions.html)。若要了解您可以使用條件金鑰的動作和資源，請參閱 [定義的資源 AWS Step Functions](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsstepfunctions.html)。

 如果您的政策必須依賴 Step Functions 服務主體名稱，我們建議您檢查`aws:PrincipalServiceNamesList`[多值內容索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-single-vs-multi-valued-context-keys.html#reference_policies_condition-multi-valued-context-keys)`states.amazonaws.com`中是否存在 ，而不是`aws:PrincipalServiceName`條件索引鍵。`aws:PrincipalServiceName` 條件索引鍵只包含服務主體名稱清單中的一個項目，不一定是 `states.amazonaws.com`。下列條件區塊示範檢查 是否存在`states.amazonaws.com`。

```
{
    "Condition": {
        "ForAnyValue:StringEquals": {
            "aws:PrincipalServiceNamesList": "states.amazonaws.com"
        }
    }
}
```

若要檢視 Step Functions 身分型政策的範例，請參閱 [的身分型政策範例 AWS Step Functions](security_iam_id-based-policy-examples.md)。

## Step Functions ACLs
<a name="security_iam_service-with-iam-acls"></a>

**支援 ACL：**否 

存取控制清單 (ACL) 可控制哪些主體 (帳戶成員、使用者或角色) 擁有存取某資源的許可。ACL 類似於資源型政策，但它們不使用 JSON 政策文件格式。

## ABAC 與 Step Functions
<a name="security_iam_service-with-iam-tags"></a>

**支援 ABAC (政策中的標籤)：**部分

屬性型存取控制 (ABAC) 是一種授權策略，根據稱為標籤的屬性定義許可權。您可以將標籤連接至 IAM 實體 AWS 和資源，然後設計 ABAC 政策，以便在委託人的標籤符合資源上的標籤時允許操作。

如需根據標籤控制存取，請使用 `aws:ResourceTag/key-name`、`aws:RequestTag/key-name` 或 `aws:TagKeys` 條件索引鍵，在政策的[條件元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)中，提供標籤資訊。

如果服務支援每個資源類型的全部三個條件金鑰，則對該服務而言，值為 **Yes**。如果服務僅支援某些資源類型的全部三個條件金鑰，則值為 **Partial**。

如需 ABAC 的詳細資訊，請參閱《*IAM 使用者指南*》中的[使用 ABAC 授權定義許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)。如要查看含有設定 ABAC 步驟的教學課程，請參閱《*IAM 使用者指南*》中的[使用屬性型存取控制 (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)。

## 搭配 Step Functions 使用臨時登入資料
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**支援臨時憑證：**是

臨時登入資料提供 AWS 資源的短期存取權，並在您使用聯合或切換角色時自動建立。 AWS 建議您動態產生臨時登入資料，而不是使用長期存取金鑰。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的臨時安全憑證](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)與[可與 IAM 搭配運作的AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

## Step Functions 的跨服務主體許可
<a name="security_iam_service-with-iam-principal-permissions"></a>

**支援轉寄存取工作階段 (FAS)：**是

 轉送存取工作階段 (FAS) 使用呼叫 的委託人許可 AWS 服務，並結合 請求 AWS 服務 向下游服務提出請求。如需提出 FAS 請求時的政策詳細資訊，請參閱[轉發存取工作階段](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)。

## Step Functions 的服務角色
<a name="security_iam_service-with-iam-roles-service"></a>

**支援服務角色：**是

 服務角色是服務擔任的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)，可代您執行動作。IAM 管理員可以從 IAM 內建立、修改和刪除服務角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[建立角色以委派許可給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

**警告**  
變更服務角色的許可可能會中斷 Step Functions 功能。只有在 Step Functions 提供指引時，才能編輯服務角色。

## Step Functions 的服務連結角色
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**支援服務連結角色：**否 

 服務連結角色是連結至 的一種服務角色 AWS 服務。服務可以擔任代表您執行動作的角色。服務連結角色會出現在您的 中 AWS 帳戶 ，並由服務擁有。IAM 管理員可以檢視，但不能編輯服務連結角色的許可。

如需建立或管理服務連結角色的詳細資訊，請參閱[可搭配 IAM 運作的AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。在資料表中尋找服務，其中包含**服務連結角色**欄中的 `Yes`。選擇**是**連結，以檢視該服務的服務連結角色文件。

# 的身分型政策範例 AWS Step Functions
<a name="security_iam_id-based-policy-examples"></a>

根據預設，使用者和角色沒有建立或修改 Step Functions 資源的許可。若要授予使用者對其所需資源執行動作的許可，IAM 管理員可以建立 IAM 政策。

如需了解如何使用這些範例 JSON 政策文件建立 IAM 身分型政策，請參閱《*IAM 使用者指南*》中的[建立 IAM 政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)。

如需 Step Functions 定義的動作和資源類型的詳細資訊，包括每種資源類型的 ARNs 格式，請參閱*《服務授權參考*》中的[適用於 的動作、資源和條件金鑰 AWS Step Functions](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsstepfunctions.html)。

**Topics**
+ [政策最佳實務](#security_iam_service-with-iam-policy-best-practices)
+ [使用 Step Functions 主控台](#security_iam_id-based-policy-examples-console)
+ [允許使用者檢視他們自己的許可](#security_iam_id-based-policy-examples-view-own-permissions)

## 政策最佳實務
<a name="security_iam_service-with-iam-policy-best-practices"></a>

身分型政策會判斷您帳戶中的某個人員是否可以建立、存取或刪除 Step Functions 資源。這些動作可能會讓您的 AWS 帳戶產生費用。當您建立或編輯身分型政策時，請遵循下列準則及建議事項：
+ **開始使用 AWS 受管政策並邁向最低權限許可** – 若要開始將許可授予您的使用者和工作負載，請使用將許可授予許多常見使用案例的 *AWS 受管政策*。它們可在您的 中使用 AWS 帳戶。我們建議您定義特定於使用案例 AWS 的客戶受管政策，進一步減少許可。如需更多資訊，請參閱《*IAM 使用者指南*》中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)或[任務職能的AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。
+ **套用最低權限許可** – 設定 IAM 政策的許可時，請僅授予執行任務所需的許可。為實現此目的，您可以定義在特定條件下可以對特定資源採取的動作，這也稱為*最低權限許可*。如需使用 IAM 套用許可的更多相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的政策和許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。
+ **使用 IAM 政策中的條件進一步限制存取權** – 您可以將條件新增至政策，以限制動作和資源的存取。例如，您可以撰寫政策條件，指定必須使用 SSL 傳送所有請求。如果透過特定 例如 使用服務動作 AWS 服務，您也可以使用條件來授予其存取權 CloudFormation。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM JSON 政策元素：條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。
+ **使用 IAM Access Analyzer 驗證 IAM 政策，確保許可安全且可正常運作** – IAM Access Analyzer 驗證新政策和現有政策，確保這些政策遵從 IAM 政策語言 (JSON) 和 IAM 最佳實務。IAM Access Analyzer 提供 100 多項政策檢查及切實可行的建議，可協助您撰寫安全且實用的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[使用 IAM Access Analyzer 驗證政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。
+ **需要多重要素驗證 (MFA)** – 如果您的案例需要 IAM 使用者或 中的根使用者 AWS 帳戶，請開啟 MFA 以提高安全性。如需在呼叫 API 操作時請求 MFA，請將 MFA 條件新增至您的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[透過 MFA 的安全 API 存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)。

如需 IAM 中最佳實務的相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 安全最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

## 使用 Step Functions 主控台
<a name="security_iam_id-based-policy-examples-console"></a>

若要存取 AWS Step Functions 主控台，您必須擁有一組最低許可。這些許可必須允許您列出和檢視 中 Step Functions 資源的詳細資訊 AWS 帳戶。如果您建立比最基本必要許可更嚴格的身分型政策，則對於具有該政策的實體 (使用者或角色) 而言，主控台就無法如預期運作。

對於僅呼叫 AWS CLI 或 AWS API 的使用者，您不需要允許最低主控台許可。反之，只需允許存取符合他們嘗試執行之 API 操作的動作就可以了。

為了確保使用者和角色仍然可以使用 Step Functions 主控台，也請將 Step Functions `ConsoleAccess`或 `ReadOnly` AWS 受管政策連接到實體。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[新增許可到使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)。

## 允許使用者檢視他們自己的許可
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

此範例會示範如何建立政策，允許 IAM 使用者檢視附加到他們使用者身分的內嵌及受管政策。此政策包含在主控台或使用 或 AWS CLI AWS API 以程式設計方式完成此動作的許可。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

# AWS 的 受管政策 AWS Step Functions
<a name="security-iam-awsmanpol"></a>





 AWS 受管政策是由 AWS AWS 受管政策建立和管理的獨立政策旨在為許多常用案例提供許可，以便您可以開始將許可指派給使用者、群組和角色。

請記住， AWS 受管政策可能不會授予特定使用案例的最低權限許可，因為這些許可可供所有 AWS 客戶使用。我們建議您定義特定於使用案例的[客戶管理政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies)，以便進一步減少許可。

您無法變更 AWS 受管政策中定義的許可。如果 AWS 更新受 AWS 管政策中定義的許可，則更新會影響政策連接的所有主體身分 （使用者、群組和角色）。當新的 AWS 服務 啟動或新的 API 操作可用於現有服務時， AWS 最有可能更新 AWS 受管政策。

如需詳細資訊，請參閱 *IAM 使用者指南*中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。









## AWS 受管政策：AWSStepFunctionsConsoleFullAccess
<a name="security-iam-awsmanpol-AWSStepFunctionsConsoleFullAccess"></a>

您可將 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSStepFunctionsConsoleFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSStepFunctionsConsoleFullAccess.html) 政策連接到 IAM 身分。

此政策會授予*管理員*許可，以允許使用者存取使用 Step Functions 主控台。為了獲得完整的主控台體驗，使用者可能還需要服務可擔任之其他 IAM 角色的 iam：PassRole 許可。

## AWS 受管政策：AWSStepFunctionsReadOnlyAccess
<a name="security-iam-awsmanpol-AWSStepFunctionsReadOnlyAccess"></a>

您可將 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSStepFunctionsReadOnlyAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSStepFunctionsReadOnlyAccess.html) 政策連接到 IAM 身分。

此政策授予*唯讀*許可，允許使用者或角色列出和描述狀態機器、活動、執行、活動、標籤、MapRuns 和狀態機器別名和版本。此政策也授予許可，以檢查您提供的狀態機器定義的語法。

## AWS 受管政策：AWSStepFunctionsFullAccess
<a name="security-iam-awsmanpol-AWSStepFunctionsFullAccess"></a>

您可將 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSStepFunctionsFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSStepFunctionsFullAccess.html) 政策連接到 IAM 身分。

此政策會授予使用者或角色使用 Step Functions API *的完整*許可。若要完整存取，使用者必須擁有至少一個可由服務擔任的 IAM 角色的 *iam：PassRole* 許可。

## AWS 受管政策的 Step Functions 更新
<a name="security-iam-awsmanpol-updates"></a>

檢視自此服務開始追蹤這些變更以來，Step Functions AWS 受管政策更新的詳細資訊。如需此頁面變更的自動提醒，請訂閱 Step Functions [文件歷史紀錄](document-history.md)頁面上的 RSS 摘要。




| 變更 | 描述 | Date | 
| --- | --- | --- | 
|  [AWSStepFunctionsReadOnlyAccess](#security-iam-awsmanpol-AWSStepFunctionsReadOnlyAccess) – 更新至現有政策   |  Step Functions 新增了新的許可，以允許呼叫 `states:ValidateStateMachineDefinition` API 動作來檢查您提供的狀態機器定義的語法。  | 2024 年 4 月 25 日 | 
|  [AWSStepFunctionsReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSStepFunctionsReadOnlyAccess.html) – 更新現有政策  |  Step Functions 新增了新許可，以允許列出和讀取與下列相關的資料：標籤 (ListTagsForResource)、分散式地圖 (ListMapRuns、DescribeMapRun)、版本和別名 (DescribeStateMachineAlias、ListStateMachineAliases、ListStateMachineVersions)。  | 2024 年 4 月 2 日 | 
|  Step Functions 開始追蹤變更  |  Step Functions 開始追蹤其 AWS 受管政策的變更。  | 2024 年 4 月 2 日 | 

# 在 Step Functions 中為您的狀態機器建立 IAM 角色
<a name="procedure-create-iam-role"></a>

AWS Step Functions 可執行程式碼和存取 AWS 資源 （例如叫用 AWS Lambda 函數）。為了維護安全性，您必須使用 IAM 角色將這些資源的存取授予 Step Functions。

本指南[學習步驟函數的教學課程](learning-resources.md#tutorials)中的 可讓您利用自動產生的 IAM 角色，這些角色適用於您建立狀態機器 AWS 的區域。不過，您可以為狀態機器建立自己的 IAM 角色。

為狀態機器建立要使用的 IAM 政策時，政策應包含您希望狀態機器取得的許可。您可以使用現有的 AWS 受管政策做為範例，也可以從頭開始建立符合您特定需求的自訂政策。如需詳細資訊，請參閱《[IAM 使用者指南》中的建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) **

若要為狀態機器建立自己的 IAM 角色，請遵循本節中的步驟。

在此範例中，您會建立具有叫用 Lambda 函數許可的 IAM 角色。

## 為 Step Functions 建立角色
<a name="create-role-for-step-functions"></a>

1. 登入 [IAM 主控台](https://console.aws.amazon.com/iam/home)，然後選擇**角色**、**建立角色**。

1. 在**選取信任實體**頁面**AWS 的服務**下，從清單中選取**步驟函數**，然後選擇**下一步：許可**。

1. 在 **Attached permissions policy (連結許可政策)** 頁面上，選擇 **Next: Review (下一步：檢閱)**。

1. 在**檢閱**頁面上，`StepFunctionsLambdaRole`針對**角色名稱**輸入 ，然後選擇**建立角色**。

   IAM 角色會出現在角色清單中。

如需 IAM 許可和政策的詳細資訊，請參閱《*IAM 使用者指南*》中的[存取管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)。

## 防止跨服務混淆代理人問題
<a name="prevent-cross-service-confused-deputy"></a>

混淆代理人問題屬於安全性議題，其中沒有執行動作許可的實體可以強制具有更多許可的實體執行該動作。在 中 AWS，跨服務模擬可能會導致混淆代理人問題。在某個服務 (*呼叫服務*) 呼叫另一個服務 (*被呼叫服務*) 時，可能會發生跨服務模擬。這種類型的冒充可能發生跨帳戶和跨服務。可以操縱呼叫服務來使用其許可，以其不應有存取許可的方式對其他客戶的資源採取動作。

為了防止混淆代理人， AWS 提供工具，協助您保護所有 服務的資料，其服務主體已獲得您帳戶中資源的存取權。本節著重於預防跨服務混淆代理人 AWS Step Functions；不過，您可以在 *IAM 使用者指南*的[混淆代理人問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)區段中進一步了解此主題。

我們建議在資源政策中使用 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)和 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)全域條件內容金鑰，以限制Step Functions提供其他服務存取 資源的許可。如果您想要僅允許一個資源與跨服務存取相關聯，則請使用 `aws:SourceArn`。如果您想要允許該帳戶中的任何資源與跨服務使用相關聯，請使用 `aws:SourceAccount`。

防範混淆代理人問題的最有效方法是使用 `aws:SourceArn` 全域條件內容索引鍵，以及資源的完整 ARN。如果您不知道資源的完整 ARN，或者如果您要指定多個資源，請將`aws:SourceArn`全域內容條件金鑰與萬用字元 (`*`) 用於 ARN 的未知部分。例如 `arn:aws:states:*:111122223333:*`。

以下是*信任政策*的範例，示範如何使用 `aws:SourceArn`和 `aws:SourceAccount`搭配 Step Functions，以防止混淆代理人問題。

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
     {
        "Effect":"Allow",
        "Principal":{
           "Service":[
              "states.amazonaws.com"
           ]
        },
        "Action":"sts:AssumeRole",
        "Condition":{
           "ArnLike":{
              "aws:SourceArn":"arn:aws:states:us-east-1:111122223333:stateMachine:*"
           },
           "StringEquals":{
              "aws:SourceAccount":"111122223333"
           }
        }
     }
  ]
}
```

## 連接內嵌政策
<a name="attach-inline-policy"></a>

Step Functions 可以直接在 `Task` 狀態控制其他 服務。連接內嵌政策，以允許 Step Functions 存取您需要控制之服務的 API 動作。

1. 開啟 [IAM 主控台](https://console.aws.amazon.com/iam/home)，選擇**角色**，搜尋您的 Step Functions 角色，然後選取該角色。

1. 選取 **Add inline policy (新增內嵌政策)**。

1. 使用 **Visual editor (視覺編輯工具)** 或 **JSON** 標籤來建立角色的政策。

如需如何 AWS Step Functions 控制其他 AWS 服務的詳細資訊，請參閱 [將 服務與 Step Functions 整合](integrate-services.md)。

**注意**  
如需 Step Functions 主控台建立的 IAM 政策範例，請參閱 [Step Functions 如何為整合服務產生 IAM 政策](service-integration-iam-templates.md)。

# 在 Step Functions 中為非管理員使用者建立精細許可
<a name="concept-create-iam-advanced"></a>

IAM 中的預設受管政策，例如 `ReadOnly`，並未完全涵蓋所有類型的 AWS Step Functions 許可。本節描述不同類型的許可，並提供一些範例組態。

Step Functions 有四類許可。視您想要提供給使用者的存取權而定，您可以使用這些類別中的許可來控制存取權。

[服務層級許可](#concept-create-iam-advanced-service)  
套用至**未**對特定資源採取行動的 API 元件。

[狀態機器層級許可](#concept-create-iam-advanced-state)  
適用於會對特定狀態機器採取行動的所有 API 元件。

[執行層級許可](#concept-create-iam-advanced-execution)  
套用到會對特定執行作業採取行動的所有 API 元件。

[活動層級許可](#concept-create-iam-advanced-activity)  
適用於會對特定活動或對活動的特定執行個體採取行動的所有 API 元件。

## 服務層級許可
<a name="concept-create-iam-advanced-service"></a>

此許可層級適用於所有**未**對特定資源採取行動的 API 動作。這些包括 `[CreateStateMachine](https://docs.aws.amazon.com/step-functions/latest/apireference/API_CreateStateMachine.html)`、`[CreateActivity](https://docs.aws.amazon.com/step-functions/latest/apireference/API_CreateActivity.html)`、`[ListActivities](https://docs.aws.amazon.com/step-functions/latest/apireference/API_ListActivities.html)`、 `[ListStateMachines](https://docs.aws.amazon.com/step-functions/latest/apireference/API_ListStateMachines.html)`和 `[ValidateStateMachineDefinition](https://docs.aws.amazon.com/step-functions/latest/apireference/API_ValidateStateMachineDefinition.html)`。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "states:ListStateMachines",
                "states:ListActivities",
                "states:CreateStateMachine",
                "states:CreateActivity",
                "states:ValidateStateMachineDefinition"
            ],
            "Resource": [
                "arn:aws:states:*:*:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/my-execution-role"
            ]
        }
    ]
}
```

## 狀態機器層級許可
<a name="concept-create-iam-advanced-state"></a>

此許可層級適用於會對特定狀態機器採取行動的所有 API 動作。這些 API 操作需要狀態機器的 Amazon Resource Name (ARN) 作為請求的一部分，例如 `[DeleteStateMachine](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DeleteStateMachine.html)`、`[StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)`、 `[DescribeStateMachine](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeStateMachine.html)`和 `[ListExecutions](https://docs.aws.amazon.com/step-functions/latest/apireference/API_ListExecutions.html)`。

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "states:DescribeStateMachine",
        "states:StartExecution",
        "states:DeleteStateMachine",
        "states:ListExecutions",
        "states:UpdateStateMachine",
        "states:TestState",
        "states:RevealSecrets"
      ],
      "Resource": [ 
        "arn:aws:states:*:*:stateMachine:StateMachinePrefix*" 
      ]
    }
  ]
}
```

## 執行層級許可
<a name="concept-create-iam-advanced-execution"></a>

此許可層級適用於會對特定執行作業採取行動的所有 API 動作。這些 API 操作需要執行的 ARN 做為要求的一部分，例如 `[DescribeExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html)`、`[GetExecutionHistory](https://docs.aws.amazon.com/step-functions/latest/apireference/API_GetExecutionHistory.html)` 和 `[StopExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StopExecution.html)`。

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "states:DescribeExecution",
        "states:DescribeStateMachineForExecution",
        "states:GetExecutionHistory",
        "states:StopExecution"
      ],
      "Resource": [ 
        "arn:aws:states:*:*:execution:*:ExecutionPrefix*"
      ]
    }
  ]
}
```

## 活動層級許可
<a name="concept-create-iam-advanced-activity"></a>

此許可層級適用於會對特定活動或其特定執行個體採取行動的所有 API 動作。這些 API 操作需要活動 ARN 或執行個體的字符作為請求的一部分，例如 `[DeleteActivity](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DeleteActivity.html)`、`[GetActivityTask](https://docs.aws.amazon.com/step-functions/latest/apireference/API_GetActivityTask.html)`、 `[DescribeActivity](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeActivity.html)`和 `[SendTaskHeartbeat](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskHeartbeat.html)`。

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "states:DescribeActivity",
        "states:DeleteActivity",
        "states:GetActivityTask",
        "states:SendTaskHeartbeat"
      ],
      "Resource": [
        "arn:aws:states:*:*:activity:ActivityPrefix*"
      ]
    }
  ]
}
```

# 在 Step Functions 中存取其他 AWS 帳戶 中的資源
<a name="concepts-access-cross-acct-resources"></a>

Step Functions 可讓您跨帳戶存取工作流程中不同 AWS 帳戶 中設定的資源。使用 Step Functions 服務整合，您可以叫用任何跨帳戶 AWS 資源，即使 AWS 服務 不支援以資源為基礎的政策或跨帳戶呼叫。

例如，假設您在相同的 中擁有兩個 AWS 帳戶，稱為開發和測試 AWS 區域。使用跨帳戶存取，開發帳戶中的工作流程可以存取 資源，例如 Amazon S3 儲存貯體、Amazon DynamoDB 資料表和測試帳戶中可用的 Lambda 函數。

**重要**  
IAM 角色和資源型政策只會在單一分割內跨帳戶委派存取許可。例如，假設您在標準 `aws` 分割區的美國西部 (加利佛尼亞北部) 中有一個帳戶。您在 `aws-cn` 分割區的中國 (北京) 中也有一個帳戶。您不能使用中國 (北京) 中帳戶的 Amazon S3 資源型政策，對標準 `aws` 帳戶中的使用者允許存取許可。

如需跨帳戶存取的詳細資訊，請參閱《*IAM 使用者指南*》中的[跨帳戶政策評估邏輯](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html)。

雖然每個 AWS 帳戶 都能完全控制自己的資源，但使用 Step Functions，您可以重新組織、交換、新增或移除工作流程中的步驟，而不需要自訂任何程式碼。即使程序變更或應用程式演進，您也可以這樣做。

您也可以叫用巢狀狀態機器的執行，以便在不同的帳戶中使用。這樣做可以有效地分隔和隔離您的工作流程。當您在存取不同帳戶中另一個 Step Functions 工作流程的工作流程中使用[`.sync`](connect-to-resource.md#connect-sync)服務整合模式時，Step Functions 會使用消耗您指派配額的輪詢。如需詳細資訊，請參閱[執行任務 (.sync)](connect-to-resource.md#connect-sync)。

**注意**  
Step Functions 不提供跨區域 AWS SDK 整合和跨區域 AWS 資源存取。

## 重要跨帳戶資源概念
<a name="key-terms-cross-acct-access"></a>

**[執行角色](procedure-create-iam-role.md)**  
Step Functions 用來執行程式碼和存取 AWS 資源的 IAM 角色，例如 AWS Lambda 函數的叫用動作。

**[服務整合](integrate-services.md)**  
可從工作流程`Task`狀態內呼叫的 AWS SDK 整合 API 動作。

**來源帳戶**  
 AWS 帳戶 擁有狀態機器並已開始執行的 。

**目標帳戶**  
您進行跨帳戶呼叫 AWS 帳戶 的 。

**目標角色**  
狀態機器在目標帳戶中擔任的 IAM 角色，用於呼叫目標帳戶擁有的資源。

**[執行任務 (.sync)](connect-to-resource.md#connect-sync)**  
用來呼叫 服務的服務整合模式，例如 AWS Batch。它還讓 Step Functions 狀態機器在進入下一個狀態之前等待任務完成。若要指示 Step Functions `.sync` 應該等待，請在`Task`狀態定義的 `Resource` 欄位中附加尾碼。

## 叫用跨帳戶資源
<a name="invoke-cross-acct-resource"></a>

若要在工作流程中叫用跨帳戶資源，請執行下列動作：

1. 在包含 資源的目標帳戶中建立 IAM 角色。此角色會授予來源帳戶存取目標帳戶資源的許可，其中包含狀態機器。

1. 在`Task`狀態的定義中，指定要由狀態機器擔任的目標 IAM 角色，然後再叫用跨帳戶資源。

1. 修改目標 IAM 角色中的信任政策，以允許來源帳戶暫時擔任此角色。信任政策必須包含來源帳戶中定義之狀態機器的 Amazon Resource Name (ARN)。此外，在目標 IAM 角色中定義適當的許可來呼叫 AWS 資源。

1. 更新來源帳戶的執行角色，以包含擔任目標 IAM 角色所需的許可。

如需範例，請參閱教學[在 Step Functions 中存取跨帳戶 AWS 資源](tutorial-access-cross-acct-resources.md)課程中的 。

**注意**  
您可以將狀態機器設定為擔任 IAM 角色，以從多個 存取資源 AWS 帳戶。不過，狀態機器在特定時間只能擔任一個 IAM 角色。

![\[存取跨帳戶資源的概念\]](http://docs.aws.amazon.com/zh_tw/step-functions/latest/dg/images/cross-account-support-concept.png)


## .sync 整合模式的跨帳戶存取
<a name="concepts-cross-acct-sync-pattern"></a>

當您在工作流程中使用`.sync`服務整合模式時，Step Functions 會輪詢調用的跨帳戶資源，以確認任務完成。這會導致實際任務完成時間和 Step Functions 將任務識別為完成的時間之間稍微延遲。目標 IAM 角色需要`.sync`呼叫所需的許可，才能完成此輪詢迴圈。若要這樣做，目標 IAM 角色必須具有允許來源帳戶採用的信任政策。此外，目標 IAM 角色需要必要的許可才能完成輪詢迴圈。

**注意**  
對於巢狀快速工作流程，`arn:aws:states:::states:startExecution.sync`目前不支援 。請改用 `arn:aws:states:::aws-sdk:sfn:startSyncExecution`。

### .sync 呼叫的信任政策更新
<a name="cross-acct-sync-pattern-policy-update"></a>

更新目標 IAM 角色的信任政策，如下列範例所示。`sts:ExternalId` 欄位進一步控制誰可以擔任該角色。狀態機器的名稱只能包含 API AWS Security Token Service `AssumeRole`支援的字元。如需詳細資訊，請參閱《AWS Security Token Service API 參考》**中的 [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Principal": {
        "AWS": "arn:aws:iam::sourceAccountID:role/InvokeRole",
      },
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "arn:aws:states:us-east-2:sourceAccountID:stateMachine:stateMachineName"
        }
      }
    }
  ]
}
```

### .sync 呼叫所需的許可
<a name="cross-acct-sync-pattern-perms-update"></a>

若要授予狀態機器所需的許可，請更新目標 IAM 角色所需的許可。如需詳細資訊，請參閱[Step Functions 如何為整合服務產生 IAM 政策](service-integration-iam-templates.md)。例如，若要啟動狀態機器，請新增下列許可。

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "states:StartExecution"
      ],
      "Resource": [
        "arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachineName"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "states:DescribeExecution",
        "states:StopExecution"
      ],
      "Resource": [
        "arn:aws:states:us-east-1:123456789012:execution:myStateMachineName:*"
      ]
    }
  ]
}
```

# 為 Step Functions 建立 Amazon VPC 端點
<a name="vpc-endpoints"></a>

如果您使用 Amazon Virtual Private Cloud (Amazon VPC) 託管 AWS 資源，您可以在 Amazon VPC 與 AWS Step Functions 工作流程之間建立連線。您可以將此連線與 Step Functions 工作流程搭配使用，而無需跨公有網際網路。標準工作流程、快速工作流程和同步快速工作流程支援 Amazon VPC 端點。

Amazon VPC 可讓您在自訂虛擬網路中啟動 AWS 資源。您可利用 VPC 來控制您的網路設定，例如 IP 地址範圍、子網路、路由表和網路閘道。如需有關 Amazon VPC 的詳細資訊，請參閱《[Amazon VPC 使用者指南](https://docs.aws.amazon.com/vpc/latest/userguide/)》。

若要將 Amazon VPC 連線至 Step Functions，您必須先定義*介面 VPC 端點*，這可讓您將 VPC 連線至其他 AWS 服務。端點可提供可靠、可擴展的連線能力，且不需要網際網路閘道、網路地址轉譯 (NAT) 執行個體或 VPN 連接。如需詳細資訊，請參閱*《Amazon VPC 使用者指南》*中的[界面 VPC 端點 (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html)。

## 建立端點
<a name="vpc-endpoint-create"></a>

您可以使用 AWS 管理主控台、 (AWS CLI)、 AWS SDK、 AWS Step Functions API 或 在 AWS Command Line Interface VPC 中建立 AWS Step Functions 端點 CloudFormation。

如需使用 Amazon VPC 主控台或 AWS CLI，請參閱 *Amazon VPC 使用者指南*中的[建立界面端點](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint)。

**注意**  
 當您建立端點時，請將 Step Functions 指定為您希望 VPC 連線的服務。在 Amazon VPC 主控台中，服務名稱會根據 AWS 區域而有所不同。例如，如果您選擇美國東部 （維吉尼亞北部），標準工作流程和快速工作流程的服務名稱為 **com.amazonaws.us-east-1.states**，同步快速工作流程的服務名稱為 **com.amazonaws.us-east-1.sync-states。**

**注意**  
您可以使用 VPC 端點，而無需透過[私有 DNS](https://docs.aws.amazon.com/vpc/latest/privatelink/verify-domains.html) 覆寫 SDK 中的端點。不過，如果您想要覆寫適用於同步快速工作流程的 SDK 中的端點，您需要將`DisableHostPrefixInjection`組態設定為 `true`。範例 (Java SDK V2)：  

```
SfnClient.builder()
  .endpointOverride(URI.create("https://vpce-{vpceId}.sync-states.us-east-1.vpce.amazonaws.com"))
  .overrideConfiguration(ClientOverrideConfiguration.builder()
    .advancedOptions(ImmutableMap.of(SdkAdvancedClientOption.DISABLE_HOST_PREFIX_INJECTION, true))
    .build())
  .build();
```

如需有關使用 建立和設定端點的資訊 CloudFormation，請參閱*CloudFormation 《 使用者指南*》中的 [AWS::EC2::VPCEndpoint](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html) 資源。

## Amazon VPC 端點政策
<a name="vpc-endpoint-policy"></a>

若要控制 Step Functions 的連線存取，您可以在建立 Amazon VPC 端點時連接 AWS Identity and Access Management (IAM) 端點政策。您可以連接多個端點政策來建立複雜的 IAM 規則。如需詳細資訊，請參閱：
+  [Step Functions 的 Amazon Virtual Private Cloud 端點政策](#vpc-iam) 
+  [在 Step Functions 中為非管理員使用者建立精細許可](concept-create-iam-advanced.md) 
+  [使用 VPC 端點控制對服務的存取](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html) 

## Step Functions 的 Amazon Virtual Private Cloud 端點政策
<a name="vpc-iam"></a>

您可以為 Step Functions 建立 Amazon VPC 端點政策，並在其中指定下列項目：
+ 可執行動作的主體。
+ 可執行的動作。
+ 可供執行動作的資源。

下列範例顯示 Amazon VPC 端點政策，允許一個使用者建立狀態機器，並拒絕所有其他使用者刪除狀態機器的許可。範例政策也會授予所有 使用者執行許可。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
              "states:ListExecutions", "states:StartExecution", "states:StopExecution", "states:DescribeExecution"
            ],
            "Resource": "*",
            "Effect": "Allow",
            "Principal": "*"
        },
        {
            "Action": "states:CreateStateMachine",
            "Resource": "*",
            "Effect": "Allow",
            "Principal": {
              "AWS": "arn:aws:iam::123456789012:user/MyUser"
            }
        },
        {
            "Action": "states:DeleteStateMachine",
            "Resource": "*",
            "Effect": "Deny",
            "Principal": "*"
        }
    ]
}
```

如需建立端點政策的詳細資訊，請參閱以下內容：
+  [在 Step Functions 中為非管理員使用者建立精細許可](concept-create-iam-advanced.md) 
+  [使用 VPC 端點控制對服務的存取](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html) 

# Step Functions 如何為整合服務產生 IAM 政策
<a name="service-integration-iam-templates"></a>

當您在 AWS Step Functions 主控台中建立狀態機器時，Step Functions 會根據狀態機器定義中使用的資源產生 AWS Identity and Access Management (IAM) 政策，如下所示：
+ 為了**最佳化整合**，Step Functions 會為您的狀態機器建立具有所有必要許可和角色的政策。

  秘訣：您可以在 下的每個服務頁面中查看範例政策[整合最佳化服務](integrate-optimized.md)。
+ 對於**標準整合**整合，Step Functions 將建立具有部分許可的 IAM 角色。

  您必須新增狀態機器與服務互動所需的任何缺少角色政策。

## 動態和靜態資源
<a name="connect-iam-dynamic-static"></a>

*靜態資源*會**直接**在狀態機器的任務狀態中定義。當您包含要在任務狀態中直接呼叫的資源相關資訊時，Step Functions 只能為這些資源建立 IAM 角色。

*動態資源*會在啟動狀態機器時做為輸入**傳遞**，或做為個別狀態的輸入傳遞，並使用 JSONata 或 JSONPath 存取。當您將動態資源傳遞至任務時，Step Functions 無法自動縮小許可範圍，因此 Step Functions 會建立更寬鬆的政策，指定：`"Resource": "*"`

## 使用 .sync 的任務的其他許可
<a name="connect-iam-sync-async"></a>

使用[執行任務 (.sync)](connect-to-resource.md#connect-sync) 模式的任務需要額外的許可，才能監控並從連線服務的 API 接收回應。

Step Functions 使用兩種方法來監控在連線服務上執行任務時的任務狀態：**輪詢**和**事件**。

輪詢需要 `Describe`或 `Get` API 動作的許可。例如，對於 Amazon ECS，狀態機器必須具有 的允許許可`ecs:DescribeTasks`，對於狀態機器 AWS Glue ， 需要 的允許許可`glue:GetJobRun`。如果角色缺少必要的許可，Step Functions 可能無法判斷任務的狀態。使用輪詢方法的一個原因是，某些服務整合不支援 EventBridge 事件，而某些服務只會盡力傳送事件。

或者，您可以使用從 AWS 服務傳送至 Amazon EventBridge 的事件。EventBridge 會使用受管規則將事件路由至 Step Functions，因此該角色需要 `events:PutTargets`、 `events:PutRule`和 的許可`events:DescribeRule`。如果角色缺少這些許可，在 Step Functions 得知您的任務完成之前，可能會有延遲。如需 EventBridge 事件的詳細資訊，請參閱[來自 AWS 服務的事件](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html)。

## 故障診斷停滯的 .sync 工作流程
<a name="polling-events-troubleshooting"></a>

對於**同時**支援輪詢和事件的執行任務 (.sync) 任務，您的任務可能會正確使用事件完成，即使角色缺少輪詢所需的許可。

在先前的案例中，您可能不會注意到輪詢許可遺失或不正確。在極少數情況下，當事件無法交付至 Step Functions 或由 Step Functions 處理時，您的執行可能會卡住。

 若要確認您的輪詢許可設定正確，您可以在沒有 EventBridge 事件的環境中以下列方式執行 執行 
+  刪除 EventBridge 中負責將事件轉送至 Step Functions 的受管規則。
**注意**  
 由於受管規則由您帳戶中的所有狀態機器共用，因此您應該使用測試或開發帳戶，以避免意外影響其他狀態機器。
+ 您可以透過檢查目標服務政策範本`events:PutRule`中用於 `Resource`的欄位，來識別要刪除的特定受管規則。受管規則會在您下次建立或更新使用該服務整合的狀態機器時重新建立。
+  如需刪除 EventBridge 規則的詳細資訊，請參閱[停用或刪除規則](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-delete-rule.html)。

## 取消工作流程的許可
<a name="iam-cancel-tasks"></a>

如果使用執行任務 (.sync) 模式的任務停止，Step Functions 會盡最大努力嘗試取消任務。

取消任務需要 `Cancel`、`Terminate`、 `Stop`或 `Delete` API 動作的許可，例如 `batch:TerminateJob`或 `eks:DeleteCluster`。如果您的角色缺少這些許可，Step Functions 將無法取消您的任務，而且您可能會在繼續執行時產生額外費用。如需停止任務的詳細資訊，請參閱[執行任務](connect-to-resource.md#connect-sync)。

**進一步了解整合模式**  
 若要了解同步任務，請參閱 [探索 Step Functions 中的服務整合模式](connect-to-resource.md)。

## 僅限活動的 Step Functions 狀態機器的 IAM 政策
<a name="activities-iam"></a>

對於只有`Activity`任務或完全沒有任務的狀態機器，請使用拒絕存取所有動作和資源的 IAM 政策。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

如需使用 ` Activity ` 任務的詳細資訊，請參閱[了解 Step Functions 中的活動](concepts-activities.md)。

# 使用分散式地圖狀態的 IAM 政策
<a name="iam-policies-eg-dist-map"></a>

當您使用 Step Functions 主控台建立工作流程時，Step Functions 可以根據您工作流程定義中的資源自動產生 IAM 政策。產生的政策包含允許狀態機器角色叫用*分散式映射狀態*的 `[StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)` API 動作和存取 AWS 資源所需的最低權限，例如 Amazon S3 儲存貯體和物件，以及 Lambda 函數。

我們建議您在 IAM 政策中只包含必要的許可。例如，如果您的工作流程包含分散式模式中`Map`的狀態，請將您的政策範圍縮小到包含您的資料的特定 Amazon S3 儲存貯體和資料夾。

**重要**  
如果您指定 Amazon S3 儲存貯體和物件或字首，以及*分散式映射狀態*輸入中現有鍵值對的[參考路徑](amazon-states-language-paths.md#amazon-states-language-reference-paths)，請確定您更新工作流程的 IAM 政策。將政策範圍縮小至路徑在執行時間解析的儲存貯體和物件名稱。

## 執行分散式映射狀態的 IAM 政策範例
<a name="iam-policy-run-dist-map"></a>

當您在工作流程中包含*分散式地圖狀態*時，Step Functions 需要適當的許可，以允許狀態機器角色叫用*分散式地圖狀態*的 `[StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)` API 動作。

下列 IAM 政策範例會將執行*分散式映射狀態*所需的最低權限授予狀態機器角色。

**注意**  
請務必將 `stateMachineName`取代為您使用*分散式地圖*狀態的狀態機器名稱。例如 `arn:aws:states:region:account-id:stateMachine:mystateMachine`。

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "states:StartExecution"
      ],
      "Resource": [
        "arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachineName"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "states:DescribeExecution"
      ],
      "Resource": "arn:aws:states:us-east-1:123456789012:execution:myStateMachineName:*"
    }
  ]
}
```

## 分散式映射的 IAM redriving 政策範例
<a name="iam-policy-redrive-dist-map"></a>

您可以由[redriving](redrive-executions.md)父[工作流程在 Map Run 中重新啟動失敗的子工作流程](state-map-distributed.md#dist-map-orchestrate-parallel-workloads-key-terms)執行。redriven 父工作流程redrives所有失敗狀態，包括分散式地圖。請確定您的執行角色具有允許其在父工作流程上叫用 `[RedriveExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_RedriveExecution.html)` API 動作所需的最低權限。

下列 IAM 政策範例會為您的狀態機器角色授予redriving*分散式映射狀態*所需的最低權限。

**注意**  
請務必將 `stateMachineName`取代為您使用*分散式地圖狀態*之狀態機器的名稱。例如 `arn:aws:states:region:account-id:stateMachine:mystateMachine`。

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "states:RedriveExecution"
      ],
      "Resource": "arn:aws:states:us-east-2:123456789012:execution:myStateMachineName/myMapRunLabel:*"
    }
  ]
}
```

## 從 Amazon S3 資料集讀取資料的 IAM 政策範例
<a name="iam-policy-eg-item-reader"></a>

下列範例顯示使用 [ListObjectsV2](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) 和 [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) API 動作授予存取 Amazon S3 資料集所需最低權限的技術。

**Example 使用 Amazon S3 物件做為資料集的條件**  
下列條件授予存取 Amazon S3 儲存貯體`processImages`資料夾中物件的最低權限。  

```
"Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ],
"Condition": {
   "StringLike": { 
      "s3:prefix": [ "processImages" ]
   }
}
```

**Example 使用 CSV 檔案做為資料集**  
下列範例顯示存取名為 的 CSV 檔案所需的動作`ratings.csv`。  

```
"Action": [ "s3:GetObject" ],
"Resource": [
   "arn:aws:s3:::amzn-s3-demo-bucket/csvDataset/ratings.csv"
   ]
```

**Example 使用 Amazon S3 清查做為資料集**  
以下顯示 Amazon S3 清查清單檔案和資料檔案的範例資源。  

```
"Resource": [
   "arn:aws:s3:::myPrefix/amzn-s3-demo-bucket/myConfig-id/YYYY-MM-DDTHH-MMZ/manifest.json",
   "arn:aws:s3:::myPrefix/amzn-s3-demo-bucket/myConfig-id/data/*"
   ]
```

**Example 使用 ListObjectsV2 限制為資料夾字首**  
使用 [ListObjectsV2](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) 時，會產生兩個政策。需要一個允許**列出**儲存貯體 (`ListBucket`) 的內容，另一個政策將允許**擷取儲存貯體 () 中的物件**`GetObject`。  
以下顯示動作、資源和條件的範例：  

```
"Action": [ "s3:ListBucket" ],
"Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ],
"Condition": {
   "StringLike": {
      "s3:prefix": [ "/path/to/your/json/" ]
   }
}
```

```
"Action": [ "s3:GetObject" ],
"Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/path/to/your/json/*" ]
```
請注意， `GetObject`不會設定範圍，而您將針對 物件使用萬用字元 (`*`)。

## 將資料寫入 Amazon S3 儲存貯體的 IAM 政策範例
<a name="iam-policy-eg-result-writer"></a>

下列 IAM 政策範例會使用 `[PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)` API 動作，授予將子工作流程執行結果寫入 Amazon S3 儲存貯體中名為 *csvJobs* 的資料夾所需的最低權限。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/csvJobs/*"
            ]
        }
    ]
}
```

### AWS KMS key 加密 Amazon S3 儲存貯體的 IAM 許可
<a name="multiupload-dmap-result-policy"></a>

*分散式映射狀態*使用分段上傳，將子工作流程執行結果寫入 Amazon S3 儲存貯體。如果使用 AWS Key Management Service(AWS KMS)金鑰加密儲存貯體，您還必須在IAM政策中包含許可，才能對金鑰執行 `kms:Decrypt`、 `kms:Encrypt`和 `kms:GenerateDataKey`動作。這些許可是必要的，因為在加密檔案完成分段上傳之前，Amazon S3 必須從部分加密檔案解密並讀取資料。

下列 IAM 政策範例會針對用來加密 Amazon S3 儲存貯體的金鑰`kms:Encrypt`授予 `kms:Decrypt`、 和 `kms:GenerateDataKey`動作的許可。

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Decrypt",
      "kms:Encrypt",
      "kms:GenerateDataKey"
    ],
    "Resource": [
      "arn:aws:kms:us-east-1:123456789012:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
    ]
  }
}
```

如需詳細資訊，請參閱 *AWS 知識中心*中的[使用 AWS KMS key透過加密以將大型檔案上傳至 Amazon S3](https://aws.amazon.com/premiumsupport/knowledge-center/s3-large-file-encryption-kms-key/)。

如果您的 IAM 使用者或角色與 位於相同的 AWS 帳戶 中KMS key，則您必須擁有金鑰政策的這些許可。如果您的 IAM 使用者或角色屬於與 不同的帳戶KMS key，則您必須同時擁有金鑰政策和 IAM 使用者或角色的許可。

# 在 Step Functions 中建立標籤型 IAM 政策
<a name="tag-based-policies"></a>

Step Functions 支援以標籤為基礎的政策。例如，您可以限制對所有 Step Functions 資源的存取，其中包含索引鍵為 `environment`且值為 的標籤`production`。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "states:TagResource",
                "states:UntagResource",
                "states:DeleteActivity",
                "states:DeleteStateMachine",
                "states:StopExecution"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {"aws:ResourceTag/environment": "production"}
            }
        }
    ]
}
```

此政策會 `Deny` 提供針對已標記為 `environment/production` 所有資源刪除狀態機器或活動、停止執行，以及新增或刪除新標籤的能力。

針對標籤型授權，狀態機器執行資源會繼承與狀態機器相關聯的標籤，如下列範例所示。

```
arn:partition:states:region:account-id:execution:<StateMachineName>:<ExecutionId>
```

當您呼叫 [DescribeExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html) 或指定執行資源 ARN 的其他 APIs 時，Step Functions 會使用與狀態機器相關聯的標籤，在執行標籤型授權時接受或拒絕請求。這可協助您允許或拒絕存取狀態機器層級的狀態機器執行。

如需標記的詳細資訊，請參閱以下內容：
+ [在 Step Functions 中標記狀態機器和活動](sfn-best-practices.md#concepts-tagging)
+ [使用 IAM 標籤控制存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_iam-tags.html)

# 對 Step Functions 中的身分和存取問題進行故障診斷
<a name="security_iam_troubleshoot"></a>

使用以下資訊來協助您診斷和修正使用 Step Functions 和 IAM 時可能遇到的常見問題。

**Topics**
+ [我無權在 Step Functions 中執行動作](#security_iam_troubleshoot-no-permissions)
+ [我未獲得執行 iam:PassRole 的授權](#security_iam_troubleshoot-passrole)
+ [我想要允許 以外的人員 AWS 帳戶 存取我的 Step Functions 資源](#security_iam_troubleshoot-cross-account-access)

## 我無權在 Step Functions 中執行動作
<a name="security_iam_troubleshoot-no-permissions"></a>

如果您收到錯誤，告知您未獲授權執行動作，您的政策必須更新，允許您執行動作。

下列範例錯誤會在 `mateojackson` 使用者嘗試使用主控台檢視一個虛構 `my-example-widget` 資源的詳細資訊，但卻無虛構 `states:GetWidget` 許可時發生。

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: states:GetWidget on resource: my-example-widget
```

在此情況下，必須更新 Mateo 政策，允許他使用 `states:GetWidget` 動作存取 `my-example-widget` 資源。

如果您需要協助，請聯絡您的 AWS 管理員。您的管理員提供您的簽署憑證。

## 我未獲得執行 iam:PassRole 的授權
<a name="security_iam_troubleshoot-passrole"></a>

如果您收到錯誤，告知您無權執行 `iam:PassRole`動作，您的政策必須更新，以允許您將角色傳遞給 Step Functions。

有些 AWS 服務 可讓您將現有角色傳遞給該服務，而不是建立新的服務角色或服務連結角色。如需執行此作業，您必須擁有將角色傳遞至該服務的許可。

當名為 的 IAM `marymajor` 使用者嘗試使用主控台在 Step Functions 中執行動作時，會發生下列範例錯誤。但是，動作請求服務具備服務角色授予的許可。Mary 沒有將角色傳遞給服務的許可。

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

在這種情況下，Mary 的政策必須更新，允許她執行 `iam:PassRole` 動作。

如果您需要協助，請聯絡您的 AWS 管理員。您的管理員提供您的簽署憑證。

## 我想要允許 以外的人員 AWS 帳戶 存取我的 Step Functions 資源
<a name="security_iam_troubleshoot-cross-account-access"></a>

您可以建立一個角色，讓其他帳戶中的使用者或您組織外部的人員存取您的資源。您可以指定要允許哪些信任物件取得該角色。針對支援基於資源的政策或存取控制清單 (ACL) 的服務，您可以使用那些政策來授予人員存取您的資源的許可。

如需進一步了解，請參閱以下內容：
+ 若要了解 Step Functions 是否支援這些功能，請參閱 [AWS Step Functions 如何使用 IAM](security_iam_service-with-iam.md)。
+ 若要了解如何 AWS 帳戶 在您擁有的 資源之間提供存取權，請參閱《[IAM 使用者指南》中的在您擁有 AWS 帳戶 的另一個 中為 IAM 使用者提供存取權](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)。 **
+ 若要了解如何將資源的存取權提供給第三方 AWS 帳戶，請參閱《*IAM 使用者指南*》中的[將存取權提供給第三方 AWS 帳戶 擁有](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)。
+ 如需了解如何透過聯合身分提供存取權，請參閱《*IAM 使用者指南*》中的[將存取權提供給在外部進行身分驗證的使用者 (聯合身分)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)。
+ 如需了解使用角色和資源型政策進行跨帳戶存取之間的差異，請參閱《IAM 使用者指南》**中的 [IAM 中的跨帳戶資源存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。