策略评估指南 - Amazon Identity and Access Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

策略评估指南

Amazon 将根据一组指南评估您提交的策略。相同的评估指南适用于策略模板和权限边界,但会酌情注明细微的差异。

出于评估目的,我们将服务分为不同的组。最重要的区别在于管理访问权限、凭证和密钥安全敏感型服务。授予对这些服务访问权限的策略需要严格限定于正在进行的工作。安全敏感型服务包括以下服务:Amazon Identity and Access Management(IAM)、Amazon Key Management Service(KMS)、Amazon Resource Access Manager(RAM)、Amazon IAM Identity Center、Amazon Organizations 和 Amazon Secrets Manager。

第二个区别是可以跨账户边界访问数据的服务。这些服务的策略必须包括保护措施,以防止意外的跨账户访问。

通用验证

所有策略语句必须遵循以下指南:

  • 所有语句都必须依次包含 Effect、Action(或 NotAction)、Resource 和 Condition 字段

  • 单个语句中的所有操作必须按字母顺序列出

  • 策略中包含的所有 ARN 都必须遵循相关服务公共文档中定义的语法

  • NotAction 字段只能在 Deny 语句中使用

  • Allow 语句中的 Action 必须包含服务代码。不允许使用通用通配符 ("*")

安全敏感型服务限制

以下限制适用于上述安全敏感型服务:

  • Allow 语句中的 Action 必须比 [service] 更具体:*

  • 临时访问策略模板的 Allow 语句中的 Action 不得包含通配符

  • iam:PassRole 或 iam:CreateServiceLinkedRole 等敏感操作需要额外的范围限制,例如特定资源或条件检查。这些操作包括:

    • IAM 角色传递

    • IAM 角色修改操作

    • IAM 策略修改操作

    • Amazon KMS 写入或加密操作

    • Amazon RAM 写入或共享操作

    • 用于检索或修改密钥或者修改资源策略的 Amazon Secrets Manager 操作

  • 可能使用通配符资源的其他操作,例如 iam:ListUsers 或 iam:GetPolicy

  • 管理凭证的操作(例如 iam:CreateAccessKey)将被阻止

IAM 特定限制

对于 IAM:

  • 只允许对 IAM 角色和策略执行有限的写入操作。您无法请求对用户、组和证书等其他 IAM 资源的权限。

  • 策略附件或内联策略管理操作仅限于具有权限边界的角色。权限边界必须由合作伙伴提供,或者位于允许的 Amazon 托管策略列表中。如果 Amazon 托管策略未授予高权限或管理权限,则可能会允许这些策略。例如,针对特定工作职能的 Amazon 托管策略或 SecurityAudit 策略可能可接受。Amazon 将在载入过程中根据具体情况审查每个 Amazon 托管策略。

  • 只允许对具有以下合作伙伴特定路径的策略进行策略管理:arn:aws:iam::@{AccountId}:policy/partner_domain.com/[feature]*

  • 标签只能在资源创建期间应用,并且仅用于角色和策略

  • iam:PassRole 检查必须匹配特定名称或路径前缀

Amazon STS 特定限制

对于 Amazon STS:

  • sts:AssumeRole 必须限定为特定角色 ARN、角色 ARN 前缀,或仅限于一组账户或组织 ID /组织单位

IAM Identity Center 限制

对于 Amazon IAM Identity Center,将阻止以下操作:

  • 所有涉及权限管理的操作(例如,sso:AttachCustomerManagedPolicyReferenceToPermissionSet)

  • Amazon Identity Store 的用户、组和成员资格修改

  • 标签管理

Amazon Organizations 限制

对于 Amazon Organizations,只允许读取操作。

其他服务特定验证

  • 获取密钥或凭证的操作(例如 glue:GetConnection 或 redshift:GetClusterCredentials)必须包含匹配完整 ARN、ARN 前缀或标签的条件

  • 对于 Amazon Redshift:redshift:GetClusterCredentials 只允许对特定数据库名称使用,而 redshift:GetClusterCredentialsWithIAM 只允许对特定工作组名称使用

注意

管理账户中的 IAM 资源时,我们建议使用包含您名称的路径,例如 arn:aws:iam::111122223333:role/partner.com/rolename。这将有助于区分与您的集成关联的资源,让客户更轻松地进行发现、审计和分析。

跨账户访问要求

可能允许跨账户访问的语句必须至少包含以下各项之一:

  • 指定资源账户或组织的条件(例如,与一个或多个预期值匹配的 aws:ResourceOrgId)

  • 包含特定账户的资源字段(例如,arn:aws:sqs:*:111122223333:*)

  • 包含非通配符账户和完整资源名称(例如,arn:aws:s3:::full-bucket-name)的资源字段

注意

跨账户访问是一项敏感功能,需要明确的业务理由。Amazon 将在载入过程中仔细审查是否需要跨账户访问。