组织内跨账号AWS Lambda Layer访问SecretsManager权限问询
问题分析与解答
首先明确:你设置的Lambda Layer权限和跨账号访问SecretsManager密钥完全无关。这个Layer权限仅控制组织内账号能否获取(lambda:GetLayerVersion)并附加该Layer到自己的Lambda函数,不涉及Layer内部代码的权限逻辑。
导致账号B的Lambda能访问账号A密钥的原因,大概率是以下两类授权策略的组合:
1. 账号B的Lambda执行角色权限
账号B中运行的Lambda函数,使用的执行角色必须具备secretsmanager:GetSecretValue权限,且权限策略的资源范围包含账号A中目标密钥的ARN(或者用通配符覆盖)。
比如执行角色的权限策略可能有类似条目:
{ "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:us-east-1:账号A-ID:secret:your-secret-name-*" }
2. 账号A的SecretsManager资源策略
仅账号B的执行角色有本地权限还不够,账号A中的目标密钥必须通过资源策略(也叫基于资源的策略)允许外部身份(账号B的执行角色或整个组织)访问。
比如该密钥的资源策略可能包含允许组织内账号访问的规则:
{ "Effect": "Allow", "Principal": "*", "Action": "secretsmanager:GetSecretValue", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-man-o-man" } } }
或者直接指定账号B的执行角色ARN作为Principal。
验证步骤
- 登录账号A,查看目标SecretsManager密钥的资源策略,确认是否存在允许组织内账号或账号B身份访问的配置
- 登录账号B,查看Lambda函数的执行角色权限策略,确认是否包含针对账号A密钥的
secretsmanager:GetSecretValue权限 - 检查组织的SCP(服务控制策略),确认没有阻止这种跨账号SecretsManager访问的规则(SCP默认不限制,除非主动添加了拒绝策略)
内容的提问来源于stack exchange,提问作者varontron
相关产品推荐
相关产品推荐

