无法使用IAM角色从AWS-EC2上的secretsmanager检索秘密

时间:2020-01-15 02:23:29

标签: amazon-web-services amazon-ec2 amazon-iam aws-secrets-manager

目标:通过命令行以编程方式从aws ec2实例上的secretsmanager中检索秘密。

我创建了一个IAM角色,该策略具有对AWSSecretsManager和AWSEC2instance授予完全访问权限的策略,还可以承担该角色并修改任何AWS ec2实例的角色。 我创建了一个aws实例,并将IAM角色附加到该实例,并执行以下步骤: -AWS Secretsmanager列表秘密 调用ListSecrets操作时发生错误(UnrecognizedClientException):请求中包含的安全令牌无效。

我得到一个错误。我能够使用实例的元数据来检索安全凭证。 -我在这里想念东西吗?我基本上想以安全的方式在aws实例中检索秘密。 -当我尝试运行以上命令列出秘密信息时。 cli抱怨它需要一个区域。我的ec2实例和秘密都在us-east-2中。因此,我使用相同的区域。而且仍然无法正常工作。

任何建议/指针将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:0)

您是否在实例上运行“ aws configure”?听起来好像是在那里使用了令牌,而不是EC2实例角色。请参阅下面的参考资料以了解其检查的顺序,但是基本上,EC2角色是它看起来的最后一个位置,如果它较早获得凭据,它将使用它们。

有关优先级/顺序,请参见此处:https://docs.aws.amazon.com/amazonswf/latest/awsrbflowguide/set-up-creds.html https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html(“使用默认凭据提供程序链”)

答案 1 :(得分:0)

这是我要进行故障排除的方式。

  1. 检查实例是否知道与其关联的IAM角色。

    aws sts get-caller-identity
    
  2. 尝试将区域传递给命令

    aws secretsmanager list-secrets --region us-east-2
    
  3. 我将检查AWS_REGION还是AWS_DEFAULT_REGION,但是即使设置了这些值,传递--region也会覆盖它。

希望这对您有所帮助。