策略评估指南
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 将在载入过程中仔细审查是否需要跨账户访问。