Vault-Consul-AK\SK动态切换

 

Vault

wget https://releases.hashicorp.com/vault/1.11.2/vault_1.11.2_linux_amd64.zip
unzip -d /usr/local/bin vault_1.11.2_linux_amd64.zip
vault server -dev -dev-listen-address=0.0.0.0:8200 

新开终端

export VAULT_ADDR='http://127.0.0.1:8200'
export VAULT_TOKEN="hvs.l6LaNr28TufGp3pyoqOrIG6a"
vault status -address='http://127.0.0.1:8200'
vault secrets enable alicloud
  • 在阿里云中创建一个自定义策略 ,用于您将提供给 Vault 的访问密钥。请参阅“Example RAM Policy for Vault”。

  • 在阿里云中创建一个名为“hashicorp-vault”的用户,并在“用户授权策略”部分直接将新的自定义策略应用到该用户,我直接使用最高权限。

  • 在阿里云中为该用户创建访问密钥,这是用户页面上阿里云 UI 中可用的操作。

image

vault write alicloud/config \
    access_key= \
    secret_key=

image

配置一个角色,描述如何授予凭据。仅使用已在阿里云中创建的策略生成访问令牌。

vault write alicloud/role/policy-based \
    remote_policies='name:AdministratorAccess,type:System' 

仅使用将由 Vault 在阿里云中动态创建的策略生成访问令牌:

vault write alicloud/role/policy-based \
    inline_policies=-<<EOF
[
    {
        "Statement": [
            {
                "Action": "*",
                "Effect": "Allow",
                "Resource": "*"
            }
        ],
        "Version": "1"
    }
]
EOF
vault write alicloud/role/dev-role   role_arn='acs:ram::1578287549522794:role/dev-role'

image

生成密钥

在配置秘密引擎并且用户/机器拥有具有适当权限的 Vault 令牌后,它可以生成凭据。 /creds通过从具有角色名称的端点读取来生成新的访问密钥:

vault read alicloud/creds/policy-based

image

回收密钥

vault lease revoke alicloud/creds/policy-based/KSPlpAF9wwoc88Pg4wvVZyKg

可以看到生成了新的用户

image

指定存储后端consul

vim config.hcl
storage "consul" {
  address = "127.0.0.1:8500"
  path    = "vault/"
  token = "    "
}
vault server -dev -dev-listen-address=0.0.0.0:8200 -config=/root/config.hcl

image

image

 curl  http://127.0.0.1:8500/v1/kv/vault/sys/expire/id/alicloud/creds/policy-based/iPed4e7I2dWZAIpN4UZkZDe9 --header "X-Consul-Token: 66911333-d553-f761-c425-a3aee5c0a165"

image

常用接口

curl   --header "X-Vault-Token: hvs.gbX5tfnfhlXxHskROzVCJdlZ"     http://127.0.0.1:8200/v1/alicloud/creds/policy-based

curl \
    --header "X-Vault-Token: hvs.CdprfudGwNYeTu2LX1wynrk2" \
    --request DELETE \
    http://127.0.0.1:8200/v1/alicloud/creds/policy-based/


curl     --header "X-Vault-Token: hvs.CdprfudGwNYeTu2LX1wynrk2"     --request POST        http://127.0.0.1:8200/v1/sys/leases/revoke/alicloud/creds/policy-based/B05ejqI42NnyFA4l6HHWi9Gz

curl \
    --header "X-Vault-Token: hvs.gbX5tfnfhlXxHskROzVCJdlZ" \
    --request LIST \
    http://127.0.0.1:8200/v1/auth/alicloud/roles

consul秘钥

wget https://releases.hashicorp.com/consul/1.13.1/consul_1.13.1_linux_amd64.zip
unzip -d /usr/local/bin consul_1.13.1_linux_amd64.zip
consul agent -dev -ui -client 0.0.0.0

CONSUL启用ACL

mkdir /etc/consul.d
cd /etc/consul.d
vim consul-acl.hcl
acl = {
  enabled = true
  default_policy = "deny"
  enable_token_persistence = true
}
consul agent -dev -ui -client 0.0.0.0 -config-dir=/etc/consul.d/
consul acl bootstrap

image

WEB UI输入SecretID

image

vault write consul/config/access  address="127.0.0.1:8500" token="eb88815c-2065-b1f8-7920-6ea7b5cb532a"

image