四、内置帮助
现在你已经使用过键值对的密码引擎及AWS下的动态密码生成了,在两个例子之中,结构是使用都是不一样的,那么你要如何记住使用什么路径呢,vault里面有内置的帮助系统,可以通过api或者命令行访问,同时生成可读的帮助信息。
首先我们还是启用aws,通过vault secrets enable -path=aws aws
来启用,然后即可使用vault path-help aws
来查看路径的帮助信息。
我们还可以使用更加具体的方式来查看:vault path-help aws/creds/my-non-existent-role
。
五、认证
Tokens
我们前面使用vault的方式是使用dev server,在这种方式下会默认使用root登录,而在非dev的方式下,就需要做认证了。
当我们使用vault server -dev
是,会返回root token,你也可以创建更多的token:
$ vault token create
Key Value
--- -----
token d8a63580-754a-06e1-0916-789a5e1bacad
token_accessor f7350848-8656-8f03-c918-09186ca1a6e6
token_duration ∞
token_renewable false
token_policies ["root"]
identity_policies []
policies ["root"]
默认情况下,此命令会创建你目前的token的子token,token通常都有一个父token
,如果父token过期了,子token同时也会过期,这样就方便控制用户的权限。
你也可以废弃token:
$ vault token revoke d8a63580-754a-06e1-0916-789a5e1bacad
Success! Revoked token (if it existed)
使用token登录:
$ vault login 9f2a12b5-6073-814a-7ff3-1ff6d5ac6c9b
Success! You are now authenticated. The token information displayed below
is already stored in the token helper. You do NOT need to run "vault login"
again. Future Vault requests will automatically use this token.
Key Value
--- -----
token 9f2a12b5-6073-814a-7ff3-1ff6d5ac6c9b
token_accessor fed3791b-9930-107d-0d3c-c81bc2fd2b1c
token_duration ∞
token_renewable false
token_policies ["root"]
identity_policies []
policies ["root"]
最佳实践
在实际中,不应该使用token create
命令为用户或者机器创建vault tokens,这些用户或者机器应该使用vault配置好的认证方法如GitHub, LDAP, AppRole等。对于一些遗留的无法创建他们token的应用程序,应该提前为他们创建好token。
认证方法
vault支持多种认证方法,在使用前都应该先启用,这里以GitHub为例子,下面两种启用方式都是等价的:
$ vault auth enable -path=github github
$ vault auth enable github
和密码引擎不一样的是,密码引擎通常在root路由下启用,而认证方法的路径的前缀通常都是auth/
,所以我们刚刚启动的GitHub,在auth/github
下可访问。
如果我们使用vault auth enable -path=my-github github
,则可在auth/my-github
下访问到,可以使用vault path-help
来了解有关路径的更多信息。
接下来配置GitHub认证方法,每一种认证方法有不同的配置选项,所以请查看文档。目前,我们只需要使用最小的配置:
$ vault write auth/github/config organization=hashicorp
这个命令会告诉什么organization用户应该属于此认证方法。
然后将一个小组映射到策略下:
$ vault write auth/github/map/teams/my-team value=default,my-policy
Success! Data written to: auth/github/map/teams/my-team
当前而言,这些策略还不一定存在,当我们登录时会得到一个警告。
你也许想看看有什么认证方法是可用的:
$ vault auth list
Path Type Accessor Description
---- ---- -------- -----------
github/ github auth_github_8ffeea5d n/a
token/ token auth_token_0d585c97 token based credentials
使用vault auth help
认证,如vault auth help github
现在可以在登录时使用GitHub来认证了,输入你的GitHub personal access token然后vault会认证:
$ vault login -method=github
GitHub Personal Access Token (will be hidden):
Success! You are now authenticated. The token information displayed below
is already stored in the token helper. You do NOT need to run "vault login"
again. Future Vault requests will automatically use this token.
Key Value
--- -----
token 7efb3969-8743-880f-e234-afca6e12d790
token_accessor f7bfb6a3-c41e-eb87-5317-88a0aad200ae
token_duration 768h
token_renewable true
token_policies [default my-policy]
token_meta_org hashicorp
token_meta_username my-user
成功了~后面都不要再次登录。然而,这个新用户还没有任何权限,因此我们重新使用root登录:
$ vault login <initial-root-token>
你可以废弃任何使用认证方法的登录:
$ vault token revoke -mode path auth/github
如果你想要完全禁用掉认证方法:
$ vault auth disable github