

# IAM 临时委派
<a name="access_policies-temporary-delegation"></a>

## 概述
<a name="temporary-delegation-overview"></a>

临时委派可以加快 Amazon 和 AWS 合作伙伴提供的与您的 AWS 账户集成产品的载入速度并简化管理。您无需手动配置多项 AWS 服务，而是可以委派临时的有限权限，允许产品提供商通过自动部署工作流程在几分钟内代表您完成设置任务。您可以通过批准要求和权限边界保持管理控制，而产品提供商的权限将在经过批准的持续时间后自动过期，无需手动清理。如果产品需要持续访问权限才能进行持续操作，则提供商可以使用临时委派来创建一个 IAM 角色，其权限边界定义了该角色的最大权限。所有产品提供商的活动都通过 AWS CloudTrail 进行跟踪，以进行合规和安全监控。

**注意**  
临时委派请求只能由已完成功能载入过程的 Amazon 产品和符合资格的 AWS 合作伙伴创建。客户可审核并批准这些请求，但无法直接创建请求。如果您是想要将 IAM 临时委派集成到产品中的 AWS 合作伙伴，请参阅[合作伙伴集成指南](access_policies-temporary-delegation-partner-guide.md)以获取载入和集成说明。

## 临时委派的工作原理
<a name="temporary-delegation-how-it-works"></a>

临时委派可让 Amazon 和 AWS 合作伙伴请求对您的账户进行临时、有限的访问。在您批准后，他们可以使用委派权限代表您采取行动。委派请求定义了产品提供商在您的 AWS 账户中部署或配置资源所需的 AWS 服务和操作的特定权限。这些权限仅在有限的时间内可用，并在经过请求中指定的持续时间后自动过期。

**注意**  
委派访问的最长持续时间为 12 小时。但是，根用户只能批准持续时间不超过 4 小时的委派请求。如果请求指定的时间超过 4 小时，则必须使用非根用户身份来批准该请求。有关详细信息，请参阅[权限模拟测试版功能](temporary-delegation-initiate-request.md#temporary-delegation-permission-simulation)。

对于正在进行的任务（例如从 Amazon S3 存储桶读取），委派请求可以包括创建一个 IAM 角色，允许在临时访问权限到期后继续访问资源和操作。产品提供商必须为通过临时委派创建的任何 IAM 角色附加权限边界。权限边界限制角色的最大权限，但不能自行授予权限。在批准请求之前，您可以查看作为请求一部分的权限边界。有关详细信息，请参阅[权限边界](access_policies_boundaries.md)。

具体流程如下：

1. 您可登录 Amazon 或 AWS 合作伙伴产品以将其与您的 AWS 环境集成。

1. 产品提供商代表您发起委派请求，并将您重定向到 AWS 管理控制台。

1. 您可以查看所请求的权限，并决定是批准、拒绝还是将该请求转发给您的管理员。

1. 您或您的管理员批准请求后，产品提供商就可以获得批准者的临时凭证来执行所需任务。

1. 产品提供商访问权限将在经过指定的时间段后自动过期。但是，通过临时委派请求创建的任何 IAM 角色在该期限过后仍然存在，从而允许产品提供商继续访问资源和操作以执行持续的管理任务。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/images/delegation-flow.png)


**注意**  
只有当您拥有临时委派请求中所包含服务和操作的权限时，您才能将权限委派给产品提供商。如果您无权访问请求的服务和操作，则在您批准请求后，产品提供商不会获得这些权限。

如果权限检查表明其很可能成功，则可以批准临时委派请求并继续该工作流程。

如果权限检查表明您可能没有足够的权限，请将请求转发给您的管理员进行批准。我们建议使用您偏好的方式（例如电子邮件或工单）将此请求通知您的管理员。

管理员批准请求后，接下来会发生什么取决于产品提供商的配置：
+ 如果产品提供商请求立即访问，他们将自动获得临时权限，访问持续时间随即开始计时。
+ 如果产品提供商请求所有者（初始接收者）发布，则您必须在访问持续时间开始之前返回该请求，以显式共享临时账户访问权限。当产品提供商需要您输入其他信息（例如资源选择或配置详细信息）才能完成所需任务时，其通常会使用此选项。

# 发起临时委派请求
<a name="temporary-delegation-initiate-request"></a>

您只能从受支持的 Amazon 或 AWS 合作伙伴产品发起临时委派请求。在支持临时委派的工作流程中，系统将提示您授予产品提供商临时的有限权限，以在您的账户中配置所需的 AWS 资源。这种自动化方法无需您手动配置这些资源，从而提供了更加简化的体验。

授予访问权限之前，您可以查看委派请求的详细信息，例如产品提供商所需的特定 IAM 角色、策略和 AWS 服务。如果您有足够的权限，则可以自行批准请求，也可以将请求转发给您的账户管理员进行批准。所有产品提供商的访问权限均有时间限制，可以根据需要进行监控和撤销。

**发起临时委派请求**

1. 前往需要与您的 AWS 账户集成的、Amazon 或 AWS 合作伙伴提供的受支持产品的控制台。

1. 选择*使用 IAM 临时委派进行部署*。请注意，选项名称可能因支持的产品而有所不同。有关详细信息，请参阅产品提供商的文档。
**注意**  
如果您尚未登录 AWS 管理控制台，会打开一个指向 AWS 登录页面的新窗口。我们建议您在从产品控制台发起临时委派请求之前登录您的 AWS 账户。有关如何根据用户类型和要访问的 AWS 资源进行登录的更多信息，请参阅 [AWS 登录用户指南](docs---aws.amazon.com.rproxy.govskope.casignin/latest/userguide/what-is-sign-in.html)。

1. 查看请求详情以确认产品提供商的产品名称和 AWS 账户。您还可以查看产品提供商代表您执行操作时将使用的 AWS 身份。

1. 查看*访问权限详细信息*，了解批准此请求后将临时委派的权限。
   + *权限摘要*部分提供由 AI 生成的高级概述，可帮助您了解可以访问哪些类别的 AWS 服务以及可以在每项服务中执行哪些类型的操作。
   + 选择*查看 JSON* 以查看产品提供商需要在您的 AWS 账户中部署的特定权限，包括访问范围和资源限制。
   + 如果产品提供商在临时委派请求中创建 IAM 角色，则必须为该角色附加权限边界。这些 IAM 角色拥有在请求的访问持续时间到期后继续允许访问资源和操作的权限。选择*查看详细信息*以查看权限边界，该边界定义角色可以拥有的最大权限。产品提供商将在创建过程中对角色应用其他策略，以定义其实际权限。这些策略可能看起来比权限边界更狭窄或更广泛，具体取决于产品提供商如何定义这些策略。但是，权限边界可以保证，无论角色附加哪些策略，该角色的有效权限绝不会超过您在请求批准期间看到的权限。有关更多信息，请参阅[权限边界](access_policies_boundaries.md)。

1. 查看权限模拟结果。权限模拟功能会根据请求中包含的权限自动评估您身份的权限。根据此分析，将显示一条建议，指示是使用您的当前身份批准请求，还是将请求转发给管理员。有关详细信息，请参阅[权限模拟测试版功能](#temporary-delegation-permission-simulation)。

1. 在对话框中，选择您希望如何继续。
   + 当您的身份具有足够的权限允许产品提供商代表您执行载入程序时，请选择*允许访问*。选择此选项后，产品提供商的访问持续时间将在您提供访问权限后开始。
   + 如果您的身份没有足够的权限允许产品提供商代表您执行载入程序，请选择*请求批准*。然后，选择*创建审批请求*。选择此选项后，将创建一个临时委派请求链接，您可以与账户管理员共享该链接。您的管理员可以访问 AWS 管理控制台或使用访问链接审查临时委派请求，以批准请求并与请求者共享临时访问权限。

**注意**  
授予产品提供商访问权限需要两个操作：接受委派请求（`AcceptDelegationRequest`）和发放交换令牌（`SendDelegatedToken`）。当您批准请求后，AWS 管理控制台会自动执行这两个步骤。如果您使用 AWS CLI 或 API，则必须分别执行这两个步骤。

## 权限模拟功能（测试版）
<a name="temporary-delegation-permission-simulation"></a>

收到临时委派请求时，您可以自行批准该请求，也可以将其转发给您的账户管理员进行批准。只有当您拥有临时委派请求中所包含服务和操作的权限时，您才能将权限委派给产品提供商。如果您无权访问所请求的服务和操作，那么即使请求中包含这些权限，产品提供商也无法获得这些权限。

例如，临时委派请求要求能够创建 Amazon S3 存储桶、启动和停止 Amazon EC2 中的实例以及代入 IAM 角色。批准该请求的身份可以启动和停止 Amazon EC2 中的实例，并代入 IAM 角色，但没有创建 Amazon S3 存储桶的权限。该身份批准请求时，即使临时委派请求中包含这些权限，产品提供商也无法创建 Amazon S3 存储桶。

由于您只能委派自己已经拥有的权限，因此在批准之前评估自己是否拥有所请求的权限至关重要。权限模拟测试版功能可将您的权限与请求中包含的权限进行比较，从而帮助进行此评估。评测表明您是可以使用当前身份批准请求，还是需要将其转发给管理员。如果分析无法验证您是否拥有足够的权限，请将该请求转发给管理员进行审查。此评测基于模拟权限分析，可能与您的真实 AWS 环境有所不同，因此在继续之前请仔细检查请求的权限。

## 后续步骤
<a name="temporary-delegation-next-steps"></a>

发起临时委派请求后，您可以在请求的整个生命周期中对其进行管理和监控。以下程序可帮助您跟踪、批准和控制临时访问权限：
+ [审查临时委派请求](temporary-delegation-review-requests.md)：监控您的访问请求的状态，并查看有关批准或拒绝临时委派请求的请求详细信息。
+ [撤销临时委派访问权限](temporary-delegation-revoke-access.md)：在活动临时委派会话自然过期之前立即终止这些会话。

# 审查临时委派请求
<a name="temporary-delegation-review-requests"></a>

发起临时委派请求后，您可以在 IAM 控制台中监控、批准和拒绝请求。临时委派请求页面提供所有请求的集中视图，包括待批准、已完成或已拒绝的请求。作为管理员，您可以审查这些请求以授予产品提供商访问 AWS 资源的权限，也可以根据组织的安全策略、业务要求或合规性标准拒绝这些请求。这种可见性可帮助您跟踪产品提供商访问权限的生命周期，并保持对临时权限的监督。

**注意**  
您必须拥有 iam:AcceptDelegationRequest 权限才能批准临时委派请求。

**批准临时委派请求**

1. 登录 AWS 管理控制台，并通过以下网址打开 IAM 控制台：https://console.aws.amazon.com/iam/。

1. 在左侧导航窗格中，选择*临时委派请求*。

1. 主页面将显示临时委派请求列表，包含以下信息：
   + *请求 ID*：请求的唯一标识符
   + *状态*：当前状态（待处理、已批准、已拒绝、已共享、已过期）
   + *请求者*：与请求关联的产品提供商
   + *发起者*：向产品提供商发起请求的账户中的 IAM 主体
   + *请求创建时间*：提交请求的时间
   + *请求过期时间*：请求过期或即将过期的时间

1. （可选）使用筛选选项按状态查看请求：
   + *所有请求*：查看所有请求，无论状态如何
   + *待处理*：查看等待管理员批准的请求
   + *已批准*：查看已批准的请求
   + *已共享*：查看已共享访问权限的请求
   + *已拒绝*：查看已拒绝的请求及拒绝原因

1. 要查看有关特定请求的详细信息或查看待批准的请求，请选择请求 ID。

1. 查看详细的请求信息：
   + 产品提供商信息
   + 请求原因和理由
   + 请求持续时间
   + 请求 AWS 权限

1. 如果您是审查待处理请求的管理员，请选择以下选项之一：
   + 要批准请求，请选择*批准*。在批准对话框中，您可以查看权限模拟的结果。有关更多信息，请参阅[权限模拟测试版功能](temporary-delegation-initiate-request.md#temporary-delegation-permission-simulation)。确认访问持续时间和您的 AWS 身份后，选择*批准*以授予访问权限。如果产品提供商请求立即访问，他们将自动获得临时权限，访问持续时间随即开始计时。否则，请通知发起请求的人员向产品提供商发放访问权限。
   + 要拒绝请求，请选择*拒绝*。
     + 在拒绝对话框中，提供明确的拒绝原因，以帮助请求者了解拒绝其请求的原因。
     + 选择*拒绝*以拒绝访问。

1. 请求列表会自动刷新以显示最新的状态信息。您还可以手动刷新页面以查看状态更新。

# 撤销临时委派访问权限
<a name="temporary-delegation-revoke-access"></a>

尽管产品提供商访问会话设计为经过批准的持续时间后自动过期，但在某些情况下，您可能需要立即终止访问。当出现安全问题、产品提供商的工作提前完成或业务需求发生变化时，撤销活跃的产品提供商访问权限可提供一种紧急控制机制。请求发起者和管理员都可以撤销访问权限以维护安全性和运营控制。

**撤销临时委派访问权限**

1. 登录 AWS 管理控制台，并通过以下网址打开 IAM 控制台：https://console.aws.amazon.com/iam/。

1. 在左侧导航窗格中，选择*临时委派请求*。

1. 找到希望撤销的访问会话的请求 ID。

1. 选择*操作*，然后选择*撤销访问权限*。

1. 在对话框中，选择*撤销访问权限*以确认希望立即终止访问会话。

撤销访问权限后，产品提供商将无法再访问您的 AWS 资源。出于审计目的，撤销记录在 AWS CloudTrail 中。

**重要**  
撤销访问权限会立即终止产品提供商访问会话。任何使用该访问权限正在进行的工作或进程都将中断。确保撤销不会中断关键操作。

**注意**  
您无法撤销使用根用户批准的请求的访问权限。AWS 建议您避免使用根用户批准委派请求。改用具有适当权限的 IAM 角色。

## 管理委派请求的权限
<a name="temporary-delegation-managing-permissions"></a>

管理员可以授予 IAM 主体权限，使其能够管理来自产品提供商的委派请求。当您想要将批准权限委派给组织中的特定用户或团队，或者需要控制谁可以对委派请求执行特定操作时，此功能非常有用。

以下 IAM 权限可用于管理委派请求：


| 权限 | 说明 | 
| --- | --- | 
| iam:AssociateDelegationRequest | 将未分配的委派请求与您的 AWS 账户关联 | 
| iam:GetDelegationRequest | 查看委派请求的详细信息 | 
| iam:UpdateDelegationRequest | 将委派请求转发给管理员以供批准 | 
| iam:AcceptDelegationRequest | 批准委派请求 | 
| iam:SendDelegationToken | 批准后将交换令牌发放给产品提供商 | 
| iam:RejectDelegationRequest | 拒绝委派请求 | 
| iam:ListDelegationRequests | 列出您账户的委派请求 | 

**注意**  
默认情况下，发起委派请求的 IAM 主体会自动获得管理该特定请求的权限。他们可以将其与自己的账户关联、查看请求详细信息、拒绝请求、将其转发给管理员进行批准、在管理员批准后将交换令牌发放给产品提供商以及列出其拥有的委派请求。

# 通知
<a name="temporary-delegation-notifications"></a>

IAM 临时委派与 AWS 用户通知服务集成，可帮助您随时了解委派请求状态变更。对于需要审查和批准委派请求的管理员来说，通知服务尤其有用。

使用 AWS 用户通知服务，您可以将警报配置为通过多种渠道发送，包括电子邮件、Amazon Simple Notification Service（SNS）、AWS Chatbot for Slack 或 Microsoft Teams 以及 AWS 控制台移动应用程序。这可确保在正确的时间通知正确的人员，从而能够更快地响应待批准的请求或感知访问权限变化。您还可以根据组织的需求和安全要求，自定义触发通知的事件。

## 可用通知事件
<a name="temporary-delegation-notification-events"></a>

您可订阅以接收以下 IAM 临时委派事件的通知：
+ IAM 临时委派请求已创建
+ IAM 临时委派请求已分配
+ IAM 临时委派请求待批准
+ IAM 临时委派请求已拒绝
+ IAM 临时委派请求已接受
+ IAM 临时委派请求已最终确定
+ IAM 临时委派请求已过期

## 配置 通知
<a name="temporary-delegation-configuring-notifications"></a>

要配置 IAM 临时委派事件的通知，请执行以下操作：

1. 打开 AWS 用户通知服务控制台

1. 创建或更新通知配置

1. 选择 AWS IAM 作为服务

1. 选择希望接收相关通知的委派请求事件

1. 配置发送渠道（电子邮件、AWS Chatbot 等）

有关配置 AWS 用户通知服务（包括设置发送渠道和管理通知规则）的详细说明，请参阅 AWS 用户通知服务文档。

# CloudTrail
<a name="temporary-delegation-cloudtrail"></a>

产品提供商使用临时委派访问权限执行的所有操作都会自动记录在 AWS CloudTrail 中。这为 AWS 账户中的产品提供商活动提供了全面的可见性和可审计性。您可以确定产品提供商采取了哪些操作、操作发生的时间以及执行这些操作的产品提供商账户。

为帮助您区分自己的 IAM 主体采取的操作和具有委派访问权限的产品提供商采取的操作，CloudTrail 事件在 `userIdentity` 元素下包含了一个名为 `invokedByDelegate` 的新字段。此字段包含产品提供商的 AWS 账户 ID，可以轻松筛选和审计所有委派的操作。

## CloudTrail 事件结构
<a name="temporary-delegation-cloudtrail-event-structure"></a>

以下示例显示产品提供商使用临时委派访问权限执行操作的 CloudTrail 事件：

```
{
    "eventVersion": "1.09",		 	 	 
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE:Role-Session-Name",
        "arn": "arn:aws:sts::111122223333:assumed-role/Role-Name/Role-Session-Name",
        "accountId": "111122223333",
        "accessKeyId": "[REDACTED:AWS_ACCESS_KEY]",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AIDACKCEVSQ6C2EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "attributes": {
                "creationDate": "2024-09-09T17:50:16Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedByDelegate": {
            "accountId": "444455556666"
        }
    },
    "eventTime": "2024-09-09T17:51:44Z",
    "eventSource": "iam.amazonaws.com",
    "eventName": "GetUserPolicy",
    "awsRegion": "us-east-1",
    "requestParameters": {
        "userName": "ExampleIAMUserName",
        "policyName": "ExamplePolicyName"
    },
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333"
}
```

`invokedByDelegate` 字段包含使用委派访问权限执行操作的产品提供商的 AWS 账户 ID。在此示例中，账户 444455556666（产品提供商）在账户 111122223333（客户账户）中执行了一项操作。