同区域跨AWS账号共享访问Parameter Store密钥是否可行?
同区域跨账号通过AWS CLI访问Parameter Store密钥配置方案
源账号侧配置(存储凭证的账号)
- 打开Parameter Store控制台,定位到需要共享的数据库凭证参数,进入参数详情的策略配置页,添加资源访问策略,授权目标账号的指定IAM用户具备参数读取权限,策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<目标账号ID>:user/<目标账号用于拉取密钥的IAM用户名>" }, "Action": [ "ssm:GetParameter", "ssm:GetParameters" ], "Resource": "arn:aws:ssm:<部署区域标识>:<源账号ID>:parameter/<参数完整路径,例如/prod/db/credential>" } ] }
- 若参数为
SecureString加密类型,需找到加密该参数使用的KMS客户管理密钥,在密钥的访问策略中给同一个目标IAM用户添加kms:Decrypt权限,否则无法解密获取参数明文。
目标账号侧配置(执行构建操作的账号)
- 找到用于构建阶段拉取密钥的IAM用户,给该用户附加最小权限的自定义IAM策略,策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter", "ssm:GetParameters" ], "Resource": "arn:aws:ssm:<部署区域标识>:<源账号ID>:parameter/<参数完整路径>" }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:<部署区域标识>:<源账号ID>:key/<源账号加密参数的KMS密钥ID>" } ] }
CLI访问验证
- 在构建环境配置该IAM用户的访问凭证,确保CLI默认区域与参数存储的区域完全一致
- 执行参数拉取命令验证权限,拉取加密参数必须携带
--with-decryption参数,直接输出明文的命令如下:aws ssm get-parameter --name "<你的参数完整路径>" --with-decryption --query "Parameter.Value" --output text - 命令执行后会直接输出参数明文,可直接捕获该值注入应用的环境变量。
注意事项
- 权限配置严格遵循最小权限原则,仅授予参数读取、KMS解密权限,不要授予参数修改、删除类权限,避免凭证被篡改
- 构建环境优先使用短时效STS临时凭证,不要使用长期永久AK/SK,降低凭证泄露带来的安全风险
- 若需要共享同一路径前缀下的多个参数,可在策略的Resource字段使用通配符
*做路径匹配,减少策略维护成本
内容的提问来源于stack exchange,提问作者Richard Lee
相关产品推荐
相关产品推荐

