IAM用户内联策略使用Partial-ARN访问Secrets Manager失败排查
Partial-ARN未匹配实际密钥的ARN结构
Secrets Manager创建密钥时,会自动在自定义名称后追加-加6位随机字符(即使创建时未指定后缀)。如果你的Partial-ARN写的是不带通配符的完整自定义名称(比如arn:aws:secretsmanager:us-east-1:123456789012:secret:iam-devuser),它只会匹配完全没有自动追加后缀的密钥,而实际存在的密钥ARN带后缀,自然匹配失败;Full-ARN是精准匹配实际ARN,所以生效。通配符或大小写使用错误
比如策略里的Partial-ARN写的是arn:aws:secretsmanager:us-east-1:123456789012:secret:iam-devuser-*,但实际密钥名称是IAM-DevUser-abcd123(大小写不一致),或者通配符位置写错(比如写成iam-devuser*但实际后缀前有连字符),都会导致匹配失败。而Full-ARN完全匹配实际ARN的大小写和字符,所以没问题。Permissions Boundary(权限边界)限制
如果该IAM用户设置了权限边界,且边界策略仅允许对特定Full-ARN的密钥执行操作,那么即使内联策略用Partial-ARN授权了,边界策略会优先限制权限,导致Partial-ARN的授权不生效;而Full-ARN在边界策略的允许范围内,所以可以正常执行。Partial-ARN缺少必要的ARN组件
AWS资源ARN的匹配要求Partial-ARN包含足够的识别信息,比如如果你写的Partial-ARN省略了区域或账号ID(比如arn:aws:secretsmanager:::secret:iam-devuser*),这种模糊写法可能无法正确定位到目标密钥;而Full-ARN包含了完整的区域、账号ID、资源名称等所有组件,匹配精准。策略条件语句冲突
如果内联策略中添加了Condition条件(比如限制请求IP、资源标签等),当用Partial-ARN时,策略会匹配所有符合Partial-ARN的资源,但其中部分资源不满足条件,导致权限被拒绝;而用Full-ARN时,目标资源刚好符合条件要求,所以能正常执行。IAM权限缓存延迟
虽然少见,但IAM权限更新后可能存在几分钟的缓存延迟。如果刚修改Partial-ARN策略就测试,可能旧的权限缓存还没失效,导致授权失败;而切换到Full-ARN后,要么缓存刚好更新,要么Full-ARN的权限是之前就生效的,所以能正常执行。可以等待几分钟或重新生成IAM凭证验证这种情况。
内容的提问来源于stack exchange,提问作者David Jacobsen

