【发布时间】:2021-07-17 16:18:28
【问题描述】:
我的 EC2 在 Dev 账户中,我的凭证在 AWS 的安全账户中, 我正在尝试从我的安全帐户中检索 Secret Manager 中的机密,EC2 和凭据都在不同的区域中
aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-2:2222222:secret:demo/democreds/secret_string --version-stage AWSCURRENT --region us-east-2
我可以通过上述命令获取秘密,但是在运行 terraform plan 时,我得到了 这个错误:
Error: error reading Secrets Manager Secret Version: AccessDeniedException: User: arn:aws:sts::1111111111:assumed-role/user_name/xxxxxxxxx is not authorized to perform: secretsmanager:GetSecretValue on resource: arn:aws:secretsmanager:us-east-2:222222222:secret:demo/democreds/secret_string
status code: 400, request id: 123dcdaaaa-cdcd33-2bb0d-6dhbc-083gbd6622111
我已经为我用于 secretsmanager:GetSecretValue 的角色附加了一个策略
【问题讨论】:
-
对于跨区域访问,您需要在您的 terraform 代码中添加第二个
provider,您可以在其中指定不同的区域。您将区域所在的 arn 中有趣的部分删掉了,我猜错误消息中的 arn 包含错误的区域!? -
@luk2302 感谢您的评论,我已经检查了ARN,它们是正确的,我的ec2在不同的区域,凭据放在不同帐户的不同区域
-
那么你需要提供更多的细节,而不是删除这么多有用的东西。涉及哪些地区,哪些账户(您可以使用 111111 和 22222 作为账户 id,但包括它们以便我们知道什么是跨账户,什么不是),哪些用户,这里涉及的权限是什么?
-
现在检查,ec2 在 ca-central-1
-
作为什么用户执行第一个请求?作为
1111111111或2222222中的一个?
标签: amazon-web-services terraform terraform-provider-aws aws-secrets-manager