美文网首页
Vault---机密信息管理工具安装及常用示例

Vault---机密信息管理工具安装及常用示例

作者: haiyong6 | 来源:发表于2021-04-18 16:47 被阅读0次

    介绍

    Vault是一款机密信息管理工具,类似PKI管理工具。

    支持KV密码引擎保存键值对信息,可以把密匙保存在json键值对里。

    支持数据库或云服务密码引擎,用来对数据库、SSH、云服务等生成动态密码,在隐藏原有密码的基础上可以设置生成动态密码,设置动态密码的有效期从而对每一对分发的动态密码做管理,类似浏览器自动生成密码的功能,即使被第三方盗取了也没关系,这种用到的情况比较少,可能在需要给其他供应商临时用用数据库的时候才有用。

    支持PKI证书ca证书的生成和cert证书的分发。

    Vault可以配置不同的策略(policy),来生成策略里不同权限的token,每次请求vault的时候表头都必须带着包含此接口权限的token,所以可以通过不同的policy生成不同权限的token来保证谁能访问哪些数据,他的强大之处并不在于保存了这些机密信息,更重要的是可以对这些机密信息的访问权限进行管控。

    Vault默认把存储的机密信息存在磁盘文件里,在第一次启动Vault的时候需要先进行初始化操作,此时会生成几个key,和一个rootToken,那些key就是用来解封存储信息的,而这些key是在初始化的时候随机生成的,所以在Vault初始化的时候一定要保存好生成的key,只有通过这些key解封vault后,才可以访问到里面存储的机密信息。所以就连vault本身也不知道存储的信息究竟是什么,大大增强了安全性,但是千万不要把这些key搞丢了,不然有可能会永远失去这些机密信息的访问权限。

    初始化的时候默认会生成5个key,解封的时候默认验证其中的随便三个key,全部对的上才可以解封vault里面的机密信息,这个key的数量和验证的次数在初始化的时候是可以通过加参数的方式自行更改的,在极端情况下,生成的这些key可以通过不同的人保管,每人保管一个key,比如,生成5个key,通过不同的5个人分别保管,这样当服务停掉再次启动服务时,只有这五个人中的至少三个人把拥有的key拿出来才可以解封vault里面存储的机密信息,是不是有点像集齐七龙珠召唤神龙的感觉。看来龙珠很早就知道这种加密方法了啊,小时候居然意识不到,实在惭愧~

    github地址:https://hub.fastgit.org/hashicorp/vault
    官网: https://www.vaultproject.io
    开发文档说明:https://www.vaultproject.io/docs/
    官网快速入门教程:HashiCorp's Learn Platform
    官方文档中http api:https://www.vaultproject.io/api-docs

    Vault可以通过CLI(linux命令行)、HTTP API来操作访问,实际上CLI底层也是做了HTTP API转换然后去请求vault服务器的,对于java程序员来说,可以做一个前置java服务通过HTTP API来统一访问vault,会比较方便。

    安装(ubuntu为例)

    vault下载地址:https://www.vaultproject.io/downloads
    下载解压后会有一个vault文件,把安装路径加入环境变量

    如果以前存在PATH路径则多个路径之间用:分隔,如安装路径是/root/vault/vault

    export PATH=$PATH:/root/vault/
    

    此时执行vault命令就可以看到以下信息说明安装成功了,是不是很简单。

    zhaohy@zhaohy-Lenovo-Legion-R7000-2020:/usr/share$ vault
    Usage: vault <command> [args]
    
    Common commands:
        read        Read data and retrieves secrets
        write       Write data, configuration, and secrets
        delete      Delete secrets and configuration
        list        List data or secrets
        login       Authenticate locally
        agent       Start a Vault agent
        server      Start a Vault server
        status      Print seal and HA status
        unwrap      Unwrap a wrapped secret
    
    Other commands:
        audit          Interact with audit devices
        auth           Interact with auth methods
        debug          Runs the debug command
        kv             Interact with Vault's Key-Value storage
        lease          Interact with leases
        monitor        Stream log messages from a Vault server
        namespace      Interact with namespaces
        operator       Perform operator-specific tasks
        path-help      Retrieve API help for paths
        plugin         Interact with Vault plugins and catalog
        policy         Interact with policies
        print          Prints runtime configurations
        secrets        Interact with secrets engines
        ssh            Initiate an SSH session
        token          Interact with tokens
    

    启动并初始化

    在vault安装路径新建config.hcl

    ui = true
    disable_mlock = true
    
    storage "raft" {
      path    = "/home/zhaohy/myspace/profiles/vault/data"
      node_id = "node1"
    }
    
    listener "tcp" {
      address     = "0.0.0.0:8200"
      tls_disable = "true"
    }
    
    api_addr = "http://127.0.0.1:8200"
    cluster_addr = "https://127.0.0.1:8201"
    

    上面存储路径定义的是/home/zhaohy/myspace/profiles/vault/data,所以要保证data这个文件夹存在,没有的话在/home/zhaohy/myspace/profiles/vault/文件夹下新建,也可以指定其他位置。
    启动命令:

    vault server -config=config.hcl
    

    设置环境变量VAULT_ADDR

    export VAULT_ADDR='http://127.0.0.1:8200'
    

    第一次启动的时候要先初始化,后面再启动就不用再初始化了

    vault operator init
    

    初始化之后会得到5个key和一个root token,保存这些信息。如:

    zhaohy@zhaohy-Lenovo-Legion-R7000-2020:~/myspace/profiles/vault$ vault operator init
    Unseal Key 1: Nmvwu+36tZANTWBdLX+eFWK9PXRC8XN2B+6UBx1hFQ5m
    Unseal Key 2: rFXCziQkyPPCROEAFzlCrGNKy3JZPJn6L8E1zpxRbT/j
    Unseal Key 3: ALVkUiR4aVdbNrETUpaPqOUvaBUMl8gTAX6s6caZcy/+
    Unseal Key 4: 2tl9Fl6fXwefluhyHbxpNIbYNOuSmxMwIFwDUEsqJFC6
    Unseal Key 5: m58KajrUksOz0xeoglS6z/8pMLxr0yVsXeYnhQ9Eux3J
    
    Initial Root Token: s.Xu7quPen8GBxjhVUtI1lq1XD
    
    Vault initialized with 5 key shares and a key threshold of 3. Please securely
    distribute the key shares printed above. When the Vault is re-sealed,
    restarted, or stopped, you must supply at least 3 of these keys to unseal it
    before it can start servicing requests.
    
    Vault does not store the generated master key. Without at least 3 key to
    reconstruct the master key, Vault will remain permanently sealed!
    
    It is possible to generate new unseal keys, provided you have a quorum of
    existing unseal keys shares. See "vault operator rekey" for more information.
    

    解封

    默认启动是密封的,要先解封才能使用

    用刚刚启动得到的5个key和token解封,默认会解封三次,用其中的随便3个key

    此时访问http://127.0.0.1:8200/ui可以在网页上请求http api的形式解封,也可以用CLI命令解封

    vault解封界面
    如上图,输入5个key中的随便一个,连续解封三次(三次的key不能相同)
    或者命令行解封三次也是同样的效果
    vault operator unseal
    

    登录

    可以用刚刚的token登录,也可以在root下面生成新的token来登录(继承root token的权限,后面再说)

    vault login <Initial_Root_Token>
    

    也可以在http界面上输入登录

    停止服务命令

    ps aux | grep "vault server" | grep -v grep | awk '{print $2}' | xargs kill
    

    登录之后我们就可以看到http界面上的主页界面:


    vault主页界面

    默认会有一个cubbyhole的kv密码引擎
    可以在界面上在里面新建path和键值对(通过http api的形式)
    当然这些都可以通过CLI命令行或者HTTP API的形式进行和vault服务器交互

    policy默认会有default和root两个策略,root有全部的权限。
    可以新建policy,配置不同的路径策略,就可以通过这些policy生成不同权限的token

    新建policy以及生成token的方法可以去https://www.vaultproject.io/api-docs里查看http api如何使用,还是比较简单的。
    我在postman上总结了一些常用api用法例子:

    vault postman截图
    导出的postman请求json如下:
    {
        "info": {
            "_postman_id": "308e9ecc-2a29-466e-8732-2411e39b510d",
            "name": "vault",
            "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
        },
        "item": [
            {
                "name": "初始化",
                "request": {
                    "method": "POST",
                    "header": [],
                    "body": {
                        "mode": "raw",
                        "raw": "{\"secret_shares\": 1, \"secret_threshold\": 1}",
                        "options": {
                            "raw": {
                                "language": "json"
                            }
                        }
                    },
                    "url": {
                        "raw": "http://127.0.0.1:8200/v1/sys/init",
                        "protocol": "http",
                        "host": [
                            "172",
                            "26",
                            "239",
                            "235"
                        ],
                        "port": "8200",
                        "path": [
                            "v1",
                            "sys",
                            "init"
                        ]
                    }
                },
                "response": []
            },
            {
                "name": "根据序列号查询crt证书",
                "protocolProfileBehavior": {
                    "disableBodyPruning": true
                },
                "request": {
                    "method": "GET",
                    "header": [
                        {
                            "key": "X-Vault-Token",
                            "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                            "type": "text"
                        }
                    ],
                    "body": {
                        "mode": "raw",
                        "raw": "{}",
                        "options": {
                            "raw": {
                                "language": "json"
                            }
                        }
                    },
                    "url": {
                        "raw": "http://127.0.0.1:8200/v1/pki/cert/27-b4-0f-19-43-61-3c-70-16-b5-3b-60-5d-29-7b-99-f7-b0-30-2f",
                        "protocol": "http",
                        "host": [
                            "172",
                            "26",
                            "239",
                            "235"
                        ],
                        "port": "8200",
                        "path": [
                            "v1",
                            "pki",
                            "cert",
                            "27-b4-0f-19-43-61-3c-70-16-b5-3b-60-5d-29-7b-99-f7-b0-30-2f"
                        ]
                    }
                },
                "response": []
            },
            {
                "name": "查询证书cert序列号",
                "request": {
                    "method": "LIST",
                    "header": [
                        {
                            "key": "X-Vault-Token",
                            "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                            "type": "text"
                        }
                    ],
                    "url": {
                        "raw": "http://127.0.0.1:8200/v1/pki/certs",
                        "protocol": "http",
                        "host": [
                            "172",
                            "26",
                            "239",
                            "235"
                        ],
                        "port": "8200",
                        "path": [
                            "v1",
                            "pki",
                            "certs"
                        ]
                    }
                },
                "response": []
            },
            {
                "name": "新建token",
                "request": {
                    "method": "POST",
                    "header": [
                        {
                            "key": "X-Vault-Token",
                            "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                            "type": "text"
                        }
                    ],
                    "body": {
                        "mode": "raw",
                        "raw": "{\"period\":\"240\"}",
                        "options": {
                            "raw": {
                                "language": "json"
                            }
                        }
                    },
                    "url": {
                        "raw": "http://127.0.0.1:8200/v1/auth/token/create",
                        "protocol": "http",
                        "host": [
                            "172",
                            "26",
                            "239",
                            "235"
                        ],
                        "port": "8200",
                        "path": [
                            "v1",
                            "auth",
                            "token",
                            "create"
                        ]
                    }
                },
                "response": [
                    {
                        "name": "新建token",
                        "originalRequest": {
                            "method": "POST",
                            "header": [
                                {
                                    "key": "X-Vault-Token",
                                    "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                                    "type": "text"
                                }
                            ],
                            "body": {
                                "mode": "raw",
                                "raw": "{\"period\":\"3600\",\"policies\":[\"test-policy\"]}",
                                "options": {
                                    "raw": {
                                        "language": "json"
                                    }
                                }
                            },
                            "url": {
                                "raw": "http://127.0.0.1:8200/v1/auth/token/create",
                                "protocol": "http",
                                "host": [
                                    "172",
                                    "26",
                                    "239",
                                    "235"
                                ],
                                "port": "8200",
                                "path": [
                                    "v1",
                                    "auth",
                                    "token",
                                    "create"
                                ]
                            }
                        },
                        "status": "OK",
                        "code": 200,
                        "_postman_previewlanguage": "json",
                        "header": [
                            {
                                "key": "Cache-Control",
                                "value": "no-store"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Date",
                                "value": "Thu, 15 Apr 2021 09:54:30 GMT"
                            },
                            {
                                "key": "Content-Length",
                                "value": "429"
                            }
                        ],
                        "cookie": [],
                        "body": "{\n    \"request_id\": \"7ede45aa-e0c5-0f65-ee0b-04fa06cec028\",\n    \"lease_id\": \"\",\n    \"renewable\": false,\n    \"lease_duration\": 0,\n    \"data\": null,\n    \"wrap_info\": null,\n    \"warnings\": null,\n    \"auth\": {\n        \"client_token\": \"s.3luOj8yNzW4nwvMIMY2SIfQK\",\n        \"accessor\": \"6I5GVJtoqqOEqNc6wtd67BlT\",\n        \"policies\": [\n            \"default\",\n            \"test-policy\"\n        ],\n        \"token_policies\": [\n            \"default\",\n            \"test-policy\"\n        ],\n        \"metadata\": null,\n        \"lease_duration\": 3600,\n        \"renewable\": true,\n        \"entity_id\": \"\",\n        \"token_type\": \"service\",\n        \"orphan\": false\n    }\n}"
                    }
                ]
            },
            {
                "name": "查看自己token的配置",
                "protocolProfileBehavior": {
                    "disableBodyPruning": true
                },
                "request": {
                    "method": "GET",
                    "header": [
                        {
                            "key": "X-Vault-Token",
                            "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                            "type": "text"
                        }
                    ],
                    "body": {
                        "mode": "raw",
                        "raw": "",
                        "options": {
                            "raw": {
                                "language": "json"
                            }
                        }
                    },
                    "url": {
                        "raw": "http://127.0.0.1:8200/v1/auth/token/lookup-self",
                        "protocol": "http",
                        "host": [
                            "172",
                            "26",
                            "239",
                            "235"
                        ],
                        "port": "8200",
                        "path": [
                            "v1",
                            "auth",
                            "token",
                            "lookup-self"
                        ]
                    }
                },
                "response": [
                    {
                        "name": "查看自己token的配置",
                        "originalRequest": {
                            "method": "GET",
                            "header": [
                                {
                                    "key": "X-Vault-Token",
                                    "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                                    "type": "text"
                                }
                            ],
                            "body": {
                                "mode": "raw",
                                "raw": "",
                                "options": {
                                    "raw": {
                                        "language": "json"
                                    }
                                }
                            },
                            "url": {
                                "raw": "http://127.0.0.1:8200/v1/auth/token/lookup-self",
                                "protocol": "http",
                                "host": [
                                    "172",
                                    "26",
                                    "239",
                                    "235"
                                ],
                                "port": "8200",
                                "path": [
                                    "v1",
                                    "auth",
                                    "token",
                                    "lookup-self"
                                ]
                            }
                        },
                        "status": "OK",
                        "code": 200,
                        "_postman_previewlanguage": "json",
                        "header": [
                            {
                                "key": "Cache-Control",
                                "value": "no-store"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Date",
                                "value": "Thu, 15 Apr 2021 09:08:22 GMT"
                            },
                            {
                                "key": "Content-Length",
                                "value": "461"
                            }
                        ],
                        "cookie": [],
                        "body": "{\n    \"request_id\": \"77d2c894-ceb0-4320-7947-801805da557b\",\n    \"lease_id\": \"\",\n    \"renewable\": false,\n    \"lease_duration\": 0,\n    \"data\": {\n        \"accessor\": \"j8Px6MoDMppeWcZz2fJlDnyg\",\n        \"creation_time\": 1618051941,\n        \"creation_ttl\": 0,\n        \"display_name\": \"root\",\n        \"entity_id\": \"\",\n        \"expire_time\": null,\n        \"explicit_max_ttl\": 0,\n        \"id\": \"s.M8UXMFH6p5KUS6S5Ta5ruY6X\",\n        \"meta\": null,\n        \"num_uses\": 0,\n        \"orphan\": true,\n        \"path\": \"auth/token/root\",\n        \"policies\": [\n            \"root\"\n        ],\n        \"ttl\": 0,\n        \"type\": \"service\"\n    },\n    \"wrap_info\": null,\n    \"warnings\": null,\n    \"auth\": null\n}"
                    }
                ]
            },
            {
                "name": "查看指定token的配置",
                "request": {
                    "method": "POST",
                    "header": [
                        {
                            "key": "X-Vault-Token",
                            "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                            "type": "text"
                        }
                    ],
                    "body": {
                        "mode": "raw",
                        "raw": "{\"token\":\"s.8hRkajciaXbkOQYzMQV1RIhH\"}",
                        "options": {
                            "raw": {
                                "language": "json"
                            }
                        }
                    },
                    "url": {
                        "raw": "http://127.0.0.1:8200/v1/auth/token/lookup",
                        "protocol": "http",
                        "host": [
                            "172",
                            "26",
                            "239",
                            "235"
                        ],
                        "port": "8200",
                        "path": [
                            "v1",
                            "auth",
                            "token",
                            "lookup"
                        ]
                    }
                },
                "response": []
            },
            {
                "name": "续订指定token",
                "request": {
                    "method": "POST",
                    "header": [
                        {
                            "key": "X-Vault-Token",
                            "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                            "type": "text"
                        }
                    ],
                    "body": {
                        "mode": "raw",
                        "raw": "{\r\n  \"token\": \"s.PbftZ3fDiHCtcnAFZftmZYzb\"\r\n}",
                        "options": {
                            "raw": {
                                "language": "json"
                            }
                        }
                    },
                    "url": {
                        "raw": "http://127.0.0.1:8200/v1/auth/token/renew",
                        "protocol": "http",
                        "host": [
                            "172",
                            "26",
                            "239",
                            "235"
                        ],
                        "port": "8200",
                        "path": [
                            "v1",
                            "auth",
                            "token",
                            "renew"
                        ]
                    }
                },
                "response": []
            },
            {
                "name": "吊销token",
                "request": {
                    "method": "POST",
                    "header": [
                        {
                            "key": "X-Vault-Token",
                            "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                            "type": "text"
                        }
                    ],
                    "body": {
                        "mode": "raw",
                        "raw": "{\r\n  \"token\": \"s.8hRkajciaXbkOQYzMQV1RIhH\"\r\n}",
                        "options": {
                            "raw": {
                                "language": "json"
                            }
                        }
                    },
                    "url": {
                        "raw": "http://127.0.0.1:8200/v1/auth/token/revoke",
                        "protocol": "http",
                        "host": [
                            "172",
                            "26",
                            "239",
                            "235"
                        ],
                        "port": "8200",
                        "path": [
                            "v1",
                            "auth",
                            "token",
                            "revoke"
                        ]
                    }
                },
                "response": [
                    {
                        "name": "吊销token",
                        "originalRequest": {
                            "method": "POST",
                            "header": [
                                {
                                    "key": "X-Vault-Token",
                                    "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                                    "type": "text"
                                }
                            ],
                            "body": {
                                "mode": "raw",
                                "raw": "{\r\n  \"token\": \"s.8hRkajciaXbkOQYzMQV1RIhH\"\r\n}",
                                "options": {
                                    "raw": {
                                        "language": "json"
                                    }
                                }
                            },
                            "url": {
                                "raw": "http://127.0.0.1:8200/v1/auth/token/revoke",
                                "protocol": "http",
                                "host": [
                                    "172",
                                    "26",
                                    "239",
                                    "235"
                                ],
                                "port": "8200",
                                "path": [
                                    "v1",
                                    "auth",
                                    "token",
                                    "revoke"
                                ]
                            }
                        },
                        "status": "No Content",
                        "code": 204,
                        "_postman_previewlanguage": "json",
                        "header": [
                            {
                                "key": "Cache-Control",
                                "value": "no-store"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Date",
                                "value": "Fri, 16 Apr 2021 06:00:57 GMT"
                            }
                        ],
                        "cookie": [],
                        "body": null
                    }
                ]
            },
            {
                "name": "生成cert",
                "request": {
                    "method": "POST",
                    "header": [
                        {
                            "key": "X-Vault-Token",
                            "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                            "type": "text"
                        }
                    ],
                    "body": {
                        "mode": "raw",
                        "raw": "{\r\n  \"common_name\": \"www.example.com\",\r\n  \"ttl\":\"30\"\r\n}",
                        "options": {
                            "raw": {
                                "language": "json"
                            }
                        }
                    },
                    "url": {
                        "raw": "http://127.0.0.1:8200/v1/pki/issue/test.com",
                        "protocol": "http",
                        "host": [
                            "172",
                            "26",
                            "239",
                            "235"
                        ],
                        "port": "8200",
                        "path": [
                            "v1",
                            "pki",
                            "issue",
                            "test.com"
                        ]
                    }
                },
                "response": []
            },
            {
                "name": "根据cert编号获取cert",
                "request": {
                    "method": "GET",
                    "header": [
                        {
                            "key": "X-Vault-Token",
                            "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                            "type": "text"
                        }
                    ],
                    "url": {
                        "raw": "http://127.0.0.1:8200/v1/pki/cert/09-7c-e7-f0-7b-c9-87-57-6a-26-3c-46-a1-41-90-ec-95-e7-5e-54",
                        "protocol": "http",
                        "host": [
                            "172",
                            "26",
                            "239",
                            "235"
                        ],
                        "port": "8200",
                        "path": [
                            "v1",
                            "pki",
                            "cert",
                            "09-7c-e7-f0-7b-c9-87-57-6a-26-3c-46-a1-41-90-ec-95-e7-5e-54"
                        ]
                    }
                },
                "response": []
            },
            {
                "name": "吊销cert",
                "request": {
                    "method": "POST",
                    "header": [
                        {
                            "key": "X-Vault-Token",
                            "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                            "type": "text"
                        }
                    ],
                    "body": {
                        "mode": "raw",
                        "raw": "{\r\n  \"serial_number\": \"09-7c-e7-f0-7b-c9-87-57-6a-26-3c-46-a1-41-90-ec-95-e7-5e-54\"\r\n}",
                        "options": {
                            "raw": {
                                "language": "json"
                            }
                        }
                    },
                    "url": {
                        "raw": "http://127.0.0.1:8200/v1/pki/revoke",
                        "protocol": "http",
                        "host": [
                            "172",
                            "26",
                            "239",
                            "235"
                        ],
                        "port": "8200",
                        "path": [
                            "v1",
                            "pki",
                            "revoke"
                        ]
                    }
                },
                "response": []
            },
            {
                "name": "新增引擎",
                "request": {
                    "method": "PUT",
                    "header": [
                        {
                            "key": "X-Vault-Token",
                            "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                            "type": "text"
                        }
                    ],
                    "body": {
                        "mode": "raw",
                        "raw": "{\"path\":\"secret\",\"type\":\"kv\",\"config\":{},\"options\":{\"version\":1},\"generate_signing_key\":true}",
                        "options": {
                            "raw": {
                                "language": "json"
                            }
                        }
                    },
                    "url": {
                        "raw": "http://127.0.0.1:8200/v1/sys/mounts/secret",
                        "protocol": "http",
                        "host": [
                            "172",
                            "26",
                            "239",
                            "235"
                        ],
                        "port": "8200",
                        "path": [
                            "v1",
                            "sys",
                            "mounts",
                            "secret"
                        ]
                    }
                },
                "response": [
                    {
                        "name": "新增kv引擎",
                        "originalRequest": {
                            "method": "PUT",
                            "header": [
                                {
                                    "key": "X-Vault-Token",
                                    "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                                    "type": "text"
                                }
                            ],
                            "body": {
                                "mode": "raw",
                                "raw": "{\"path\":\"secret\",\"type\":\"kv\",\"config\":{},\"options\":{\"version\":1},\"generate_signing_key\":true}",
                                "options": {
                                    "raw": {
                                        "language": "json"
                                    }
                                }
                            },
                            "url": {
                                "raw": "http://127.0.0.1:8200/v1/sys/mounts/secret",
                                "protocol": "http",
                                "host": [
                                    "172",
                                    "26",
                                    "239",
                                    "235"
                                ],
                                "port": "8200",
                                "path": [
                                    "v1",
                                    "sys",
                                    "mounts",
                                    "secret"
                                ]
                            }
                        },
                        "status": "No Content",
                        "code": 204,
                        "_postman_previewlanguage": "json",
                        "header": [
                            {
                                "key": "Cache-Control",
                                "value": "no-store"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Date",
                                "value": "Thu, 15 Apr 2021 09:03:53 GMT"
                            }
                        ],
                        "cookie": [],
                        "body": null
                    }
                ]
            },
            {
                "name": "吊销引擎",
                "request": {
                    "method": "DELETE",
                    "header": [
                        {
                            "key": "X-Vault-Token",
                            "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                            "type": "text"
                        }
                    ],
                    "url": {
                        "raw": "http://127.0.0.1:8200/v1/sys/mounts/secret",
                        "protocol": "http",
                        "host": [
                            "172",
                            "26",
                            "239",
                            "235"
                        ],
                        "port": "8200",
                        "path": [
                            "v1",
                            "sys",
                            "mounts",
                            "secret"
                        ]
                    }
                },
                "response": [
                    {
                        "name": "吊销引擎",
                        "originalRequest": {
                            "method": "DELETE",
                            "header": [
                                {
                                    "key": "X-Vault-Token",
                                    "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                                    "type": "text"
                                }
                            ],
                            "url": {
                                "raw": "http://127.0.0.1:8200/v1/sys/mounts/secret",
                                "protocol": "http",
                                "host": [
                                    "172",
                                    "26",
                                    "239",
                                    "235"
                                ],
                                "port": "8200",
                                "path": [
                                    "v1",
                                    "sys",
                                    "mounts",
                                    "secret"
                                ]
                            }
                        },
                        "status": "No Content",
                        "code": 204,
                        "_postman_previewlanguage": "json",
                        "header": [
                            {
                                "key": "Cache-Control",
                                "value": "no-store"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Date",
                                "value": "Thu, 15 Apr 2021 09:03:41 GMT"
                            }
                        ],
                        "cookie": [],
                        "body": null
                    }
                ]
            },
            {
                "name": "编辑kv引擎路径和kv键值对",
                "request": {
                    "method": "POST",
                    "header": [
                        {
                            "key": "X-Vault-Token",
                            "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                            "type": "text"
                        }
                    ],
                    "body": {
                        "mode": "raw",
                        "raw": "{\"action1\":\"helloaaaa111\"}",
                        "options": {
                            "raw": {
                                "language": "json"
                            }
                        }
                    },
                    "url": {
                        "raw": "http://127.0.0.1:8200/v1/secret/test",
                        "protocol": "http",
                        "host": [
                            "172",
                            "26",
                            "239",
                            "235"
                        ],
                        "port": "8200",
                        "path": [
                            "v1",
                            "secret",
                            "test"
                        ]
                    }
                },
                "response": [
                    {
                        "name": "新增kv引擎路径和kv键值对",
                        "originalRequest": {
                            "method": "POST",
                            "header": [
                                {
                                    "key": "X-Vault-Token",
                                    "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                                    "type": "text"
                                }
                            ],
                            "body": {
                                "mode": "raw",
                                "raw": "{\"action1\":\"helloaaaa111\"}",
                                "options": {
                                    "raw": {
                                        "language": "json"
                                    }
                                }
                            },
                            "url": {
                                "raw": "http://127.0.0.1:8200/v1/secret/test",
                                "protocol": "http",
                                "host": [
                                    "172",
                                    "26",
                                    "239",
                                    "235"
                                ],
                                "port": "8200",
                                "path": [
                                    "v1",
                                    "secret",
                                    "test"
                                ]
                            }
                        },
                        "status": "No Content",
                        "code": 204,
                        "_postman_previewlanguage": "json",
                        "header": [
                            {
                                "key": "Cache-Control",
                                "value": "no-store"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Date",
                                "value": "Thu, 15 Apr 2021 09:23:00 GMT"
                            }
                        ],
                        "cookie": [],
                        "body": null
                    }
                ]
            },
            {
                "name": "删除kv引擎路径",
                "request": {
                    "method": "DELETE",
                    "header": [
                        {
                            "key": "X-Vault-Token",
                            "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                            "type": "text"
                        }
                    ],
                    "url": {
                        "raw": "http://127.0.0.1:8200/v1/secret/test",
                        "protocol": "http",
                        "host": [
                            "172",
                            "26",
                            "239",
                            "235"
                        ],
                        "port": "8200",
                        "path": [
                            "v1",
                            "secret",
                            "test"
                        ]
                    }
                },
                "response": [
                    {
                        "name": "删除kv引擎路径和键值对",
                        "originalRequest": {
                            "method": "DELETE",
                            "header": [
                                {
                                    "key": "X-Vault-Token",
                                    "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                                    "type": "text"
                                }
                            ],
                            "url": {
                                "raw": "http://127.0.0.1:8200/v1/secret/test",
                                "protocol": "http",
                                "host": [
                                    "172",
                                    "26",
                                    "239",
                                    "235"
                                ],
                                "port": "8200",
                                "path": [
                                    "v1",
                                    "secret",
                                    "test"
                                ]
                            }
                        },
                        "status": "No Content",
                        "code": 204,
                        "_postman_previewlanguage": "json",
                        "header": [
                            {
                                "key": "Cache-Control",
                                "value": "no-store"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Date",
                                "value": "Thu, 15 Apr 2021 09:27:28 GMT"
                            }
                        ],
                        "cookie": [],
                        "body": null
                    }
                ]
            },
            {
                "name": "查询kv路径list",
                "request": {
                    "method": "GET",
                    "header": [
                        {
                            "key": "X-Vault-Token",
                            "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                            "type": "text"
                        }
                    ],
                    "url": {
                        "raw": "http://127.0.0.1:8200/v1/secret/?list=true",
                        "protocol": "http",
                        "host": [
                            "172",
                            "26",
                            "239",
                            "235"
                        ],
                        "port": "8200",
                        "path": [
                            "v1",
                            "secret",
                            ""
                        ],
                        "query": [
                            {
                                "key": "list",
                                "value": "true"
                            }
                        ]
                    }
                },
                "response": [
                    {
                        "name": "查询kv路径list",
                        "originalRequest": {
                            "method": "GET",
                            "header": [
                                {
                                    "key": "X-Vault-Token",
                                    "value": "s.M8UXMFH6p5KUS6S5Ta5ruY6X",
                                    "type": "text"
                                }
                            ],
                            "url": {
                                "raw": "http://127.0.0.1:8200/v1/secret/?list=true",
                                "protocol": "http",
                                "host": [
                                    "172",
                                    "26",
                                    "239",
                                    "235"
                                ],
                                "port": "8200",
                                "path": [
                                    "v1",
                                    "secret",
                                    ""
                                ],
                                "query": [
                                    {
                                        "key": "list",
                                        "value": "true"
                                    }
                                ]
                            }
                        },
                        "status": "OK",
                        "code": 200,
                        "_postman_previewlanguage": "json",
                        "header": [
                            {
                                "key": "Cache-Control",
                                "value": "no-store"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Date",
                                "value": "Thu, 15 Apr 2021 09:31:47 GMT"
                            },
                            {
                                "key": "Content-Length",
                                "value": "175"
                            }
                        ],
                        "cookie": [],
                        "body": "{\n    \"request_id\": \"3497d14c-9a06-96e5-f059-5059f50debcb\",\n    \"lease_id\": \"\",\n    \"renewable\": false,\n    \"lease_duration\": 0,\n    \"data\": {\n        \"keys\": [\n            \"test\"\n        ]\n    },\n    \"wrap_info\": null,\n    \"warnings\": null,\n    \"auth\": null\n}"
                    }
                ]
            },
            {
                "name": "查询kv路径下的键值对",
                "request": {
                    "method": "GET",
                    "header": [],
                    "url": null
                },
                "response": [
                    {
                        "name": "查询kv路径下的键值对",
                        "originalRequest": {
                            "method": "GET",
                            "header": [
                                {
                                    "key": "X-Vault-Token",
                                    "value": "s.3luOj8yNzW4nwvMIMY2SIfQK",
                                    "type": "text"
                                }
                            ],
                            "url": {
                                "raw": "http://127.0.0.1:8200/v1/secret/test",
                                "protocol": "http",
                                "host": [
                                    "172",
                                    "26",
                                    "239",
                                    "235"
                                ],
                                "port": "8200",
                                "path": [
                                    "v1",
                                    "secret",
                                    "test"
                                ]
                            }
                        },
                        "status": "OK",
                        "code": 200,
                        "_postman_previewlanguage": "json",
                        "header": [
                            {
                                "key": "Cache-Control",
                                "value": "no-store"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Date",
                                "value": "Thu, 15 Apr 2021 09:59:37 GMT"
                            },
                            {
                                "key": "Content-Length",
                                "value": "190"
                            }
                        ],
                        "cookie": [],
                        "body": "{\n    \"request_id\": \"b33aeb76-0381-2edb-2ed0-1a0019f7be75\",\n    \"lease_id\": \"\",\n    \"renewable\": false,\n    \"lease_duration\": 2764800,\n    \"data\": {\n        \"action1\": \"helloaaaa111\"\n    },\n    \"wrap_info\": null,\n    \"warnings\": null,\n    \"auth\": null\n}"
                    }
                ]
            }
        ],
        "protocolProfileBehavior": {}
    }
    

    http请求时表头一定要带着token,第一次请求可以带root_token,用root_token新建其他策略的token后,可以用其他token进行请求。

    PKI分发

    具体PKI分发可以参考以下两篇:
    使用vault pki engine 方便的管理证书
    vault 使用 中间ca 进行证书管理

    数据库动态密码管理

    数据库动态密码管理可参考:
    https://www.jianshu.com/p/019a9eb51ae6

    最后总结了以下常用的CLI命令(建议去官网文档根据需要自行查看):

    常用CLI命令操作

    secrets engine:密码引擎

    KV Secrets Engine - Version 2:密码引擎的一种,保存普通的键值对

    使KV Secrets Engine - Version 2引擎可用

    vault secrets enable -version=2 kv
    

    vault secrets enable kv-v2
    

    存储键值对

    使用vault kv put <path> <key>=<value>命令来存储密码键值对

    如:vault kv put secret/hello foo=world即是往secret/hello这个路径下存储了foo,world这个键值对

    存储多个键值对
    vault kv put secret/hello foo=world excited=yes
    
    读取键值对

    使用vault kv get <path>命令来读取键值对

    如:vault kv get secret/hello

    通过key获取value命令:

    vault kv get -field=excited secret/hello
    

    得到的是yes值

    以json格式显示全部结果:

    vault kv get -format=json secret/hello
    

    用jq工具过滤结果:

    vault kv get -format=json secret/hello | jq -r .data.data.excited
    

    也能得到yes值

    删除键值对
    vault kv delete secret/hello
    
    使一个密码引擎可用命令

    如:

    vault secrets enable -path=kv kv
    
    Success! Enabled the kv secrets engine at: kv/
    

    vault secrets enable kv
    
    遍历出所有的密码引擎
    $ vault secrets list
    
    Path          Type         Accessor              Description
    ----          ----         --------              -----------
    cubbyhole/    cubbyhole    cubbyhole_78189996    per-token private secret storage
    identity/     identity     identity_ac07951e     identity store
    kv/           kv           kv_15087625           n/a
    secret/       kv           kv_4b990c45           key/value secret storage
    sys/          system       system_adff0898       system endpoints used for control, policy and debugging
    
    遍历出某个密码引擎下面所有的路径

    如上面的kv引擎

    $ vault kv list kv/
    
    Keys
    ----
    hello
    
    结构大概为 密码引擎(Secrets Engine)\ 引擎下面的地址(Secrets Engine Path)\ 保存在地址下面的键值对(key=value)
    使一个密码引擎不可用
    $ vault secrets disable kv/
    
    Success! Disabled the secrets engine (if it existed) at: kv/
    

    动态密码生成

    以取名为aws密码引擎为例:

    使aws引擎可用:
    vault secrets enable -path=aws aws
    

    vault secrets enable aws
    

    导入一个环境变量

    export AWS_ACCESS_KEY_ID=<aws_access_key_id>
    export AWS_SECRET_ACCESS_KEY=<aws_secret_key>
    

    可以用初始化的key

    配置aws密码引擎
    $ vault write aws/config/root \
        access_key=$AWS_ACCESS_KEY_ID \
        secret_key=$AWS_SECRET_ACCESS_KEY \
        region=us-east-1
    
    Success! Data written to: aws/config/root
    

    新建my-role角色

    $ vault write aws/roles/my-role \
            credential_type=iam_user \
            policy_document=-<<EOF
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "Stmt1426528957000",
          "Effect": "Allow",
          "Action": [
            "ec2:*"
          ],
          "Resource": [
            "*"
          ]
        }
      ]
    }
    EOF
    

    生成动态密码(vault read <engine>/creds/<role>):

    $ vault read aws/creds/my-role
    Key                Value
    ---                -----
    lease_id           aws/creds/my-role/0bce0782-32aa-25ec-f61d-c026ff22106e
    lease_duration     768h
    lease_renewable    true
    access_key         AKIAJELUDIANQGRXCTZQ
    secret_key         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
    security_token     <nil>
    

    吊销密码(vault lease <lease_id>)

    $ vault lease revoke aws/creds/my-role/0bce0782-32aa-25ec-f61d-c026ff22106
    Success! Revoked lease: aws/creds/my-role/0bce0782-32aa-25ec-f61d-c026ff22106e
    

    帮助命令

    如新可用了一个密码引擎:

    vault secrets enable -path=aws aws
    

    引擎帮助(Engine Help)命令:

    $ vault path-help aws
    
    ### DESCRIPTION
    
    The AWS backend dynamically generates AWS access keys for a set of
    IAM policies. The AWS access keys have a configurable lease set and
    are automatically revoked at the end of the lease.
    
    After mounting this backend, credentials to generate IAM keys must
    be configured with the "root" path and policies must be written using
    the "roles/" endpoints before any access keys can be generated.
    
    ### PATHS
    
    The following paths are supported by this backend. To view help for
    any of the paths below, use the help command with any route matching
    the path pattern. Note that depending on the policy of your auth token,
    you may or may not be able to access certain paths.
    
        ^config/lease$
            Configure the default lease information for generated credentials.
    
        ^config/root$
            Configure the root credentials that are used to manage IAM.
    
        ^creds/(?P<name>\w+)$
            Generate an access key pair for a specific role.
    
        ^roles/(?P<name>\w+)$
            Read and write IAM policies that access keys can be made for.
    

    路径帮助(Path Help)命令:

    如:

    $ vault path-help aws/creds/my-non-existent-role
    
    Request:        creds/my-non-existent-role
    Matching Route: ^creds/(?P<name>\w(([\w-.]+)?\w)?)$
    
    Generate an access key pair for a specific role.
    
    ### PARAMETERS
    
        name (string)
            Name of the role
    
    ### DESCRIPTION
    
    This path will generate a new, never before used key pair for
    accessing AWS. The IAM policy used to back this key pair will be
    the "name" parameter. For example, if this backend is mounted at "aws",
    then "aws/creds/deploy" would generate access keys for the "deploy" role.
    
    The access keys will have a lease associated with them. The access keys
    can be revoked by using the lease ID.
    

    身份验证(Authentication)

    默认身份验证是token

    新建token

    vault默认读取root token从$VAULT_TOKEN环境变量值里,root token 被分配的是root policy,有各种权限,可以新建token来继承root token,也拥有root policy的权限。

    $ vault token create
    Key                  Value
    ---                  -----
    token                s.iyNUhq8Ov4hIAx6snw5mB2nL
    token_accessor       maMfHsZfwLB6fi18Zenj3qh6
    token_duration       ∞
    token_renewable      false
    token_policies       ["root"]
    identity_policies    []
    policies             ["root"]
    

    这里新建出来的token即是s.iyNUhq8Ov4hIAx6snw5mB2nL

    用这个token也可以登录vault

    如:

    $ vault login s.iyNUhq8Ov4hIAx6snw5mB2nL
    
    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                s.iyNUhq8Ov4hIAx6snw5mB2nL
    token_accessor       maMfHsZfwLB6fi18Zenj3qh6
    token_duration       ∞
    token_renewable      false
    token_policies       ["root"]
    identity_policies    []
    policies             ["root"]
    

    再建一个,每个token都是独一无二的。

    $ vault token create
    
    Key                  Value
    ---                  -----
    token                s.TsKT5ubouZ7TF26Eg7wNIl3k
    token_accessor       b1d0curWHYqmgCndk0G1cM6R
    token_duration       ∞
    token_renewable      false
    token_policies       ["root"]
    identity_policies    []
    policies             ["root"]
    
    吊销token

    如:

    $ vault token revoke s.iyNUhq8Ov4hIAx6snw5mB2nL
    
    Success! Revoked token (if it existed)
    
    启用新建其他类型的身份验证

    比如 github:

    $ vault auth enable github
    
    Success! Enabled github auth method at: github/
    

    可用成功,可获取路径在auth/github/

    为github身份验证设置organization

    $ vault write auth/github/config organization=hashicorp
    
    Success! Data written to: auth/github/config
    

    为engineering团队设置 default,applications policies身份验证

    $ vault write auth/github/map/teams/engineering value=default,applications
    
    Success! Data written to: auth/github/map/teams/engineering
    

    遍历所有的身份验证

    $ vault auth list
    
    Path       Type      Description
    ----       ----      -----------
    github/    github    n/a
    token/     token     token based credentials
    

    查看身份验证帮助(Auth Help)信息

    $ vault auth help github
    
    Usage: vault login -method=github [CONFIG K=V...]
    
      The GitHub auth method allows users to authenticate using a GitHub
      personal access token. Users can generate a personal access token from the
      settings page on their GitHub account.
    
      Authenticate using a GitHub token:
    
          $ vault login -method=github token=abcd1234
    
    ## ...
    

    尝试登录并查看token信息

    $ 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                  s.DNtKCjVQ1TxAzgMqtDuwjjC2
    token_accessor         e7zLJuPg2tLpav66ZSu5AyDC
    token_duration         768h
    token_renewable        true
    token_policies         [default applications]
    token_meta_org         hashicorp
    token_meta_username    my-user
    

    吊销所有github下的身份验证token

    $ vault token revoke -mode path auth/github
    

    使github身份验证信息不可用

    $ vault auth disable github
    
    Success! Disabled the auth method (if it existed) at: github/
    

    政策(Policies)

    在hcl文件里声明

    如:

    # Dev servers have version 2 of KV secrets engine mounted by default, so will
    # need these paths to grant permissions:
    path "secret/data/*" {
      capabilities = ["create", "update"]
    }
    
    path "secret/data/foo" {
      capabilities = ["read"]
    }
    

    这样声明之后,secret/data/路径下除了secret/data/foo之外都可以新建和更改,secret/data/foo只可以读取

    默认会有root和default两个政策,root有所有权限

    查看政策命令

    查看default policy

    $ vault policy read default
    
    写入政策

    利用vault policy write命令写入政策

    帮助命令:

    $ vault policy write -h
    
    Usage: vault policy write [options] NAME PATH
    
      Uploads a policy with name NAME from the contents of a local file PATH or
      stdin. If PATH is "-", the policy is read from stdin. Otherwise, it is
      loaded from the file at the given path on the local disk.
    
      Upload a policy named "my-policy" from "/tmp/policy.hcl" on the local disk:
    
          $ vault policy write my-policy /tmp/policy.hcl
    
      Upload a policy from stdin:
    
          $ cat my-policy.hcl | vault policy write my-policy -
    
       ...snip...
    

    写入:

    $ vault policy write my-policy - << EOF
    # Dev servers have version 2 of KV secrets engine mounted by default, so will
    # need these paths to grant permissions:
    path "secret/data/*" {
      capabilities = ["create", "update"]
    }
    
    path "secret/data/foo" {
      capabilities = ["read"]
    }
    EOF
    

    遍历所有政策

    $ vault policy list
    
    default
    my-policy
    root
    

    查看my-policy

    $ vault policy read my-policy
    
    # Dev servers have version 2 of KV secrets engine mounted by default, so will
    # need these paths to grant permissions:
    path "secret/data/*" {
      capabilities = ["create", "update"]
    }
    
    path "secret/data/foo" {
      capabilities = ["read"]
    }
    

    测试

    新建一个my-policy政策的token
    $ vault token create -policy=my-policy
    
    Key                  Value
    ---                  -----
    token                s.X6gvFko7chPilgV0lpWXsdeu
    token_accessor       kwgaMv7lz09a5oULHIT3UQ6z
    token_duration       768h
    token_renewable      true
    token_policies       ["default" "my-policy"]
    identity_policies    []
    policies             ["default" "my-policy"]
    

    往secret/data/creds里写入一个密码

    $ VAULT_TOKEN=<token> vault kv put secret/creds password="my-long-password"
    
    Key              Value
    ---              -----
    created_time     2018-05-22T18:05:42.537496856Z
    deletion_time    n/a
    destroyed        false
    version          1
    

    上面的<token>替换成新建my-policy生成的token

    注:KV v2 密码引擎用vault kv 命令时可以省略/data路径

    尝试往secret/data/foo里写入信息

    
    $ VAULT_TOKEN=<token> vault kv put secret/foo robot=beepboop
    
    Error writing data to secret/data/foo: Error making API request.
    
    URL: PUT http://127.0.0.1:8200/v1/secret/data/foo
    Code: 403. Errors:
    
    * permission denied
    

    权限被拒绝了,因为这个政策这个路径只有读取权限

    将政策跟身份验证方法关联

    查看approle/是否被可用

    $ vault auth list | grep 'approle/'
    

    如果没有可用则可用

    $ vault auth enable approle
    

    可用一个AppRole 'my-role' 关联my-policy

    $ vault write auth/approle/role/my-role \
        secret_id_ttl=10m \
        token_num_uses=10 \
        token_ttl=20m \
        token_max_ttl=30m \
        secret_id_num_uses=40 \
        token_policies=my-policy
    

    验证AppRole

    $ export ROLE_ID="$(vault read -field=role_id auth/approle/role/my-role/role-id)"
    
    export SECRET_ID="$(vault write -f -field=secret_id auth/approle/role/my-role/secret-id)"
    
    $ vault write auth/approle/login role_id="$ROLE_ID" secret_id="$SECRET_ID"
    
    Key                     Value
    ---                     -----
    token                   s.Sh9h1wZ9ycATeSaASoOQvovr
    token_accessor          xCgUIu6WWLM9opkEkAiNLsRc
    token_duration          20m
    token_renewable         true
    token_policies          ["default" "my-policy"]
    identity_policies       []
    policies                ["default" "my-policy"]
    token_meta_role_name    my-role
    

    相关文章

      网友评论

          本文标题:Vault---机密信息管理工具安装及常用示例

          本文链接:https://www.haomeiwen.com/subject/uwamlltx.html