

# 使用上次访问的信息优化 AWS 中的权限
<a name="access_policies_last-accessed"></a>

作为管理员，您可能会向 IAM 资源（角色、用户、用户组或策略）授予超出需要的权限。IAM 提供上次访问的信息以帮助您识别未使用的权限，以便您可以将其移除。您可以使用上次访问信息来优化策略，并仅允许访问您的 IAM 身份和策略使用的服务和操作。这有助于更好地遵循[最小权限的最佳实践](best-practices.md#grant-least-privilege)。您可以查看 IAM 或 AWS Organizations 中存在的身份或策略的上次访问信息。

您可以使用未使用的访问分析器持续监控上次访问的信息。有关更多信息，请参阅[外部和未使用的访问的调查发现](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-findings.html)。

**Topics**
+ [IAM 的上次访问的信息类型](#access_policies_last-accessed-data-types)
+ [AWS Organizations 的上次访问信息](#access_policies_last-accessed-orgs)
+ [关于上次访问的信息的知识](#access_policies_last-accessed-know)
+ [所需权限](#access_policies_last-accessed-permissions)
+ [排查 IAM 和 AWS Organizations 实体的活动问题](#access_policies_last-accessed-troubleshooting)
+ [AWS 跟踪上次访问信息的位置](#last-accessed_tracking-period)
+ [查看 IAM 的上次访问信息](access_policies_last-accessed-view-data.md)
+ [查看 AWS Organizations 的上次访问信息](access_policies_last-accessed-view-data-orgs.md)
+ [使用上次访问信息的示例应用场景](access_policies_last-accessed-example-scenarios.md)
+ [上次访问 IAM 操作信息的服务和操作](access_policies_last-accessed-action-last-accessed.md)

## IAM 的上次访问的信息类型
<a name="access_policies_last-accessed-data-types"></a>

对于 IAM 身份，您可以查看两种类型的上次访问信息：允许的 AWS 服务信息和允许的操作信息。此信息包括尝试访问 AWS 的日期和时间。对于操作，上次访问信息会报告服务管理操作。管理操作包括创建、删除和修改操作。要了解有关如何查看 IAM 的上次访问信息的更多信息，请参阅 [查看 IAM 的上次访问信息](access_policies_last-accessed-view-data.md)。

有关在做有关向 IAM 身份授予权限的决策时使用上次访问信息的示例场景，请参阅 [使用上次访问信息的示例应用场景](access_policies_last-accessed-example-scenarios.md)。

要了解有关如何提供管理操作信息的更多信息，请参阅[关于上次访问的信息的知识](#access_policies_last-accessed-know)。

## AWS Organizations 的上次访问信息
<a name="access_policies_last-accessed-orgs"></a>

如果使用管理账户凭证登录，则可以查看企业中的 AWS Organizations 实体或策略的上次访问的服务信息。AWS Organizations 实体包括企业根、企业部门 (OU) 或账户。AWS Organizations 的上次访问信息包括有关服务控制策略 (SCP) 允许的服务的信息。该信息指示组织或账户中的哪些主体（根用户、IAM 用户或角色）上次尝试访问该服务以及尝试访问的时间。要了解有关报告以及如何查看 AWS Organizations 的上次访问信息的更多信息，请参阅[查看 AWS Organizations 的上次访问信息](access_policies_last-accessed-view-data-orgs.md)。

有关使用上次访问信息做出有关向 AWS Organizations 实体授予的权限的决策的示例场景，请参阅[使用上次访问信息的示例应用场景](access_policies_last-accessed-example-scenarios.md)。

## 关于上次访问的信息的知识
<a name="access_policies_last-accessed-know"></a>

在使用报告中的上次访问信息更改 IAM 或 AWS Organizations 实体的权限之前，请查看有关该信息的以下细节。
+ **跟踪周期** - 最近的活动会在四小时内显示在 IAM 控制台中。服务信息的跟踪周期至少为 400 天，具体取决于服务何时开始跟踪操作信息。Amazon S3 操作信息的跟踪周期从 2020 年 4 月 12 日开始。Amazon EC2、IAM 和 Lambda 操作的跟踪周期从 2021 年 4 月 7 日开始。所有其他服务的跟踪周期从 2023 年 5 月 23 日开始计算。有关提供上次访问操作信息的服务列表，请参阅 [上次访问 IAM 操作信息的服务和操作](access_policies_last-accessed-action-last-accessed.md)。要详细了解提供上次访问操作信息的区域，请参阅 [AWS 跟踪上次访问信息的位置](#last-accessed_tracking-period)。
+ **Attempts reported**（报告的尝试）- 服务上次访问的数据包含访问 AWS API 的所有尝试，而不仅仅是成功的尝试。这包括使用 AWS 管理控制台、AWS API（通过任何开发工具包）或任何命令行工具进行的所有尝试。在上次访问的服务相关数据中看到意外的条目并不意味着您的账户信息泄露，因为请求可能已被拒。请参阅您的 CloudTrail 日志并将其作为有关所有 API 调用以及它们是成功还是被拒绝的访问的信息的权威来源。
+ **PassRole** - `iam:PassRole` 操作不会被跟踪，也不包括在 IAM 上次访问的服务信息中。
+ **上次访问操作信息** – 对于 IAM 身份访问的服务管理操作，可提供上次访问操作信息。查看将报告上次访问操作信息的 [服务与操作列表](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_last-accessed-action-last-accessed.html#access_policies_last-accessed-action-last-accessed-supported-actions)。
**注意**  
对于任何数据平面事件，都没有上次访问操作信息。
+ **管理事件** – IAM 将为由 CloudTrail 记录的服务管理事件提供操作信息。有时，CloudTrail 管理事件也称为控制层面操作或控制层面事件。通过管理事件，可以了解对在您 AWS 账户 内的资源执行的管理操作。要详细了解 Cloudtrail 中的管理事件，请参阅《AWS CloudTrail 用户指南》中的 [记录管理事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html)**。
+ **Report owner**（报告拥有者）- 只有生成报告的主体才能查看报告详细信息。这意味着，当您查看 AWS 管理控制台中的信息时，您可能需要等待它生成和加载。如果您使用 AWS CLI 或 AWS API 获取报告详细信息，则您的凭证必须与生成报告的主体的凭证相匹配。如果对角色或 AWS STS 联合用户主体使用临时凭证，则必须在同一会话期间生成和检索报告。有关代入角色会话主体的更多信息，请参阅[AWS JSON 策略元素：Principal](reference_policies_elements_principal.md)。
+ **IAM 资源** – IAM 的上次访问信息包括您账户中的 IAM 资源（角色、用户、IAM 组和策略）。AWS Organizations 的上次访问信息包括指定 AWS Organizations 实体中的主体（IAM 用户、IAM 角色或 AWS 账户根用户）。上次访问信息不包括未通过身份验证的尝试信息。
+ **IAM policy 类型** - IAM 的上次访问信息包括 IAM 身份的策略允许的服务。这些是附加到角色或直接或通过组附加到用户的策略。其他策略类型允许的访问权限未包含在您的报告中。排除的策略类型包括基于资源的策略、访问控制列表、AWS Organizations SCP、IAM 权限边界以及会话策略。由服务相关角色提供的权限由它们所关联的服务定义，不能在 IAM 中进行修改。要了解有关服务相关角色的更多信息，请参阅[创建服务相关角色](id_roles_create-service-linked-role.md)。要了解如何评估不同的策略类型以允许或拒绝访问，请参阅[策略评估逻辑](reference_policies_evaluation-logic.md)。
+ **AWS Organizations 策略类型**：AWS Organizations 的信息仅包含 AWS Organizations 实体继承的服务控制策略 (SCP) 允许的服务。SCP 是附加到根、OU 或账户的策略。其他策略类型允许的访问权限未包含在您的报告中。排除的策略类型包括基于身份的策略、基于资源的策略、访问控制列表、IAM 权限边界以及会话策略。要了解如何评估不同的策略类型以允许或拒绝访问，请参阅[策略评估逻辑](reference_policies_evaluation-logic.md)。
+ **指定策略 ID**：在 AWS Organizations 中使用 AWS CLI 或 AWS API 为上次访问的信息生成报告时，您可以选择指定策略 ID。生成的报告包含仅该策略允许的服务的信息。该信息包括指定的 AWS Organizations 实体或其子实体中的最新账户活动。有关更多信息，请参阅 [aws iam generate-organizations-access-report](https://docs.aws.amazon.com/cli/latest/reference/iam/generate-organizations-access-report.html) 或 [GenerateOrganizationsAccessReport](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GenerateOrganizationsAccessReport.html)。
+ **AWS Organizations 管理账户**：您必须登录到组织的管理账户才能查看服务的上次访问信息。您可以选择使用 IAM 控制台、AWS CLI 或 AWS API 查看管理账户的信息。生成的报告列出所有 AWS 服务，因为管理账户不受 SCP 限制。如果在 CLI 或 API 中指定策略 ID，则会忽略该策略。对于每个服务，报告仅包含管理账户的信息。不过，其他 AWS Organizations 实体的报告不会返回管理账户中的活动的信息。
+ **AWS Organizations 设置**：管理员必须[先在组织根中启用 SCP](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies.html#enable_policies_on_root)，然后才能生成 AWS Organizations 的数据。

## 所需权限
<a name="access_policies_last-accessed-permissions"></a>

要在 AWS 管理控制台中查看上次访问的信息，您必须具有授予所需权限的策略。

### IAM 信息的权限
<a name="access_policies_last-accessed-permissions-iam"></a>

要使用 IAM 控制台查看 IAM 用户、角色或策略的上次访问信息，您必须具有包含以下操作的策略：
+ `iam:GenerateServiceLastAccessedDetails`
+ `iam:Get*`
+ `iam:List*`

这些权限允许用户查看以下内容：
+ 哪些用户、组或角色将附加到[托管策略](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#managed_policy)
+ 用户或角色可访问哪些服务
+ 他们上次访问服务的时间
+ 他们上次尝试使用特定 Amazon EC2、IAM、Lambda 或 Amazon S3 操作的时间

要使用 AWS CLI 或 AWS API 查看 IAM 的上次访问信息，您必须具有与要使用的操作匹配的权限：
+ `iam:GenerateServiceLastAccessedDetails`
+ `iam:GetServiceLastAccessedDetails`
+ `iam:GetServiceLastAccessedDetailsWithEntities`
+ `iam:ListPoliciesGrantingServiceAccess`

此示例说明如何创建基于身份的策略以允许查看 IAM 上次访问的信息。此外，它还允许对所有 IAM 进行只读访问。此策略定义了程序访问和控制台访问的权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "iam:GenerateServiceLastAccessedDetails",
            "iam:Get*",
            "iam:List*"
        ],
        "Resource": "*"
    }
}
```

------

### AWS Organizations 信息的权限
<a name="access_policies_last-accessed-permissions-orgs"></a>

要使用 IAM 控制台查看 AWS Organizations 中的根、OU 或账户实体的报告，您必须具有包含以下操作的策略：
+ `iam:GenerateOrganizationsAccessReport`
+ `iam:GetOrganizationsAccessReport`
+ `organizations:DescribeAccount`
+ `organizations:DescribeOrganization`
+ `organizations:DescribeOrganizationalUnit`
+ `organizations:DescribePolicy`
+ `organizations:ListChildren`
+ `organizations:ListParents`
+ `organizations:ListPoliciesForTarget`
+ `organizations:ListRoots`
+ `organizations:ListTargetsForPolicy`

要使用 AWS CLI 或 AWS API 查看 AWS Organizations 的上次访问的服务信息，您必须具有包含以下操作的策略：
+ `iam:GenerateOrganizationsAccessReport`
+ `iam:GetOrganizationsAccessReport`
+ `organizations:DescribePolicy`
+ `organizations:ListChildren`
+ `organizations:ListParents`
+ `organizations:ListPoliciesForTarget`
+ `organizations:ListRoots`
+ `organizations:ListTargetsForPolicy`

此示例说明如何创建基于身份的策略以允许查看 AWS Organizations 的服务上次访问信息。此外，它还允许对所有 AWS Organizations 进行只读访问。此策略定义了程序访问和控制台访问的权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "iam:GenerateOrganizationsAccessReport",
            "iam:GetOrganizationsAccessReport",
            "organizations:Describe*",
            "organizations:List*"
        ],
        "Resource": "*"
    }
}
```

------

您也可以使用 [iam:OrganizationsPolicyId](reference_policies_iam-condition-keys.md#ck_OrganizationsPolicyId) 条件键以仅允许为特定 AWS Organizations 策略生成报告。有关策略示例，请参阅 [IAM：查看 AWS Organizations 策略的服务上次访问信息](reference_policies_examples_iam_service-accessed-data-orgs.md)。

## 排查 IAM 和 AWS Organizations 实体的活动问题
<a name="access_policies_last-accessed-troubleshooting"></a>

在某些情况下，AWS 管理控制台上次访问的信息表可能为空。或者，AWS CLI 或 AWS API 请求可能会返回空信息集或空字段。在这些情况下，请检查以下问题：
+ 对于上次访问的操作信息，您期望看到的操作可能不会在列表中返回。这可能是因为 IAM 身份不具有该操作的权限，或者 AWS 尚未跟踪该操作的上次访问信息。
+ 对于 IAM 用户，请确保该用户直接或通过组成员资格附加了至少一个内联或托管策略。
+ 对于 IAM 组，请确认该组附加了至少一个内联或托管策略。
+ 对于 IAM 组，该报告仅返回使用组的策略访问服务的成员的上次访问的服务信息。要了解成员是否使用了其他策略，请查看该用户的上次访问的信息。
+ 对于 IAM 角色，请确认该角色附加了至少一个内联或托管策略。
+ 对于 IAM 实体（用户或角色），请检查可能影响该实体的权限的其他策略类型。其中包含基于资源的策略、访问控制列表、AWS Organizations 策略、IAM 权限边界或会话策略。有关更多信息，请参阅 [策略类型](access_policies.md#access_policy-types) 或 [对单个账户内的请求进行策略评估](reference_policies_evaluation-logic_policy-eval-basics.md)。
+ 对于 IAM policy，请确保指定的托管策略附加到至少一个用户、具有成员的组或角色。
+ 对于 AWS Organizations 实体（根、OU 或账户），请确保您使用 AWS Organizations 管理账户凭证登录。
+ 确认[在组织根中启用了 SCP](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies.html#enable_policies_on_root)。
+ 上次访问的操作信息仅适用于 [上次访问 IAM 操作信息的服务和操作](access_policies_last-accessed-action-last-accessed.md) 中列出的操作。

在进行更改时，请等待至少四小时，以便在 IAM 控制台报告中显示活动。如果您使用 AWS CLI 或 AWS API，则必须生成新的报告以查看更新后的信息。

## AWS 跟踪上次访问信息的位置
<a name="last-accessed_tracking-period"></a>

AWS 收集标准 AWS 区域的上次访问信息。在 AWS 添加额外的区域时，这些区域将添加到下表中，包括 AWS 开始在每个区域中跟踪信息的日期：
+ **服务信息** - 服务的跟踪周期至少为 400 天，如果您的区域在过去 400 天内才开始跟踪此功能，则此周期会更短。
+ **操作信息** - Amazon S3 管理操作的跟踪周期从 2020 年 4 月 12 日开始。Amazon EC2、IAM 和 Lambda 管理操作的跟踪周期从 2021 年 4 月 7 日开始。所有其他服务的管理操作跟踪周期从 2023 年 5 月 23 日开始计算。如果某个区域的开始跟踪日期为 2023 年 5 月 23 日以后，则该区域的上次操作访问信息将从该较晚的日期开始。


| 区域名称 | 区域 | 跟踪开始日期 | 
| --- | --- | --- | 
| 美国东部（俄亥俄州） | us-east-2 | 2017 年 10 月 27 日 | 
| 美国东部（弗吉尼亚州北部） | us-east-1 | 2015 年 10 月 1 日 | 
| 美国西部（北加利福尼亚） | us-west-1 | 2015 年 10 月 1 日 | 
| 美国西部（俄勒冈州） | us-west-2 | 2015 年 10 月 1 日 | 
| 非洲（开普敦） | af-south-1 | 2020 年 4 月 22 日 | 
| 亚太地区（香港） | ap-east-1 | 2019 年 4 月 24 日 | 
| 亚太地区（海得拉巴） | ap-south-2 | 2022 年 11 月 22 日 | 
| 亚太地区（雅加达） | ap-southeast-3 | 2021 年 12 月 13 日 | 
| 亚太地区（墨尔本） | ap-southeast-4 | 2023 年 1 月 23 日 | 
| 亚太地区（孟买） | ap-south-1 | 2016 年 6 月 27 日 | 
| 亚太地区（大阪） | ap-northeast-3 | 2018 年 2 月 11 日 | 
| 亚太地区（首尔） | ap-northeast-2 | 2016 年 1 月 6 日 | 
| 亚太地区（新加坡） | ap-southeast-1 | 2015 年 10 月 1 日 | 
| 亚太地区（悉尼） | ap-southeast-2 | 2015 年 10 月 1 日 | 
| 亚太地区（东京） | ap-northeast-1 | 2015 年 10 月 1 日 | 
| 加拿大（中部） | ca-central-1 | 2017 年 10 月 28 日 | 
| 欧洲地区（法兰克福） | eu-central-1 | 2015 年 10 月 1 日 | 
| 欧洲地区（爱尔兰） | eu-west-1 | 2015 年 10 月 1 日 | 
| 欧洲（伦敦） | eu-west-2 | 2017 年 10 月 28 日 | 
| 欧洲地区（米兰） | eu-south-1 | 2020 年 4 月 28 日 | 
| 欧洲地区（巴黎） | eu-west-3 | 2017 年 12 月 18 日 | 
| 欧洲（西班牙） | eu-south-2 | 2022 年 11 月 15 日 | 
| 欧洲地区（斯德哥尔摩） | eu-north-1 | 2018 年 12 月 12 日 | 
| 欧洲（苏黎世） | eu-central-2 | 2022 年 11 月 8 日 | 
| 以色列（特拉维夫） | il-central-1 | 2023 年 8 月 1 日 | 
| 中东（巴林） | me-south-1 | 2019 年 7 月 29 日 | 
| 中东（阿联酋） | me-central-1 | 2022 年 8 月 30 日 | 
| 南美洲（圣保罗） | sa-east-1 | 2015 年 12 月 11 日 | 
| AWS GovCloud（美国东部） | us-gov-east-1 | 2023 年 7 月 1 日 | 
| AWS GovCloud（美国西部） | us-gov-west-1 | 2023 年 7 月 1 日 | 

如果某个区域未在上表中列出，则表明此区域尚不提供上次访问的信息。

AWS 区域是地理区域中的 AWS 资源集合。区域分组为分区。标准区域是属于 `aws` 分区的区域。有关不同分区的更多信息，请参阅 AWS 一般参考 中的 [Amazon 资源名称 (ARN) 格式](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arns-syntax)。有关区域的更多信息，请参阅 AWS 一般参考 中的[关于 AWS 区域](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#region-what-is)。