Hashicorp vault 使用IAM用户或角色进行身份验证

Hashicorp vault 使用IAM用户或角色进行身份验证,hashicorp-vault,Hashicorp Vault,我有一个EC2实例,我想从中登录到vault以检索机密。我的vault服务器在K8s群集中运行。我在vault中创建了一个角色 vault write auth/aws/role/test-role \ auth_type=iam \ policies=test-policy \ max_ttl=1h \ bound_iam_principal_arn=arn:aws:iam::<account-id>:role/instance-group-role-name-cl

我有一个EC2实例,我想从中登录到vault以检索机密。我的vault服务器在K8s群集中运行。我在vault中创建了一个角色

vault write auth/aws/role/test-role \
  auth_type=iam \
  policies=test-policy \
  max_ttl=1h \
  bound_iam_principal_arn=arn:aws:iam::<account-id>:role/instance-group-role-name-client
vault写验证/aws/角色/测试角色\
认证类型=iam\
策略=测试策略\
最大ttl=1h\
绑定的\u iam\u主体\u arn=arn:aws:iam:::角色/实例组角色名称客户端
以及政策测试政策。根据AWS资源(EC2)上的文档,我的vault客户端使用“GetCallerIdentity”方法创建对STS的请求,并使用其AWS凭据对其进行签名。它将签名的STS请求与登录请求一起附加到vault服务器。vault服务器将由客户端签名的请求发送到AWS,以获得标识源的响应。因此,K8s中的我的vault实例组角色需要以下iam权限:

statement {
  effect  = "Allow"
  actions = ["iam:GetRole", "iam:GetUser"]     
  resources = [
    "arn:aws:iam::<account-id>:role/instance-group-role-name-client"
  ]
}

statement {
  effect    = "Allow"
  actions   = ["sts:GetCallerIdentity"]
  resources = ["*"]
}
语句{
effect=“允许”
操作=[“iam:GetRole”,“iam:GetUser”]
资源=[
“arn:aws:iam:::角色/实例组角色名称客户端”
]
}
声明{
effect=“允许”
actions=[“sts:GetCallerIdentity”]
资源=[“*”]
}
那很好。我能找回秘密。但即使我删除iam vault实例组角色的iam权限,它也可以工作。据我所知,vault不应再能够识别请求的来源。为什么它能工作呢