Vault使用AWS的federation_token进行交互

Vault的使用继续深入,通常情况下都是先拿到valut的root token,然后登录设置aws的认证,同时把aws的iam root凭据灌进去,然后write进行论转,这样凭据就只存在于vault之中了,没有泄露的可能。然后从这个root凭据再派生成各种使用时长有限制的临时凭据用。

但是,嘿嘿,我偏偏没有root凭据,因为我是外面管理员。只能用 federation_token 进行登录。

那怎么使用呢?方法如下:

首先在AWS的IAM建立两个policy

 1# Federator 的policy,用于获得token
 2{
 3    "Version": "2012-10-17",
 4    "Statement": [
 5        {
 6            "Sid": "VisualEditor0",
 7            "Effect": "Allow",
 8            "Action": "sts:GetFederationToken",
 9            "Resource": "*"
10        }
11    ]
12}
13
14# Change-self-access-keys 的policy,用于轮转key
15{
16    "Version": "2012-10-17",
17    "Statement": [
18        {
19            "Effect": "Allow",
20            "Action": [
21                "iam:ListUsers",
22                "iam:GetAccountPasswordPolicy"
23            ],
24            "Resource": "*"
25        },
26        {
27            "Effect": "Allow",
28            "Action": [
29                "iam:*AccessKey*",
30                "iam:GetUser"
31            ],
32            "Resource": [
33                "arn:aws:iam::*:user/${aws:username}"
34            ]
35        }
36    ]
37}

然后在Vault中设置使用AWS secrets

 1vault secrets enable aws
 2
 3# aws中需要对应IAM的权限
 4# 要么是真有aws iam的用户;要么是有一个role,和对应的临时用户;二选一
 5vault write aws/config/root access_key=YYY \ 
 6  secret_key=XXX region=us-east-1 \
 7  sts_endpoint=https://sts.us-east-1.amazonaws.com sts_region=us-east-1
 8  
 9# 轮转root凭据,这样root凭据就只存在于vault中了
10vault write -force aws/config/rotate-root

使用方法:

 1# 首先vault先建一个角色,这里的角色是ec2-admin:
 2vault write aws/roles/$role - < aws/roles/$role.json
 3内容如下:
 4{
 5  "credential_type": "federation_token",
 6  "default_sts_ttl": 300,
 7  "iam_groups": null,
 8  "max_sts_ttl": 3600,
 9  "policy_arns": [
10    "arn:aws:iam::aws:policy/AmazonEC2FullAccess"
11  ],
12  "policy_document": ""
13}
14
15# 拿到AK
16vault write aws/sts/ec2-admin ttl=15m   
17Key                Value
18---                -----
19lease_id           aws/sts/ec2-admin/NNN
20lease_duration     14m59s
21lease_renewable    false
22access_key         XXX
23secret_key         YYY
24security_token     ZZZ
25ttl                14m59s

正常使用AWS的凭据的文章:

  1. https://devopstronaut.com/hashicorp-vault-101-10-step-by-step-guide-to-configuring-dynamic-aws-credentials-using-iam-user-edb5a75f868a
  2. https://notes.kodekloud.com/docs/HashiCorp-Certified-Vault-Associate-Certification/Compare-and-Configure-Secrets-Engines/Demo-AWS-Secrets-Engine-IAM

Vault使用external Secret管理kubernetes Secret
comments powered by Disqus