概述
本文主要介绍使用approle的Authentication方式,认证secre kv,及注意事项。
安装及使用方法
-
安装方式参考官方文档
-
正式环境启动使用
vault server -config=config.hcl
或者systemctl start vault
; -
然后按照如下步骤进行初始化:
export VAULT_ADDR='http://127.0.0.1:8200' vault operator init
-
unseal key
vault operator unseal
关于seal和unseal的概念,请参考官方文档 -
Enable kv engine
vault secrets enable -path=secret kv
所有的kv将存储在secret类型的path下面 -
Enable approle
vault auth enable approle
-
写入kv数据
官方文档介绍入下:
The path-like KV-v1 syntax for referencing a secret (secret/foo) can still be used in KV-v2, but we recommend using the -mount=secret flag syntax to avoid mistaking it for the actual path to the secret (secret/data/foo is the real path).
由于使用的是KV-v2,所以创建kv时,建议使用新语法加上-mount=secret
来避免不必要的麻烦,因为v2版本中,secret后面要加上path,如下所示:
vault kv put -mount=secret k8s/k8s-sit robof=beepboopffaf
-
创建名字为k8s-policy的policy
vault policy write k8s-policy - << EOF path "secret/data/*" { capabilities = ["create", "update"] } path "secret/data/k8s/*" { capabilities = ["read"] } EOF
此处需要特别注意的是里面的path,不管是完全匹配,或者是使用通配符,最后一级path后面不能再加上
/
,最后一级path后面就是kv值了,如果加上/
,会匹配不到,报权限不够的错误,关于此处匹配的使用详情,可参考官方文档
-
创建名字为k8s-role的role,并关联上述k8s-policy
vault write auth/approle/role/k8s-role \ secret_id_ttl=100h \ token_num_uses=10000 \ token_ttl=200h \ token_max_ttl=300h \ secret_id_num_uses=40000 \ token_policies=k8s-policy
关于此处的一些参数解释,可点击此处参考官方文档。
-
获取role_id和secret_id,如下:
export ROLE_ID="$(vault read -field=role_id auth/approle/role/k8s-role/role-id)" export SECRET_ID="$(vault write -f -field=secret_id auth/approle/role/k8s-role/secret-id)"
-
生成token
vault write auth/approle/login role_id="$ROLE_ID" secret_id="$SECRET_ID"
此时用获取的token既可以访问policy中设置的内容。