使用上次访问的信息优化 AWS 中的权限 - AWS Identity and Access Management

使用上次访问的信息优化 AWS 中的权限

作为管理员,您可能会向实体(用户或角色)授予超出其需要的权限。IAM 提供上次访问的信息以帮助您识别未使用的权限,以便您可以将其移除。您可以使用上次访问的信息来优化策略,并仅允许访问您的实体使用的服务和操作。这有助于更好地遵循最小权限的最佳实践。您可以查看 IAM 或 AWS Organizations 中存在的实体或策略的上次访问信息。

IAM 的上次访问的信息类型

您可以查看 IAM 实体的两种类型的上次访问信息:允许的 AWS 服务信息和允许的操作信息。此信息包括进行尝试的日期和时间。上次访问的操作信息可用于 Amazon EC2、IAM、Lambda 和 Amazon S3 管理操作。管理操作包括创建、删除和修改操作。要了解有关如何查看 IAM 的上次访问信息的更多信息,请参阅 查看 IAM 的上次访问信息

有关使用上次访问信息做出有关向 IAM 实体授予的权限的决策的示例场景,请参阅 使用上次访问信息的示例应用场景

要了解有关如何提供管理操作信息的更多信息,请参阅关于上次访问的信息的知识

AWS Organizations 的上次访问信息

如果使用管理账户凭证登录,则可以查看企业中的 AWS Organizations 实体或策略的上次访问的服务信息。AWS Organizations 实体包括企业根、企业部门 (OU) 或账户。AWS Organizations 的上次访问信息包括有关服务控制策略 (SCP) 允许的服务的信息。该信息指明组织或账户中的哪些委托人上次尝试访问该服务以及尝试访问的时间。要了解有关报告以及如何查看 AWS Organizations 的上次访问信息的更多信息,请参阅查看 Organizations 的上次访问信息

有关使用上次访问信息做出有关向 Organizations 实体授予的权限的决策的示例场景,请参阅 使用上次访问信息的示例应用场景

关于上次访问的信息的知识

在使用报告中的上次访问信息更改 IAM 或 Organizations 实体的权限之前,请查看有关该信息的以下细节。

  • 跟踪周期 - 最近的活动通常会在四小时内显示在 IAM 控制台中。服务信息的跟踪周期为最近 400 天。Amazon S3 操作信息的跟踪周期从 2020 年 4 月 12 日开始。Amazon EC2、IAM 和 Lambda 操作的跟踪周期从 2021 年 4 月 7 日开始。有关更多信息,请参阅 AWS 跟踪上次访问信息的位置

  • Attempts reported(报告的尝试)- 服务上次访问的数据包含访问 AWS API 的所有尝试,而不仅仅是成功的尝试。这包括使用 AWS Management Console、AWS API(通过任何开发工具包)或任何命令行工具进行的所有尝试。在上次访问的服务相关数据中看到意外的条目并不意味着您的账户信息泄露,因为请求可能已被拒。请参阅您的 CloudTrail 日志并将其作为有关所有 API 调用以及它们是成功还是被拒绝的访问的信息的权威来源。

  • PassRole - iam:PassRole 操作不会被跟踪,也不包括在 IAM 上次访问的服务信息中。

  • 上次访问的操作信息 — 上次访问的操作信息可用于IAM 实体访问的 Amazon EC2、IAM、Lambda 和 Amazon S3 管理操作。IAM 为 CloudTrail 记录的 Amazon EC2、IAM、Lambda 和 Amazon S3 管理事件提供操作信息。有时,CloudTrail 管理事件也称为控制层面操作或控制层面事件。通过管理事件,可以了解对在您 AWS 账户内的资源执行的管理操作。要了解有关 CloudTrail 中的管理事件的更多信息,请参阅使用 Cloudtrail 记录管理事件

  • Report owner(报告拥有者)- 只有生成报告的委托人才能查看报告详细信息。这意味着,当您查看 AWS Management Console中的信息时,您可能需要等待它生成和加载。如果您使用 AWS CLI 或 AWS API 获取报告详细信息,则您的凭证必须与生成报告的委托人的凭证相匹配。如果对角色或联合用户使用临时凭证,则必须在同一会话期间生成和检索报告。有关代入角色会话委托人的更多信息,请参阅AWS JSON 策略元素:Principal

  • IAM 实体 — IAM 的信息包括账户中的 IAM 实体(用户或角色)。Organizations 的信息包括指定 Organizations 实体中的委托人(IAM 用户、IAM 角色或 AWS 账户 根用户)。这些信息不包括未经身份验证的尝试。

  • IAM策略类型 - IAM 的信息包括 IAM 实体的策略允许的服务。这些是附加到角色或直接或通过组附加到用户的策略。其他策略类型允许的访问权限未包含在您的报告中。排除的策略类型包括基于资源的策略、访问控制列表、AWS Organizations SCP、IAM 权限边界以及会话策略。由服务相关角色提供的权限由它们所关联的服务定义,不能在 IAM 中进行修改。要了解有关服务相关角色的更多信息,请参阅使用服务相关角色。要了解如何评估不同的策略类型以允许或拒绝访问,请参阅策略评估逻辑

  • Organizations 策略类型 - AWS Organizations 的信息仅包含 Organizations 实体继承的服务控制策略 (SCP) 允许的服务。SCP 是附加到根、OU 或账户的策略。其他策略类型允许的访问权限未包含在您的报告中。排除的策略类型包括基于身份的策略、基于资源的策略、访问控制列表、IAM 权限边界以及会话策略。要了解如何评估不同的策略类型以允许或拒绝访问,请参阅策略评估逻辑

  • 指定策略 ID - 在 Organizations,中使用 AWS CLI 或 AWS API 为上次访问的信息生成报告时,您可以选择指定策略 ID。生成的报告包含仅该策略允许的服务的信息。该信息包括指定的 Organizations 实体或其子实体中的最新账户活动。有关更多信息,请参阅 aws iam generate-organizations-access-reportGenerateOrganizationsAccessReport

  • 企业管理账户 - 您必须登录到企业的管理账户才能查看上次访问的服务信息。您可以选择使用 IAM 控制台、AWS CLI 或 AWS API 查看管理账户的信息。生成的报告列出所有 AWS 服务,因为管理账户不受 SCP 限制。如果在 CLI 或 API 中指定策略 ID,则会忽略该策略。对于每个服务,报告仅包含管理账户的信息。不过,其他 Organizations 实体的报告不会返回管理账户中的活动的信息。

  • Organizations 设置 – 管理员必须先在企业根中启用 SCP,然后才能生成 Organizations 的数据。

所需权限

要在 AWS Management Console中查看上次访问的信息,您必须具有授予所需权限的策略。

IAM 信息的权限

要使用 IAM 控制台查看 IAM 用户、角色或策略的上次访问信息,您必须具有包含以下操作的策略:

  • iam:GenerateServiceLastAccessedDetails

  • iam:Get*

  • iam:List*

这些权限允许用户查看以下内容:

  • 哪些用户、组或角色将附加到托管策略

  • 用户或角色可访问哪些服务

  • 他们上次访问服务的时间

  • 他们上次尝试使用特定 Amazon EC2、IAM、Lambda 或 Amazon S3 操作的时间

要使用 AWS CLI 或 AWS API 查看 IAM 的上次访问信息,您必须具有与要使用的操作匹配的权限:

  • iam:GenerateServiceLastAccessedDetails

  • iam:GetServiceLastAccessedDetails

  • iam:GetServiceLastAccessedDetailsWithEntities

  • iam:ListPoliciesGrantingServiceAccess

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

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

AWS Organizations 信息的权限

要使用 IAM 控制台查看 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 查看 Organizations,的上次访问的服务信息,您必须具有包含以下操作的策略:

  • iam:GenerateOrganizationsAccessReport

  • iam:GetOrganizationsAccessReport

  • organizations:DescribePolicy

  • organizations:ListChildren

  • organizations:ListParents

  • organizations:ListPoliciesForTarget

  • organizations:ListRoots

  • organizations:ListTargetsForPolicy

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

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

您也可以使用 iam:OrganizationsPolicyId 条件键以仅允许为特定 Organizations 策略生成报告。有关策略示例,请参阅 IAM:查看 Organizations 策略的上次访问的服务信息

IAM 和 Organizations 实体的故障排除活动

在某些情况下,AWS Management Console上次访问的信息表可能为空。或者,AWS CLI 或 AWS API 请求可能会返回空信息集或空字段。在这些情况下,请检查以下问题:

  • 对于上次访问的操作信息,您期望看到的操作可能不会在列表中返回。这可能是因为 IAM 实体没有操作权限,或者 AWS 尚未跟踪操作以获取上次访问的信息。

  • 对于 IAM 用户,请确保该用户直接或通过组成员资格附加了至少一个内联或托管策略。

  • 对于 IAM 组,请确认该组附加了至少一个内联或托管策略。

  • 对于 IAM 组,该报告仅返回使用组的策略访问服务的成员的上次访问的服务信息。要了解成员是否使用了其他策略,请查看该用户的上次访问的信息。

  • 对于 IAM 角色,请确认该角色附加了至少一个内联或托管策略。

  • 对于 IAM 实体(用户或角色),请检查可能影响该实体的权限的其他策略类型。其中包含基于资源的策略、访问控制列表、AWS Organizations 策略、IAM 权限边界或会话策略。有关更多信息,请参阅 策略类型评估单个账户中的策略

  • 对于 IAM 策略,请确保指定的托管策略附加到至少一个用户、具有成员的组或角色。

  • 对于 Organizations 实体(根、OU 或账户),请确保您使用 Organizations 管理账户凭证登录。

  • 确认在组织根中启用了 SCP

  • 操作上次访问的信息仅适用于某些 Amazon EC2、IAM、Lambda 和 Amazon S3 操作。

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

AWS 跟踪上次访问信息的位置

AWS 收集标准 AWS 区域的上次访问信息。在 AWS 添加额外的区域时,这些区域将添加到下表中,包括 AWS 开始在每个区域中跟踪信息的日期:

  • Service information(服务信息)- 服务的跟踪周期为过去 400 天,如果您的区域在上一年内开始支持此功能,则不超过 400 天。

  • 操作信息 - Amazon S3 管理操作的跟踪周期从 2020 年 4 月 12 日开始。Amazon EC2、IAM 和 Lambda 管理操作的跟踪周期从 2021 年 4 月 7 日开始。如果区域在稍后某个日期开始支持某项活动,则该日期也是该区域的操作跟踪开始日期。

区域名称 区域 跟踪开始日期
US East (Ohio) us-east-2 2017 年 10 月 27 日
US East (N. Virginia) us-east-1 2015 年 10 月 1 日
US West (N. California) us-west-1 2015 年 10 月 1 日
US West (Oregon) us-west-2 2015 年 10 月 1 日
Asia Pacific (Hong Kong) ap-east-1 2019 年 4 月 24 日
Asia Pacific (Mumbai) ap-south-1 2016 年 6 月 27 日
Asia Pacific (Seoul) ap-northeast-2 2016 年 1 月 6 日
Asia Pacific (Singapore) ap-southeast-1 2015 年 10 月 1 日
Asia Pacific (Sydney) ap-southeast-2 2015 年 10 月 1 日
Asia Pacific (Tokyo) ap-northeast-1 2015 年 10 月 1 日
加拿大(中部) ca-central-1 2017 年 10 月 28 日
Europe (Frankfurt) eu-central-1 2015 年 10 月 1 日
Europe (Stockholm) eu-north-1 2018 年 12 月 12 日
Europe (Ireland) eu-west-1 2015 年 10 月 1 日
Europe (London) eu-west-2 2017 年 10 月 28 日
Europe (Milan) eu-south-1 2020 年 4 月 28 日
Europe (Paris) eu-west-3 2017 年 12 月 18 日
中东(巴林) me-south-1 2019 年 7 月 29 日
Africa (Cape Town) af-south-1 2020 年 4 月 22 日
South America (São Paulo) sa-east-1 2015 年 12 月 11 日

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

AWS 区域是地理区域中的 AWS 资源集合。区域分组为分区。标准区域是属于 aws 分区的区域。有关不同分区的更多信息,请参阅 AWS 一般参考中的 Amazon Resource Name (ARN) 格式。有关区域的更多信息,也可参阅 AWS 一般参考中的关于 AWS 区域