

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

# 身分增強的 IAM 角色工作階段
<a name="trustedidentitypropagation-identity-enhanced-iam-role-sessions"></a>

[AWS Security Token Service](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_sts-comparison.html) (STS) 可讓應用程式取得身分增強的 IAM 角色工作階段。身分增強型角色工作階段具有新增的身分內容，可將使用者識別符帶到 AWS 服務 其呼叫的 。 AWS 服務 可以在 IAM Identity Center 中查詢使用者的群組成員資格和屬性，並使用它們來授權使用者存取 資源。

AWS 應用程式透過向 AWS STS [AssumeRole](https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html) API 動作提出請求，並在請求的 `ProvidedContexts` 參數中將內容聲明與使用者的識別符 (`userId`) 傳遞給 ，來取得身分增強型角色工作階段`AssumeRole`。內容聲明是從回應`SSO OIDC`對 的請求所收到的`idToken`宣告中取得[https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateTokenWithIAM.html](https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateTokenWithIAM.html)。當 AWS 應用程式使用身分增強型角色工作階段來存取資源時，CloudTrail 會記錄 `userId`、啟動工作階段和採取的動作。如需詳細資訊，請參閱[身分增強 IAM 角色工作階段記錄](#trustedidentitypropagation-identity-enhanced-iam-role-session-logging)。

**Topics**
+ [身分增強型 IAM 角色工作階段的類型](#types-identity-enhanced-iam-role-sessions)
+ [身分增強 IAM 角色工作階段記錄](#trustedidentitypropagation-identity-enhanced-iam-role-session-logging)

## 身分增強型 IAM 角色工作階段的類型
<a name="types-identity-enhanced-iam-role-sessions"></a>

AWS STS 可以建立兩種不同類型的身分增強 IAM 角色工作階段，取決於提供給`AssumeRole`請求的內容聲明。從 IAM Identity Center 取得 ID 字符的應用程式可以將 `sts:identiy_context`（建議） 或 `sts:audit_context`（支援回溯相容性） 新增至 IAM 角色工作階段。身分增強的 IAM 角色工作階段只能具有其中一個內容聲明，不能同時具有兩者。

### 使用 建立的身分增強 IAM 角色工作階段 `sts:identity_context`
<a name="role_session_sts_identity_context"></a>

當身分增強型角色工作階段包含稱為 `sts:identity_context` AWS 服務 的 時，會判斷資源授權是以角色工作階段中代表的使用者為基礎，還是以角色為基礎。 AWS 服務 支援以使用者為基礎的授權提供應用程式的管理員控制項，以將存取權指派給使用者或使用者為成員的群組。

AWS 服務 不支援使用者型授權的 會忽略 `sts:identity_context`。CloudTrail 會使用角色採取的所有動作來記錄 IAM Identity Center 使用者的 userId。如需詳細資訊，請參閱[身分增強 IAM 角色工作階段記錄](#trustedidentitypropagation-identity-enhanced-iam-role-session-logging)。

若要從 取得這類身分增強型角色工作階段 AWS STS，應用程式會使用 請求參數，在 [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) `ProvidedContexts`請求中提供 `sts:identity_context` 欄位的值。使用 `arn:aws:iam::aws:contextProvider/IdentityCenter`做為 的值`ProviderArn`。

如需授權行為的詳細資訊，請參閱接收的文件 AWS 服務。

### 使用 建立的身分增強 IAM 角色工作階段 `sts:audit_context`
<a name="role_session_sts_audit_context"></a>

在過去， `sts:audit_context` 用來讓 AWS 服務 記錄使用者身分，而不使用它來做出授權決策。 AWS 服務 現在可以使用單一內容 - `sts:identity_context` - 來達成此目的，以及做出授權決策。我們建議在所有信任身分傳播的新部署`sts:identity_context`中使用 。

## 身分增強 IAM 角色工作階段記錄
<a name="trustedidentitypropagation-identity-enhanced-iam-role-session-logging"></a>

 AWS 服務 使用身分增強 IAM 角色工作階段向 提出請求時，使用者的 IAM Identity Center `userId`會記錄在 `OnBehalfOf`元素中的 CloudTrail。CloudTrail 中記錄事件的方式會根據 而有所不同 AWS 服務。並非所有 都會 AWS 服務 記錄 `onBehalfOf`元素。

以下是如何使用身分增強型角色工作階段向 AWS 服務 提出的請求在 CloudTrail 中記錄的範例。

```
"userIdentity": {
      "type": "AssumedRole",
      "principalId": "AROAEXAMPLE:MyRole",
      "arn": "arn:aws:sts::111111111111:assumed-role/MyRole/MySession",
      "accountId": "111111111111",
      "accessKeyId": "ASIAEXAMPLE",
      "sessionContext": {
        "sessionIssuer": {
            "type": "Role",
            "principalId": "AROAEXAMPLE",
            "arn": "arn:aws:iam::111111111111:role/MyRole",
            "accountId": "111111111111",
            "userName": "MyRole"
        },
        "attributes": {
            "creationDate": "2023-12-12T13:55:22Z",
            "mfaAuthenticated": "false"
        }
    },
    "onBehalfOf": {
        "userId": "11111111-1111-1111-1111-1111111111",
        "identityStoreArn": "arn:aws:identitystore::111111111111:identitystore/d-111111111"
    }
}
```