少妇伦子伦精品无吗,国产在线精品一区在线观看,精品久久久久久无码专区不卡,99久久免费国产精精品

Hero Circle Shape
Hero Moon Shape
Hero Right Shape
tokenpocketapp下載蘋果|vault

tokenpocketapp下載蘋果|vault

  • 作者: tokenpocketapp下載蘋果
  • 2024-03-07 21:47:29

私密信息管理工具 Vault 快速入門 - 知乎

私密信息管理工具 Vault 快速入門 - 知乎切換模式寫文章登錄/注冊(cè)私密信息管理工具 Vault 快速入門INFINI Labs?已認(rèn)證賬號(hào)什么是 VaultVault 是一個(gè)基于身份的秘密和加密管理系統(tǒng)。秘密是您想要嚴(yán)格控制訪問(wèn)的任何內(nèi)容,例如 API 加密密鑰、密碼和證書。 Vault 提供由身份驗(yàn)證和授權(quán)方法控制的加密服務(wù)。使用 Vault 的 UI、CLI 或 HTTP API,可以安全地存儲(chǔ)和管理、嚴(yán)格控制(限制)和審核對(duì)機(jī)密和其他敏感數(shù)據(jù)的訪問(wèn)。為什么需要 Vault執(zhí)行密碼輪換策略很痛苦掌握機(jī)密的員工離職后可能泄密或是惡意報(bào)復(fù)開發(fā)者不小心把機(jī)密信息隨著代碼上傳到公網(wǎng)的源碼倉(cāng)庫(kù)造成泄密管理多個(gè)系統(tǒng)的機(jī)密非常麻煩需要將機(jī)密信息安全地加密后存儲(chǔ),但又不想將密鑰暴露給應(yīng)用程序,以防止應(yīng)用程序被入侵后連帶密鑰一起泄漏Vault 架構(gòu)圖Vault 只暴漏了存儲(chǔ)后端(Storage Backend) 和 API,其他部分都被保護(hù)起來(lái)了。Vault 并不信任后端存儲(chǔ),存放的都是密文。安裝此處以 Mac 為例,其他平臺(tái)參考官方文檔Vault 安裝向?qū)? brew tap hashicorp/tap

? brew install hashicorp/tap/vault

啟動(dòng) Vault(Dev 模式)? vault server -dev

WARNING! dev mode is enabled! In this mode, Vault runs entirely in-memory

and starts unsealed with a single unseal key. The root token is already

authenticated to the CLI, so you can immediately begin using Vault.

You may need to set the following environment variables:

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

The unseal key and root token are displayed below in case you want to

seal/unseal the Vault or re-authenticate.

Unseal Key: QNqS6xZOnJKsbcz60PThJE2O070F2+9b7LLrGGgI7os=

Root Token: hvs.IKbh5pTGI0Qn08G5QNJb4jPY

Development mode should NOT be used in production installations!

查看服務(wù)狀態(tài)? vault status

Key Value

--- -----

Seal Type shamir

Initialized true

Sealed false

Total Shares 1

Threshold 1

Version 1.12.1

Build Date 2022-10-27T12:32:05Z

Storage Type inmem

Cluster Name vault-cluster-c5c1f8a4

Cluster ID 60514532-959b-9540-ea21-5d9c968a21ba

HA Enabled false

寫入第一個(gè)密碼? vault write kv/infini value=infinilabs

Success! Data written to: kv/infini

如果報(bào)這個(gè)錯(cuò)誤:vault write kv/infini value=infinilabsError writing data to kv/cheng: Error making API request.URL: PUT http://127.0.0.1:8200/v1/kv/chengCode: 404. Errors:no handler for route 'kv/cheng'是因?yàn)?kv 存儲(chǔ)沒(méi)有啟動(dòng)(不同版本默認(rèn)初始設(shè)置不同),執(zhí)行:? vault secrets enable kv

讀取一條數(shù)據(jù)? vault read kv/infini

Key Value

--- -----

refresh_interval 768h

value labs

使用 Consul 作為數(shù)據(jù)存儲(chǔ)的 BackendVault 自身不存儲(chǔ)數(shù)據(jù),需要提供存儲(chǔ)后臺(tái)。 支持多種后臺(tái)。? brew tap hashicorp/tap

? brew install hashicorp/tap/consul

啟動(dòng) Consul? consul agent -dev

==> Starting Consul agent...

Version: '1.14.1'

Build Date: '2022-11-21 16:56:07 +0000 UTC'

Node ID: '6d9bcfc4-60cf-5d9b-c4fa-764127a94af6'

Node name: 'ChengKai-MacBook.local'

Datacenter: 'dc1' (Segment: '')

Server: true (Bootstrap: false)

Client Addr: [127.0.0.1] (HTTP: 8500, HTTPS: -1, gRPC: 8502, gRPC-TLS: 8503, DNS: 8600)

Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302)

Gossip Encryption: false

Auto-Encrypt-TLS: false

HTTPS TLS: Verify Incoming: false, Verify Outgoing: false, Min Version: TLSv1_2

gRPC TLS: Verify Incoming: false, Min Version: TLSv1_2

Internal RPC TLS: Verify Incoming: false, Verify Outgoing: false (Verify Hostname: false), Min Version: TLSv1_2

==> Log data will now stream in as it occurs:

2022-11-30T16:34:52.604+0800 [WARN] agent: Node name "ChengKai-MacBook.local" will not be discoverable via DNS due to invalid characters. Valid characters include all alpha-numerics and dashes.

2022-11-30T16:34:52.609+0800 [WARN] agent.auto_config: Node name "ChengKai-MacBook.local" will not be discoverable via DNS due to invalid characters. Valid characters include all alpha-numerics and dashes.

2022-11-30T16:34:52.613+0800 [INFO] agent.server.raft: initial configuration: index=1 servers="[{Suffrage:Voter ID:6d9bcfc4-60cf-5d9b-c4fa-764127a94af6 Address:127.0.0.1:8300}]"

2022-11-30T16:34:52.614+0800 [INFO] agent.server.raft: entering follower state: follower="Node at 127.0.0.1:8300 [Follower]" leader-address= leader-id=

啟動(dòng) Vault(生產(chǎn)模式)創(chuàng)建配置文件,使用剛剛啟動(dòng)的 Consul 作為存儲(chǔ)后臺(tái)。注意: 這種方式啟動(dòng),為生產(chǎn)模式,需要手動(dòng)配置和管理秘鑰。storage "consul"{

address = "127.0.0.1:8500"

path = "vault/"

}

listener "tcp"{

address = "127.0.0.1:8200"

tls_disable = 1

}執(zhí)行命令,啟動(dòng)? vault server -config=config.hcl

WARNING! mlock is not supported on this system! An mlockall(2)-like syscall to

prevent memory from being swapped to disk is not supported on this system. For

better security, only run Vault on systems where this call is supported. If

you are running Vault in a Docker container, provide the IPC_LOCK cap to the

container.

==> Vault server configuration:

Api Address: http://127.0.0.1:8200

Cgo: disabled

Cluster Address: https://127.0.0.1:8201

Go Version: go1.19.2

Listener 1: tcp (addr: "127.0.0.1:8200", cluster address: "127.0.0.1:8201", max_request_duration: "1m30s", max_request_size: "33554432", tls: "disabled")

Log Level: info

Mlock: supported: false, enabled: false

Recovery Mode: false

Storage: consul (HA available)

Version: Vault v1.12.1, built 2022-10-27T12:32:05Z

Version Sha: e34f8a14fb7a88af4640b09f3ddbb5646b946d9c

==> Vault server started! Log data will stream in below:

2022-11-30T16:42:59.995+0800 [INFO] proxy environment: http_proxy="" https_proxy="" no_proxy=""

2022-11-30T16:43:00.006+0800 [WARN] no `api_addr` value specified in config or in VAULT_API_ADDR; falling back to detection if possible, but this value should be manually set

注意: 此時(shí)雖然服務(wù)啟動(dòng)了,但是 Vault 處于封印狀態(tài)(sealed), 不可用。此時(shí)我們執(zhí)行操作,會(huì)看到如下提示:? vault read kv/cheng

Error reading kv/cheng: Error making API request.

URL: GET http://127.0.0.1:8200/v1/kv/cheng

Code: 503. Errors:

* Vault is sealed

上面 Dev 模式啟動(dòng)的 Vault 實(shí)際上幫助我們自動(dòng)地把創(chuàng)建主密鑰、解封的步驟都完成了。生產(chǎn)模式,則需要手動(dòng)配置后續(xù)步驟。補(bǔ)充點(diǎn)小知識(shí)Vault 保存在 Backend 中的數(shù)據(jù)都是加密的Vault 密鑰稱為 Master Key 主密鑰,Vault 默認(rèn)使用 Shamir 算法,把主密鑰切分成 M 份,管理員必須至少提供其中的 N 份才能還原出主密鑰(這里的 M 和 N 都是可配置的,M>=N)理想狀態(tài)下,我們必須把這 M 份密鑰分配給公司內(nèi) M 個(gè)不同的人,只有在獲取其中 N 個(gè)人的授權(quán)后,Vault 才可以成功解密主密鑰。Vault 初始化(生產(chǎn)模式)注意看,接下來(lái)的步驟,會(huì)生成 5 個(gè)秘鑰,一個(gè) Root 用戶的 Token。真實(shí)場(chǎng)景下,這 5 個(gè)秘鑰會(huì)分配給 5 個(gè)不同的人員管理。 至少正確輸入 3 個(gè)秘鑰,才能解封 Vault。熱知識(shí): Vault 每次啟動(dòng)/重啟,都會(huì)進(jìn)入封印狀態(tài),未解封時(shí),幾乎無(wú)法執(zhí)行任何操作。> vault operator init

Unseal Key 1: IDcHr5kT7hhgYKiDxF6Qlp2g11UVXNu+f5VX51+3jpeD

Unseal Key 2: dfjqn++KcqLDIDnBcE8B0fIvicI7T9TQCxBSI7b1oE12

Unseal Key 3: DaFtgnYsm0rTQcPpLTPaDTNW338BHhyhezct+ySTT45L

Unseal Key 4: Z1vmlLm/KBydeLrmVf9ELqlJoaUgwzNvzx6ddXttc4Nk

Unseal Key 5: x2lIwJiCz3lNqzBPzkryrnatfZT9mahj3yfW4qxT3eMZ

Initial Root Token: s.o7NjzR6qXEvJEwPYpmVFOt4P

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 keys 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.Vault 默認(rèn)訪問(wèn) https 的地址,所以如果執(zhí)行初始化報(bào)如下錯(cuò)誤:Error authenticating: error looking up token: Get "https://127.0.0.1:8200/v1/auth/token/lookup-self": http: server gave HTTP response to HTTPS client設(shè)置一下 Vault 地址即可,執(zhí)行:export VAULT_ADDR='http://127.0.0.1:8200'查看 Vault 狀態(tài)此時(shí) Vault 處于封印狀態(tài)(Sealed 為 true)? vault status

Key Value

--- -----

Seal Type shamir

Initialized true

Sealed true

Total Shares 5

Threshold 3

Unseal Progress 0/3

Unseal Nonce n/a

Version 1.9.2

Storage Type consul

HA Enabled true

解封 Vault使用需要 vault operator unseal 命令來(lái)執(zhí)行解封。至少需要 3 個(gè)秘鑰來(lái)解封。? vault operator unseal IDcHr5kT7hhgYKiDxF6Qlp2g11UVXNu+f5VX51+3jpeD

Key Value

--- -----

Seal Type shamir

Initialized true

Sealed true

Total Shares 5

Threshold 3

Unseal Progress 1/3

Unseal Nonce 9eeaaa92-d673-51d3-b993-d3affe68b5a3

Version 1.9.2

Storage Type consul

HA Enabled true

注意: 每次輸入一個(gè)秘鑰,會(huì)看到如上提示"Unseal Progress 1/3"。 但是,這里僅僅表示已經(jīng)輸入多少個(gè)秘鑰,并不代表輸入的秘鑰都是正確的!!如何使用 Vault 保存秘密進(jìn)入下一步之前,先來(lái)看看 Vault 提供了哪些措施,用來(lái)保護(hù)我們的秘密?秘鑰的保護(hù)機(jī)制: 秘鑰被拆分成 5 份,至少正確輸入 3 個(gè)才能解封。策略控制(權(quán)限控制): 可以針對(duì)每個(gè) Path 設(shè)置策略。有效期: Vault 生成的每個(gè)令牌(Token)都有有效期。開始前,我們先寫入 2 條測(cè)試數(shù)據(jù):? vault write kv/infini value=infinilabs

Success! Data written to: kv/infini

? vault write kv/ck value=chengkai

Success! Data written to: kv/ck

熱知識(shí):"kv/infini" 是一個(gè) Path(路徑), 可以簡(jiǎn)單理解為數(shù)據(jù)庫(kù)中的一個(gè)表。并不是 kv 數(shù)據(jù)庫(kù) 當(dāng)中的 key。你可以試試這樣存數(shù)據(jù)并讀取:? vault write kv/infini ck=chengkai c=cheng k=kai

Success! Data written to: kv/infini

? vault read kv/infini

Key Value

--- -----

refresh_interval 768h

c cheng

ck chengkai

k kai

制定策略新建策略文件輸入以下內(nèi)容path "kv/infini" {

capabilities = ["read"]

}

解釋: 以上策略,是指在 infini 這個(gè)路徑(path)下,具有只讀權(quán)限。創(chuàng)建策略先登錄已經(jīng)解封的 Vault(使用初始化生成的 root token 登錄)? vault login s.o7NjzR6qXEvJEwPYpmVFOt4P

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.o7NjzR6qXEvJEwPYpmVFOt4P

token_accessor tKZyxkkFvrmhQeTsoDOogcoV

token_duration ∞

token_renewable false

token_policies ["root"]

identity_policies []

policies ["root"]

? vault policy write infini-readonly policy.hcl

Success! Uploaded policy: infini-readonly

"infini-readonly" 是策略的名稱,這個(gè)可以自定義生成 Token 并指定策略生成對(duì)"kv/infini"具有只讀權(quán)限的 Token, 執(zhí)行:? vault token create -policy="infini-readonly"

Key Value

--- -----

token s.bHzsfREs9MGirYO8yZ2TbAzq

token_accessor nPuAQzNTn28vMMUKcDu0mN8g

token_duration 768h

token_renewable true

token_policies ["infini-readonly" "default"]

identity_policies []

policies ["infini-readonly" "default"]

此處生成了新的 Token: s.bHzsfREs9MGirYO8yZ2TbAzq, 有效期 768 小時(shí)(別拿計(jì)算器了,我算過(guò)了,32 天)使用新生成的 Token 登錄(別找退出操作了,直接再執(zhí)行 login 即可):? vault login s.bHzsfREs9MGirYO8yZ2TbAzq

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.bHzsfREs9MGirYO8yZ2TbAzq

token_accessor nPuAQzNTn28vMMUKcDu0mN8g

token_duration 767h56m19s

token_renewable true

token_policies ["infini-readonly" "default"]

identity_policies []

policies ["infini-readonly" "default"]

驗(yàn)證新生成的 Token嘗試讀 kv/infini 的秘密:? vault read kv/infini

Key Value

--- -----

refresh_interval 768h

value infinilabs

Wow!成功讀取!試試寫入操作? vault write kv/infini value=c1

Error writing data to kv/cheng: Error making API request.

URL: PUT http://127.0.0.1:8200/v1/kv/infini

Code: 403. Errors:

* 1 error occurred:

* permission denied

有個(gè)疑問(wèn),你說(shuō)當(dāng)前這個(gè) Token,可以讀取 kv/ck 的秘密嗎?? vault read kv/ck

Error reading kv/ck: Error making API request.

URL: GET http://127.0.0.1:8200/v1/kv/ck

Code: 403. Errors:

* 1 error occurred:

* permission denied

啊歐! 不行~OK, 到這里了,簡(jiǎn)單的對(duì) Vault 做了個(gè)入門。 Vault 的功能點(diǎn)還有很多,去看看下面的文檔吧~~參考文檔[1]: Vault 官方文檔[2]: Vault 教程(中文)[3]: How To Securely Manage Secrets with HashiCorp Vault on Ubuntu 20.04發(fā)布于 2023-08-23 15:06?IP 屬地湖南工具軟件加密?贊同 1??添加評(píng)論?分享?喜歡?收藏?申請(qǐng)

私密信息管理利器 HashiCorp Vault——簡(jiǎn)介 - 掘金

私密信息管理利器 HashiCorp Vault——簡(jiǎn)介 - 掘金

首頁(yè) 首頁(yè)

沸點(diǎn)

課程

直播

活動(dòng)

競(jìng)賽

商城

APP

插件 搜索歷史

清空

創(chuàng)作者中心

寫文章 發(fā)沸點(diǎn) 寫筆記 寫代碼 草稿箱 創(chuàng)作靈感

查看更多

會(huì)員

登錄

注冊(cè)

私密信息管理利器 HashiCorp Vault——簡(jiǎn)介

shuhari

2018-02-08

5,849

最近,由于項(xiàng)目中需要使用保存和管理的加密配置,并且我相信自己發(fā)明加密方法并不是一個(gè)合理的選擇,所以開始尋找相關(guān)的方案。經(jīng)過(guò)選型,確定了 HashCorp Valut。

目前,在網(wǎng)絡(luò)上除了官方文檔之外,能找到的相關(guān)資料非常至少。這或許是因?yàn)?Vault 尚未得到大規(guī)模使用,不過(guò)也有可能是因?yàn)樯婕暗剿矫苄缘男畔ⅲ圆环奖愎_講。不論原因?yàn)楹危疚暮秃罄m(xù)的文章希望把使用 HashiCorp Vault 的經(jīng)驗(yàn)和心得記錄下來(lái),為后來(lái)人提供一點(diǎn)方便。

關(guān)于 HashiCorp

HashiCorp 是一家專注于基礎(chǔ)設(shè)施解決方案的公司,業(yè)務(wù)范圍涵蓋軟件開發(fā)中的部署、運(yùn)維、安全等方面。下圖是該公司的主要產(chǎn)品線,其中大部分知名度不算高,但大名鼎鼎的 Vagrant 相信很多人都聽(tīng)說(shuō)過(guò)。

什么是 HashiCorp Vault

HashiCorp Vault 的 Slogan 是 A Tool for Managing Secrets,這個(gè)口號(hào)很好的描述了該產(chǎn)品的定位。大多數(shù)軟件項(xiàng)目都會(huì)不同程度的用到諸如 登錄密碼/Token/證書/API Key 等私密信息,這些信息用明碼保存顯然是很不安全的,如果不小心簽入到版本控制系統(tǒng),還會(huì)造成重大的安全問(wèn)題(這方面的事故我們已經(jīng)聽(tīng)到過(guò)很多次了)。

Vault 就是為了解決這一問(wèn)題而創(chuàng)立的。它提供了這些功能:

集中管理各種私密信息;

為私密信息設(shè)置租期(Lease),到期后自動(dòng)失效;

密鑰的動(dòng)態(tài)生成、注銷和滾動(dòng)更新;

動(dòng)態(tài)創(chuàng)建無(wú)需保存的一次性登錄密鑰;

作為數(shù)據(jù)加密/解密接口;

完整的審計(jì)記錄;

命令行 以及 RESTful API 訪問(wèn)接口;

此外,Vault 設(shè)計(jì)為靈活的可插拔架構(gòu),允許靈活的設(shè)置各種后端引擎和安全策略。例如:

可以用內(nèi)置 Token、用戶/密碼、LDAP、Amazon IAM、Github 等作為認(rèn)證授權(quán)機(jī)制;

可以使用內(nèi)存/本地文件/Etcd/Consul/ZooKeeper/RDBMS/NoSQL/云平臺(tái)等作為數(shù)據(jù)存儲(chǔ);

可以為數(shù)據(jù)庫(kù)/SSH/Consul/AWS/Nomad/PKI/RabbitMQ 等多種平臺(tái)生成和管理訪問(wèn)密鑰;

可以與 Cousul、Chef、Ansible 等運(yùn)維工具集成起來(lái)共同使用;

使用場(chǎng)景和比較

由于私密信息的管理是一個(gè)帶有普遍性的需求,所以業(yè)界對(duì)該問(wèn)題也已經(jīng)有多種處理辦法。這里簡(jiǎn)單描述 Vault 和其他私密管理方案的對(duì)比,以便你有一個(gè)更好的理解。

需要說(shuō)明的是,這里的描述部分來(lái)自官方文檔中的 Vault vs Other Software。官方的描述更加完整,而我按照自己的理解做了整理和簡(jiǎn)化。如果你英文比較好的話,我建議直接閱讀原文。

運(yùn)維工具(Chef,Puppet,Consul等) 由于經(jīng)常需要記錄各種連接信息,這些運(yùn)維工具也有自己的加密機(jī)制,例如 Chef data bag/Puppet Hiera。如果重點(diǎn)在于運(yùn)維,對(duì)安全性要求不是很高,那么使用這些工具來(lái)處理私密信息也是完全可行的。它們的問(wèn)題在于安全性不夠高,容易發(fā)生泄露問(wèn)題,此外也缺乏像 Vault 那樣完整的審核記錄。另外,Vault 也能夠和這些運(yùn)維工具結(jié)合起來(lái)使用。

硬件安全模塊(Hardware Security Model, HSM) 按照定義來(lái)說(shuō)是基于硬件的,不過(guò)也有 Amazon CloudHSM 這樣的服務(wù)形式。HSM 的安全等級(jí)是足夠高的,不過(guò)它們通常價(jià)格昂貴、管理麻煩,基于硬件的形式對(duì)云平臺(tái)通常不太友好,大多數(shù)中小企業(yè)一般不會(huì)考慮。如果你確實(shí)有 HSM 可用的話,那么用它來(lái)管理 Vault 的主密鑰也是一個(gè)合理的選擇,不過(guò)用 HSM 來(lái)管理所有私密信息通常是太過(guò)重量級(jí)了。

DropBox(及其他類似的網(wǎng)盤) 我們都明白:用這種方法來(lái)管理私密信息,在安全性的角度來(lái)講肯定是不合格的,但由于使用方便,事實(shí)上還真有很多不太注重安全的用戶走了這個(gè)路子。Vault 的作者當(dāng)然是不鼓勵(lì)這種做法的,并且希望 Vault 相比其他更加重量級(jí)的解決方案來(lái)說(shuō)能夠在使用上更加簡(jiǎn)便。

Amazon KMS(Key Management Service) 從名字上就能看出,KMS 注重的是密鑰的管理,Vault 則更加靈活。KMS 和 Amazon 自身的云平臺(tái)集成更佳,并且是一個(gè)純粹的云端解決方案,而 Vault 既可以本地運(yùn)行,也可以部署到云端(有官方的 Docker 鏡像可用)。

Square Keywhiz 我們知道 Square 主要是做網(wǎng)絡(luò)支付的公司,業(yè)務(wù)特點(diǎn)決定了他們對(duì)于安全也非常重視,Keywhize 就是他們開發(fā)的私密信息管理工具。我沒(méi)有用過(guò) Keywhiz,不好評(píng)價(jià)。不過(guò)從官方介紹來(lái)看,Keywhiz 和 Vault 的功能特性非常相似,基本可以互相取代。目前, Vault 似乎受關(guān)注度更高一些,未來(lái)就看哪一個(gè)項(xiàng)目發(fā)展的更好了。為了方便比較,我在下面做了一個(gè) Vault 和 Keywhiz 的簡(jiǎn)單對(duì)比表,你可以按照自己的喜好來(lái)選擇。

1Password 1Password 等工具也是部分用戶喜歡的私密信息解決方案。盡管這是一個(gè)相當(dāng)不錯(cuò)的密碼管理工具,但它是存粹的客戶端程序,管理密碼基本靠人工,從專業(yè)的 DevOps 觀點(diǎn)來(lái)說(shuō),這種方式是不合理的。此外,它也缺乏密鑰生成和期限管理、審核記錄等高級(jí)功能。

商業(yè)解決方案 某些存儲(chǔ)平臺(tái),例如 SQL Server,提供了自己的列加密機(jī)制。如果你的項(xiàng)目大量依賴于這些平臺(tái)、且遷移到其他平臺(tái)的可能性很小,那么使用內(nèi)置的機(jī)制也無(wú)可厚非。它的(潛在)問(wèn)題是不開源、不透明,存在供應(yīng)商鎖定的風(fēng)險(xiǎn)。

自定義方案 有些用戶和項(xiàng)目可能已經(jīng)開發(fā)了自己的私密信息解決方案,通常是自己編寫的代碼。按照業(yè)界的普遍觀點(diǎn),自己編碼處理加密問(wèn)題是危險(xiǎn)的,非安全專家編寫的安全代碼通常會(huì)有大量的潛在漏洞,而且這些漏洞通常比一般的業(yè)務(wù) bug 更加難以發(fā)現(xiàn)和解決??傊灰l(fā)明自己的密碼方案。

項(xiàng)目

Vault

Keywhiz

廠商

HashiCorp

Square

模式

開源

開源

開發(fā)語(yǔ)言

Golang

Java

代碼庫(kù)

Github

Github

Forks

1206

148

Stars

8449

1867

術(shù)語(yǔ)

由于是一個(gè)安全工具,HashiCorp Vault 使用中會(huì)涉及到不少有一定專業(yè)性的術(shù)語(yǔ),如果不理解這些術(shù)語(yǔ)的話,在使用該平臺(tái)和閱讀文章時(shí)會(huì)收到一定影響。以下列出該工具使用中將會(huì)用到的一些術(shù)語(yǔ),你可以先粗略瀏覽一下,有個(gè)大概印象,不完全理解也沒(méi)有關(guān)系,后面在使用過(guò)程中會(huì)結(jié)合具體用法詳細(xì)講述。

術(shù)語(yǔ)

中文

釋義

Lease

租期

私密信息的有效期/過(guò)期時(shí)間

Seal/Unseal

密封/解封

對(duì)私密信息存儲(chǔ)開啟/關(guān)閉客戶端訪問(wèn)的過(guò)程

Token

憑據(jù)

Vault 驗(yàn)證用戶的默認(rèn)機(jī)制

Path

路徑

Vault 區(qū)分?jǐn)?shù)據(jù)的保存位置

Secret Engine

加密引擎

支持不同渠道的加密方法

Auth Method

驗(yàn)證方法

驗(yàn)證登錄用戶信息

Policy

策略

實(shí)現(xiàn)用戶授權(quán)機(jī)制

相關(guān)問(wèn)題

Vault 是一個(gè)英文常用詞。如果你把這個(gè)詞直接放到搜索引擎里面去的話,可能會(huì)找到一大堆不相干的內(nèi)容。所以你最好是搜索產(chǎn)品的全稱:HashiCorp Vault。

系列文章

本文是該系列的第一篇,講述 HashiCorp Vault 的總體概念和功能。接下來(lái)將介紹該工具的安裝和使用。

私密信息管理利器 HashiCorp Vault——簡(jiǎn)介

私密信息管理利器 HashiCorp Vault——啟動(dòng)和讀寫

私密信息管理利器 HashiCorp Vault——加密引擎

私密信息管理利器 HashiCorp Vault——驗(yàn)證和授權(quán)

私密信息管理利器 HashiCorp Vault——部署

私密信息管理利器 HashiCorp Vault——REST API

shuhari

后端 @自由職業(yè)

35

文章

47k

閱讀

27

粉絲 目錄 收起

關(guān)于 HashiCorp

什么是 HashiCorp Vault

使用場(chǎng)景和比較

術(shù)語(yǔ)

相關(guān)問(wèn)題

系列文章

友情鏈接:

杜月笙家譜關(guān)系圖

沈先生的心頭寶無(wú)彈窗

快穿女主小三心機(jī)綠茶pop文

ajax數(shù)據(jù)庫(kù)javascript

redis集群三種方式cor

天醫(yī)風(fēng)水師的五個(gè)媳婦

GitHub - hashicorp/vault: A tool for secrets management, encryption as a service, and privileged access management

GitHub - hashicorp/vault: A tool for secrets management, encryption as a service, and privileged access management

Skip to content

Toggle navigation

Sign in

Product

Actions

Automate any workflow

Packages

Host and manage packages

Security

Find and fix vulnerabilities

Codespaces

Instant dev environments

Copilot

Write better code with AI

Code review

Manage code changes

Issues

Plan and track work

Discussions

Collaborate outside of code

Explore

All features

Documentation

GitHub Skills

Blog

Solutions

For

Enterprise

Teams

Startups

Education

By Solution

CI/CD & Automation

DevOps

DevSecOps

Resources

Learning Pathways

White papers, Ebooks, Webinars

Customer Stories

Partners

Open Source

GitHub Sponsors

Fund open source developers

The ReadME Project

GitHub community articles

Repositories

Topics

Trending

Collections

Pricing

Search or jump to...

Search code, repositories, users, issues, pull requests...

Search

Clear

Search syntax tips

Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

Sign up

You signed in with another tab or window. Reload to refresh your session.

You signed out in another tab or window. Reload to refresh your session.

You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

hashicorp

/

vault

Public

Notifications

Fork

4k

Star

29.4k

A tool for secrets management, encryption as a service, and privileged access management

www.vaultproject.io/

License

View license

29.4k

stars

4k

forks

Branches

Tags

Activity

Star

Notifications

Code

Issues

994

Pull requests

343

Actions

Security

Insights

Additional navigation options

Code

Issues

Pull requests

Actions

Security

Insights

hashicorp/vault

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

?mainBranchesTagsGo to fileCodeFolders and filesNameNameLast commit messageLast commit dateLatest commit?History19,197 Commits.github.github??.hooks.hooks??.release.release??META.dMETA.d??apiapi??auditaudit??builtinbuiltin??changelogchangelog??commandcommand??dependencies/2-25-21dependencies/2-25-21??enosenos??helperhelper??httphttp??internal/observability/eventinternal/observability/event??internalsharedinternalshared??limitslimits??physicalphysical??pluginsplugins??scriptsscripts??sdksdk??serviceregistrationserviceregistration??shamirshamir??terraformterraform??toolstools??uiui??vaultvault??versionversion??websitewebsite??.copywrite.hcl.copywrite.hcl??.gitattributes.gitattributes??.gitignore.gitignore??.go-version.go-version??.yamllint.yamllint??CHANGELOG-pre-v1.10.mdCHANGELOG-pre-v1.10.md??CHANGELOG-v0.mdCHANGELOG-v0.md??CHANGELOG.mdCHANGELOG.md??CODEOWNERSCODEOWNERS??CONTRIBUTING.mdCONTRIBUTING.md??DockerfileDockerfile??HCPV_badge.pngHCPV_badge.png??LICENSELICENSE??MakefileMakefile??README.mdREADME.md??buf.gen.yamlbuf.gen.yaml??buf.lockbuf.lock??buf.yamlbuf.yaml??go.modgo.mod??go.sumgo.sum??main.gomain.go??main_test.gomain_test.go??make.batmake.bat??scan.hclscan.hcl??View all filesRepository files navigationREADMECode of conductLicenseSecurityVault

Please note: We take Vault's security and our users' trust very seriously. If you believe you have found a security issue in Vault, please responsibly disclose by contacting us at security@hashicorp.com.

Website: https://www.vaultproject.io

Announcement list: Google Groups

Discussion forum: Discuss

Documentation: https://developer.hashicorp.com/vault/docs

Tutorials: https://developer.hashicorp.com/vault/tutorials

Certification Exam: https://developer.hashicorp.com/certifications/security-automation

Vault is a tool for securely accessing secrets. A secret is anything that you want to tightly control access to, such as API keys, passwords, certificates, and more. Vault provides a unified interface to any secret, while providing tight access control and recording a detailed audit log.

A modern system requires access to a multitude of secrets: database credentials, API keys for external services, credentials for service-oriented architecture communication, etc. Understanding who is accessing what secrets is already very difficult and platform-specific. Adding on key rolling, secure storage, and detailed audit logs is almost impossible without a custom solution. This is where Vault steps in.

The key features of Vault are:

Secure Secret Storage: Arbitrary key/value secrets can be stored

in Vault. Vault encrypts these secrets prior to writing them to persistent

storage, so gaining access to the raw storage isn't enough to access

your secrets. Vault can write to disk, Consul,

and more.

Dynamic Secrets: Vault can generate secrets on-demand for some

systems, such as AWS or SQL databases. For example, when an application

needs to access an S3 bucket, it asks Vault for credentials, and Vault

will generate an AWS keypair with valid permissions on demand. After

creating these dynamic secrets, Vault will also automatically revoke them

after the lease is up.

Data Encryption: Vault can encrypt and decrypt data without storing

it. This allows security teams to define encryption parameters and

developers to store encrypted data in a location such as a SQL database without

having to design their own encryption methods.

Leasing and Renewal: All secrets in Vault have a lease associated

with them. At the end of the lease, Vault will automatically revoke that

secret. Clients are able to renew leases via built-in renew APIs.

Revocation: Vault has built-in support for secret revocation. Vault

can revoke not only single secrets, but a tree of secrets, for example,

all secrets read by a specific user, or all secrets of a particular type.

Revocation assists in key rolling as well as locking down systems in the

case of an intrusion.

Documentation, Getting Started, and Certification Exams

Documentation is available on the Vault website.

If you're new to Vault and want to get started with security automation, please

check out our Getting Started guides

on HashiCorp's learning platform. There are also additional guides

to continue your learning.

For examples of how to interact with Vault from inside your application in different programming languages, see the vault-examples repo. An out-of-the-box sample application is also available.

Show off your Vault knowledge by passing a certification exam. Visit the

certification page

for information about exams and find study materials

on HashiCorp's learning platform.

Developing Vault

If you wish to work on Vault itself or any of its built-in systems, you'll

first need Go installed on your machine.

For local dev first make sure Go is properly installed, including setting up a

GOPATH. Ensure that $GOPATH/bin is in

your path as some distributions bundle the old version of build tools. Next, clone this

repository. Vault uses Go Modules,

so it is recommended that you clone the repository outside of the GOPATH.

You can then download any required build tools by bootstrapping your environment:

$ make bootstrap

...

To compile a development version of Vault, run make or make dev. This will

put the Vault binary in the bin and $GOPATH/bin folders:

$ make dev

...

$ bin/vault

...

To compile a development version of Vault with the UI, run make static-dist dev-ui. This will

put the Vault binary in the bin and $GOPATH/bin folders:

$ make static-dist dev-ui

...

$ bin/vault

...

To run tests, type make test. Note: this requires Docker to be installed. If

this exits with exit status 0, then everything is working!

$ make test

...

If you're developing a specific package, you can run tests for just that

package by specifying the TEST variable. For example below, only

vault package tests will be run.

$ make test TEST=./vault

...

Importing Vault

This repository publishes two libraries that may be imported by other projects:

github.com/hashicorp/vault/api and github.com/hashicorp/vault/sdk.

Note that this repository also contains Vault (the product), and as with most Go

projects, Vault uses Go modules to manage its dependencies. The mechanism to do

that is the go.mod file. As it happens, the presence of that file

also makes it theoretically possible to import Vault as a dependency into other

projects. Some other projects have made a practice of doing so in order to take

advantage of testing tooling that was developed for testing Vault itself. This

is not, and has never been, a supported way to use the Vault project. We aren't

likely to fix bugs relating to failure to import github.com/hashicorp/vault

into your project.

See also the section "Docker-based tests" below.

Acceptance Tests

Vault has comprehensive acceptance tests

covering most of the features of the secret and auth methods.

If you're working on a feature of a secret or auth method and want to

verify it is functioning (and also hasn't broken anything else), we recommend

running the acceptance tests.

Warning: The acceptance tests create/destroy/modify real resources, which

may incur real costs in some cases. In the presence of a bug, it is technically

possible that broken backends could leave dangling data behind. Therefore,

please run the acceptance tests at your own risk. At the very least,

we recommend running them in their own private account for whatever backend

you're testing.

To run the acceptance tests, invoke make testacc:

$ make testacc TEST=./builtin/logical/consul

...

The TEST variable is required, and you should specify the folder where the

backend is. The TESTARGS variable is recommended to filter down to a specific

resource to test, since testing all of them at once can sometimes take a very

long time.

Acceptance tests typically require other environment variables to be set for

things such as access keys. The test itself should error early and tell

you what to set, so it is not documented here.

For more information on Vault Enterprise features, visit the Vault Enterprise site.

Docker-based Tests

We have created an experimental new testing mechanism inspired by NewTestCluster.

An example of how to use it:

import (

"testing"

"github.com/hashicorp/vault/sdk/helper/testcluster/docker"

)

func Test_Something_With_Docker(t *testing.T) {

opts := &docker.DockerClusterOptions{

ImageRepo: "hashicorp/vault", // or "hashicorp/vault-enterprise"

ImageTag: "latest",

}

cluster := docker.NewTestDockerCluster(t, opts)

defer cluster.Cleanup()

client := cluster.Nodes()[0].APIClient()

_, err := client.Logical().Read("sys/storage/raft/configuration")

if err != nil {

t.Fatal(err)

}

}

Or for Enterprise:

import (

"testing"

"github.com/hashicorp/vault/sdk/helper/testcluster/docker"

)

func Test_Something_With_Docker(t *testing.T) {

opts := &docker.DockerClusterOptions{

ImageRepo: "hashicorp/vault-enterprise",

ImageTag: "latest",

VaultLicense: licenseString, // not a path, the actual license bytes

}

cluster := docker.NewTestDockerCluster(t, opts)

defer cluster.Cleanup()

}

Here is a more realistic example of how we use it in practice. DefaultOptions uses

hashicorp/vault:latest as the repo and tag, but it also looks at the environment

variable VAULT_BINARY. If populated, it will copy the local file referenced by

VAULT_BINARY into the container. This is useful when testing local changes.

Instead of setting the VaultLicense option, you can set the VAULT_LICENSE_CI environment

variable, which is better than committing a license to version control.

Optionally you can set COMMIT_SHA, which will be appended to the image name we

build as a debugging convenience.

func Test_Custom_Build_With_Docker(t *testing.T) {

opts := docker.DefaultOptions(t)

cluster := docker.NewTestDockerCluster(t, opts)

defer cluster.Cleanup()

}

There are a variety of helpers in the github.com/hashicorp/vault/sdk/helper/testcluster

package, e.g. these tests below will create a pair of 3-node clusters and link them using

PR or DR replication respectively, and fail if the replication state doesn't become healthy

before the passed context expires.

Again, as written, these depend on having a Vault Enterprise binary locally and the env

var VAULT_BINARY set to point to it, as well as having VAULT_LICENSE_CI set.

func TestStandardPerfReplication_Docker(t *testing.T) {

opts := docker.DefaultOptions(t)

r, err := docker.NewReplicationSetDocker(t, opts)

if err != nil {

t.Fatal(err)

}

defer r.Cleanup()

ctx, cancel := context.WithTimeout(context.Background(), time.Minute)

defer cancel()

err = r.StandardPerfReplication(ctx)

if err != nil {

t.Fatal(err)

}

}

func TestStandardDRReplication_Docker(t *testing.T) {

opts := docker.DefaultOptions(t)

r, err := docker.NewReplicationSetDocker(t, opts)

if err != nil {

t.Fatal(err)

}

defer r.Cleanup()

ctx, cancel := context.WithTimeout(context.Background(), time.Minute)

defer cancel()

err = r.StandardDRReplication(ctx)

if err != nil {

t.Fatal(err)

}

}

Finally, here's an example of running an existing OSS docker test with a custom binary:

$ GOOS=linux make dev

$ VAULT_BINARY=$(pwd)/bin/vault go test -run 'TestRaft_Configuration_Docker' ./vault/external_tests/raft/raft_binary

ok github.com/hashicorp/vault/vault/external_tests/raft/raft_binary 20.960s

About

A tool for secrets management, encryption as a service, and privileged access management

www.vaultproject.io/

Topics

go

vault

secrets

Resources

Readme

License

View license

Code of conduct

Code of conduct

Security policy

Security policy

Activity

Custom properties

Stars

29.4k

stars

Watchers

825

watching

Forks

4k

forks

Report repository

Releases

130

v1.15.6

Latest

Feb 29, 2024

+ 129 releases

Packages

0

No packages published

Used by 1.8k

+ 1,827

Contributors

1,293

+ 1,279 contributors

Languages

Go

58.9%

MDX

17.8%

JavaScript

15.8%

Handlebars

4.1%

HCL

1.6%

TypeScript

0.8%

Other

1.0%

Footer

? 2024 GitHub,?Inc.

Footer navigation

Terms

Privacy

Security

Status

Docs

Contact

Manage cookies

Do not share my personal information

You can’t perform that action at this time.

Vault by HashiCorp

t by HashiCorpOverviewUse CasesAutomated PKI infrastructureData encryption and tokenizationDatabase credential rotationDynamic secretsIdentity-based accessKey managementKubernetes SecretsSecrets managementEnterpriseTutorialsDocsAPICommunityGitHubDownloadTry HCP VaultManage secrets and protect sensitive data with VaultSecure, store, and tightly control access to tokens, passwords, certificates, and encryption keys for protecting secrets and other sensitive data using a UI, CLI, or HTTP API.Try HCP VaultDownload VaultIdentity-based securityVault brokers and deeply integrates with trusted identities to automate access to secrets, data, and systems.Application and machine identitySecure applications and systems with machine identity and automate credential issuance, rotation, and more. Enable attestation of application and workload identity, using Vault as the trusted authority.User identity with VaultLeverage trusted identity platforms you use everyday to secure, store, and access credentials and resources.Play videoHow Vault worksVault tightly controls access to secrets and encryption keys by authenticating against trusted sources of identity such as Active Directory, LDAP, Kubernetes, CloudFoundry, and cloud platforms.Armon DadgarCo-founder & CTOCommon use cases for VaultSecrets managementCentrally store, access, and deploy secrets across applications, systems, and infrastructure.Dynamic secretsA dynamic secret is generated on demand and is unique to a client, instead of a static secret, which is defined ahead of time and shared.Kubernetes secretsInstall Vault using a Helm chart and then leverage Vault and Kubernetes to securely inject secrets into your application stack.Database credential rotationAutomatically rotate database passwords with Vault's database secrets engine.Automated PKI infrastructureUse Vault to quickly create X.509 certificates on demand and reduce the manual overhead.Identity-based accessAuthenticate and access different clouds, systems, and endpoints using trusted identities.Data encryption and tokenizationKeep application data secure with one centralized workflow for data that resides in untrusted or semi-trusted systems outside of Vault.Key managementUse a standardized workflow for distribution and lifecycle management across KMS providers.Vault in practiceThe best way to understand what Vault can enable for your projects is to see it in action.TutorialSecrets storageSecurely store and manage access to secrets and systems based on trusted sources of application and user identity.TutorialDynamic secretsGenerate time-based access credentials dynamically based on policies and revoke access when lease expires.TutorialAutomate credential rotationReduce risk of secret exposure by automating how long secrets live and rotating secrets across your entire fleet.DocumentationEncryption as a serviceSecure application data with one centralized workflow that resides in untrusted or semi-trusted systems outside of Vault.TutorialAPI-driven encryptionVault provides rich APIs to protect data, while using the state of the art in cryptography.TutorialEncryption key rollingAutomatically update and rotate encryption keys without code changes, configuration updates, or re-deploys.Customer storiesAn inside look at powerful solutions from some of the world’s most innovative companies.GitHub: Cracking the codeUbisoft: Game timeVodafone: Unlocking possibilitiesSBB: Modern secrets management for a modern railway operatorQ2: Multi-cloud win using infrastructure as codeYahoo! JAPAN: Secrets at scale for Japan’s most visited websiteGet HashiCorp CertifiedLevel up your concepts, skills, and use cases associated with HashiCorp Vault.Prepare and get certifiedLearn more about Vault Ops ProNext stepsHCP Vault simplifies cloud security automation on fully managed infrastructure. Get started for free, and pay only for what you use. CommunitySelf-managed | Always freeDownloadCloudManaged VaultCompare plansEnterpriseSelf-managed custom deploymentsLearn moreDocsAPITutorialsCommunityPrivacySecurityPress KitConsent Mana

Vault從入門到精通系列之一:深入了解安全工具Vault、Vault根令牌和解封密鑰,詳細(xì)整理部署Vault的詳細(xì)步驟_如何配置一個(gè)vaultmount實(shí)例-CSDN博客

>

Vault從入門到精通系列之一:深入了解安全工具Vault、Vault根令牌和解封密鑰,詳細(xì)整理部署Vault的詳細(xì)步驟_如何配置一個(gè)vaultmount實(shí)例-CSDN博客

Vault從入門到精通系列之一:深入了解安全工具Vault、Vault根令牌和解封密鑰,詳細(xì)整理部署Vault的詳細(xì)步驟

最新推薦文章于?2023-12-22 14:16:05?發(fā)布

最笨的羊羊

最新推薦文章于?2023-12-22 14:16:05?發(fā)布

閱讀量2k

收藏

8

點(diǎn)贊數(shù)

1

分類專欄:

日常分享專欄

文章標(biāo)簽:

Vault

Vault根令牌和解封密鑰

部署Vault的詳細(xì)步驟

版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/zhengzaifeidelushang/article/details/131283430

版權(quán)

日常分享專欄

專欄收錄該內(nèi)容

421 篇文章

62 訂閱

訂閱專欄

Vault從入門到精通系列之一:深入了解安全工具Vault、Vault根令牌和解封密鑰,詳細(xì)整理部署Vault的詳細(xì)步驟

一、深入了解安全工具Vault二、Vault根令牌和解封密鑰的含義和作用三、centos7上部署和啟動(dòng)Vault的流程四、vault下載地址五、安裝vault六、啟動(dòng)Vault七、總結(jié)和延伸

一、深入了解安全工具Vault

Vault是一種開源工具,用于安全地存儲(chǔ)、管理和控制訪問(wèn)各種機(jī)密信息,如密碼、API令牌、安全配置和其他敏感數(shù)據(jù)。Vault使用強(qiáng)大的加密和安全管理技術(shù)來(lái)保護(hù)這些機(jī)密信息,并為應(yīng)用程序和服務(wù)提供安全的訪問(wèn)控制機(jī)制。該工具支持各種云平臺(tái)和技術(shù)堆棧,并提供多種API和CLI接口,使其易于集成和使用。Vault的主要特點(diǎn)包括中心化管理、角色分配和權(quán)限控制、審計(jì)和日志記錄、動(dòng)態(tài)秘鑰持續(xù)更新等。這些功能使得Vault成為一款頗受開發(fā)者和企業(yè)信賴的安全工具。

二、Vault根令牌和解封密鑰的含義和作用

Vault 中的根令牌和解封密鑰是用于管理和保護(hù) Vault 中加密數(shù)據(jù)的重要憑據(jù)。

根令牌是 Vault 中的最高權(quán)限憑據(jù),擁有此令牌的用戶可以在 Vault 中進(jìn)行任何操作,包括創(chuàng)建和刪除機(jī)密、管理策略、配置身份驗(yàn)證等。因此,根令牌需要嚴(yán)格保密,并只在必要時(shí)進(jìn)行使用。解封密鑰則是用于解密 Vault 中加密數(shù)據(jù)的重要憑據(jù),可以用于解密 Vault 的存儲(chǔ)密鑰,解密后可以訪問(wèn)存儲(chǔ)在 Vault 中的機(jī)密信息。因此,解封密鑰也需要嚴(yán)格保密,通常會(huì)將其存儲(chǔ)在冷存儲(chǔ)中,以防止未經(jīng)授權(quán)的訪問(wèn)和泄露。只有在必要時(shí)才使用解封密鑰,例如在進(jìn)行恢復(fù)操作或在創(chuàng)建新的存儲(chǔ)密鑰時(shí)。

三、centos7上部署和啟動(dòng)Vault的流程

在CentOS 7上部署和啟動(dòng)Vault可以按照以下步驟進(jìn)行:

下載Vault二進(jìn)制文件:可以從官網(wǎng)下載,也可以使用wget命令從Vault的GitHub頁(yè)面下載。 安裝Vault:將Vault二進(jìn)制文件移到/usr/local/bin目錄下,并添加執(zhí)行權(quán)限。 配置Vault:可以在/etc目錄下創(chuàng)建一個(gè)Vault配置文件,指定Vault的監(jiān)聽(tīng)地址和端口,以及存儲(chǔ)Vault數(shù)據(jù)的路徑。 啟動(dòng)Vault:使用vault server命令啟動(dòng)Vault服務(wù),會(huì)自動(dòng)讀取/etc目錄下的配置文件并啟動(dòng)服務(wù)。 初始化Vault:使用vault init命令初始化Vault,生成一組Root Token和Unseal Key。 解封Vault:使用vault unseal命令輸入U(xiǎn)nseal Key解封Vault服務(wù)。 登錄Vault:使用vault login命令輸入Root Token登錄Vault。

四、vault下載地址

vault下載地址:

vault官方下載地址選擇下載的版本

sudo yum install -y yum-utils

sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo

sudo yum -y install vault

五、安裝vault

執(zhí)行命令:

sudo yum install -y yum-utils

sudo yum install -y yum-utils

Loaded plugins: fastestmirror, langpacks, priorities, versionlock

Determining fastest mirrors

epel | 4.7 kB 00:00:00

extras | 2.9 kB 00:00:00

hashicorp | 1.4 kB 00:00:00

os | 3.6 kB 00:00:00

pgdg-common/7/x86_64/signature | 198 B 00:00:00

pgdg-common/7/x86_64/signature | 2.9 kB 00:00:00 !!!

pgdg11/7/x86_64/signature | 198 B 00:00:00

pgdg11/7/x86_64/signature | 3.6 kB 00:00:00 !!!

pgdg12/7/x86_64/signature | 198 B 00:00:00

pgdg12/7/x86_64/signature | 3.6 kB 00:00:00 !!!

pgdg13/7/x86_64/signature | 198 B 00:00:00

pgdg13/7/x86_64/signature | 3.6 kB 00:00:00 !!!

pgdg14/7/x86_64/signature | 198 B 00:00:00

pgdg14/7/x86_64/signature | 3.6 kB 00:00:00 !!!

pgdg15/7/x86_64/signature | 198 B 00:00:00

pgdg15/7/x86_64/signature | 3.6 kB 00:00:00 !!!

updates | 2.9 kB 00:00:00

(1/2): pgdg-common/7/x86_64/primary_db | 181 kB 00:00:02

(2/2): hashicorp/7/x86_64/primary | 165 kB 00:00:05

hashicorp 1196/1196

Package yum-utils-1.1.31-54.el7_8.noarch already installed and latest version

Nothing to do

執(zhí)行命令:sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo

sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo

Loaded plugins: fastestmirror, langpacks, priorities, versionlock

adding repo from: https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo

grabbing file https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo to /etc/yum.repos.d/hashicorp.repo

repo saved to /etc/yum.repos.d/hashicorp.repo

執(zhí)行命令:sudo yum -y install vault

sudo yum -y install vault

Loaded plugins: fastestmirror, langpacks, priorities, versionlock

Loading mirror speeds from cached hostfile

Resolving Dependencies

--> Running transaction check

---> Package vault.x86_64 0:1.13.3-1 will be installed

--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================================================================

Package Arch Version Repository Size

==================================================================================================================================================

Installing:

vault x86_64 1.13.3-1 hashicorp 92 M

Transaction Summary

==================================================================================================================================================

Install 1 Package

Total download size: 92 M

Installed size: 234 M

Downloading packages:

Delta RPMs disabled because /usr/bin/applydeltarpm not installed.

warning: /var/cache/yum/x86_64/7/hashicorp/packages/vault-1.13.3-1.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID a621e701: NOKEY00:00:00 ETA

Public key for vault-1.13.3-1.x86_64.rpm is not installed

vault-1.13.3-1.x86_64.rpm | 92 MB 00:00:24

Retrieving key from https://rpm.releases.hashicorp.com/gpg

Importing GPG key 0xA621E701:

Userid : "HashiCorp Security (HashiCorp Package Signing) "

Fingerprint: 798a ec65 4e5c 1542 8c8e 42ee aa16 fcbc a621 e701

From : https://rpm.releases.hashicorp.com/gpg

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

Installing : vault-1.13.3-1.x86_64 1/1Generating Vault TLS key and self-signed certificate...

Generating a 4096 bit RSA private key

.......................++

.................................................................................................++

writing new private key to 'tls.key'

-----

Vault TLS key and self-signed certificate have been generated in '/opt/vault/tls'.

Verifying : vault-1.13.3-1.x86_64 1/1

Installed:

vault.x86_64 0:1.13.3-1

Complete!

六、啟動(dòng)Vault

執(zhí)行啟動(dòng)命令:

vault server -dev -dev-root-token-id=“dev-only-token”

vault server -dev -dev-root-token-id="dev-only-token"

==> Vault server configuration:

Api Address: http://127.0.0.1:8200

Cgo: disabled

Cluster Address: https://127.0.0.1:8201

Environment Variables: CLASSPATH, FLINK_HOME, GODEBUG, HADOOP_HOME, HISTFILE, HISTSIZE, HISTTIMEFORMAT, HIVE_HOME, HOME, HOSTNAME, JAVA_HOME, LANG, LESSOPEN, LOGNAME, LS_COLORS, MAIL, MONGODB_HOME, MSSQL_HOME, PATH, PROMPT_COMMAND, PWD, PYTHON3_HOME, QT_GRAPHICSSYSTEM, QT_GRAPHICSSYSTEM_CHECKED, SHELL, SHLVL, SPARK_HOME, SUDO_COMMAND, SUDO_GID, SUDO_UID, SUDO_USER, TERM, TMOUT, USER, USERNAME, XDG_SESSION_ID, ZOOKEEP_HOME, _

Go Version: go1.20.4

Listener 1: tcp (addr: "127.0.0.1:8200", cluster address: "127.0.0.1:8201", max_request_duration: "1m30s", max_request_size: "33554432", tls: "disabled")

Log Level:

Mlock: supported: true, enabled: false

Recovery Mode: false

Storage: inmem

Version: Vault v1.13.3, built 2023-06-06T18:12:37Z

Version Sha: 3bedf816cbf851656ae9e6bd65dd4a67a9ddff5e

==> Vault server started! Log data will stream in below:

2023-06-19T10:38:19.735+0800 [INFO] proxy environment: http_proxy="" https_proxy="" no_proxy=""

2023-06-19T10:38:19.735+0800 [WARN] no `api_addr` value specified in config or in VAULT_API_ADDR; falling back to detection if possible, but this value should be manually set

2023-06-19T10:38:19.736+0800 [INFO] core: Initializing version history cache for core

2023-06-19T10:38:19.736+0800 [INFO] core: security barrier not initialized

2023-06-19T10:38:19.736+0800 [INFO] core: security barrier initialized: stored=1 shares=1 threshold=1

2023-06-19T10:38:19.737+0800 [INFO] core: post-unseal setup starting

2023-06-19T10:38:19.751+0800 [INFO] core: loaded wrapping token key

2023-06-19T10:38:19.751+0800 [INFO] core: successfully setup plugin catalog: plugin-directory=""

2023-06-19T10:38:19.751+0800 [INFO] core: no mounts; adding default mount table

2023-06-19T10:38:19.753+0800 [INFO] core: successfully mounted: type=cubbyhole version="v1.13.3+builtin.vault" path=cubbyhole/ namespace="ID: root. Path: "

2023-06-19T10:38:19.753+0800 [INFO] core: successfully mounted: type=system version="v1.13.3+builtin.vault" path=sys/ namespace="ID: root. Path: "

2023-06-19T10:38:19.754+0800 [INFO] core: successfully mounted: type=identity version="v1.13.3+builtin.vault" path=identity/ namespace="ID: root. Path: "

2023-06-19T10:38:19.755+0800 [INFO] core: successfully mounted: type=token version="v1.13.3+builtin.vault" path=token/ namespace="ID: root. Path: "

2023-06-19T10:38:19.756+0800 [INFO] rollback: starting rollback manager

2023-06-19T10:38:19.757+0800 [INFO] core: restoring leases

2023-06-19T10:38:19.758+0800 [INFO] expiration: lease restore complete

2023-06-19T10:38:19.758+0800 [INFO] identity: entities restored

2023-06-19T10:38:19.759+0800 [INFO] identity: groups restored

2023-06-19T10:38:19.759+0800 [INFO] core: Recorded vault version: vault version=1.13.3 upgrade time="2023-06-19 02:38:19.759135384 +0000 UTC" build date=2023-06-06T18:12:37Z

2023-06-19T10:38:19.981+0800 [INFO] core: post-unseal setup complete

2023-06-19T10:38:19.981+0800 [INFO] core: root token generated

2023-06-19T10:38:19.981+0800 [INFO] core: pre-seal teardown starting

2023-06-19T10:38:19.981+0800 [INFO] rollback: stopping rollback manager

2023-06-19T10:38:19.982+0800 [INFO] core: pre-seal teardown complete

2023-06-19T10:38:19.982+0800 [INFO] core.cluster-listener.tcp: starting listener: listener_address=127.0.0.1:8201

2023-06-19T10:38:19.982+0800 [INFO] core.cluster-listener: serving cluster requests: cluster_listen_address=127.0.0.1:8201

2023-06-19T10:38:19.982+0800 [INFO] core: post-unseal setup starting

2023-06-19T10:38:19.982+0800 [INFO] core: loaded wrapping token key

2023-06-19T10:38:19.982+0800 [INFO] core: successfully setup plugin catalog: plugin-directory=""

2023-06-19T10:38:19.983+0800 [INFO] core: successfully mounted: type=system version="v1.13.3+builtin.vault" path=sys/ namespace="ID: root. Path: "

2023-06-19T10:38:19.983+0800 [INFO] core: successfully mounted: type=identity version="v1.13.3+builtin.vault" path=identity/ namespace="ID: root. Path: "

2023-06-19T10:38:19.983+0800 [INFO] core: successfully mounted: type=cubbyhole version="v1.13.3+builtin.vault" path=cubbyhole/ namespace="ID: root. Path: "

2023-06-19T10:38:19.984+0800 [INFO] core: successfully mounted: type=token version="v1.13.3+builtin.vault" path=token/ namespace="ID: root. Path: "

2023-06-19T10:38:19.984+0800 [INFO] rollback: starting rollback manager

2023-06-19T10:38:19.984+0800 [INFO] core: restoring leases

2023-06-19T10:38:19.985+0800 [INFO] identity: entities restored

2023-06-19T10:38:19.985+0800 [INFO] identity: groups restored

2023-06-19T10:38:19.985+0800 [INFO] expiration: lease restore complete

2023-06-19T10:38:19.985+0800 [INFO] core: post-unseal setup complete

2023-06-19T10:38:19.985+0800 [INFO] core: vault is unsealed

2023-06-19T10:38:19.987+0800 [INFO] expiration: revoked lease: lease_id=auth/token/root/h272562f04a210e20b2b4d865e2a84db2d53929c149d30e4e06dcd93ebe88dbac

2023-06-19T10:38:19.989+0800 [INFO] core: successful mount: namespace="" path=secret/ type=kv version=""

WARNING! dev mode is enabled! In this mode, Vault runs entirely in-memory

and starts unsealed with a single unseal key. The root token is already

authenticated to the CLI, so you can immediately begin using Vault.

You may need to set the following environment variables:

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

The unseal key and root token are displayed below in case you want to

seal/unseal the Vault or re-authenticate.

Unseal Key: DY/t5B7OSPzH1XZq5RJoEr0o7l4Ea5epNl9h0b/zaF4=

Root Token: dev-only-token

Development mode should NOT be used in production installations!

如上所示,成功啟動(dòng)Vault,至此成功安裝部署Vault

注意命令行輸出的解封密鑰和根令牌,要妥善保存解封密鑰和根令牌:

Unseal Key: DY/t5B7OSPzH1XZq5RJoEr0o7l4Ea5epNl9h0b/zaF4=Root Token: dev-only-token

七、總結(jié)和延伸

總結(jié):

至此成功安裝部署Vault

延展:

下一篇詳細(xì)了解下如何應(yīng)用安全工具Vault

優(yōu)惠劵

最笨的羊羊

關(guān)注

關(guān)注

1

點(diǎn)贊

8

收藏

覺(jué)得還不錯(cuò)?

一鍵收藏

打賞

知道了

0

評(píng)論

Vault從入門到精通系列之一:深入了解安全工具Vault、Vault根令牌和解封密鑰,詳細(xì)整理部署Vault的詳細(xì)步驟

至此成功安裝部署Vault下一篇詳細(xì)了解下如何應(yīng)用安全工具Vault。

復(fù)制鏈接

掃一掃

專欄目錄

Vault部署保姆級(jí)教程

流浪法師的博客

06-27

1005

Vault部署教程,保姆級(jí),

vault-cli:可配置的命令行界面工具(和python庫(kù)),可與Hashicorp Vault進(jìn)行交互

05-23

vault-cli :Hashicorp Vault的面向12因子的命令行工具

vault-cli是Python 3.6+工具,可提供簡(jiǎn)單的交互操作來(lái)操縱秘密。 使用vault-cli ,可以遵循原則將您的秘密保密。

一些功能

一次配置,由于級(jí)聯(lián)(本地,用戶,全局)YAML配置文件,可在任何地方使用

輕松閱讀,瀏覽,書寫,移動(dòng),刪除秘密

以YAML形式一次讀取多個(gè)機(jī)密

以您的秘密作為環(huán)境變量啟動(dòng)進(jìn)程

使用從庫(kù)中配置的ssh-agent啟動(dòng)進(jìn)程

編寫內(nèi)部包含機(jī)密的模板文件

將多個(gè)秘密組合為一個(gè)秘密(例如,來(lái)自組件的DSN字符串)

vault-cli試圖使訪問(wèn)秘密變得既安全又輕松。

展示柜

您可以使用vault-cli做以下幾件事:

$ # Install:

$ pip install vault-cli

$ # Write a secret:

$ vault-cli set mysec

參與評(píng)論

您還未登錄,請(qǐng)先

登錄

后發(fā)表或查看評(píng)論

Vault從入門到精通系列之二:?jiǎn)?dòng)Vault服務(wù)器

zhengzaifeidelushang的博客

06-19

1261

Vault 作為客戶端-服務(wù)器應(yīng)用程序運(yùn)行。Vault 服務(wù)器是唯一與數(shù)據(jù)存儲(chǔ)和后端交互的 Vault 架構(gòu)。通過(guò) Vault CLI 完成的所有操作都通過(guò) TLS 連接與服務(wù)器交互。在本篇博客中,啟動(dòng)以開發(fā)模式運(yùn)行的 Vault 服務(wù)器并與之交互。

K8S使用helm部署vault集群

最新發(fā)布

ma_qi_chao的博客

12-22

1446

備注:為什么要進(jìn)行vault初始化,如果不初始化,vault服務(wù)pod的READY會(huì)一直處于0/1狀態(tài),只有把vault的pod進(jìn)行初始化生成初始token服務(wù)才會(huì)正常啟動(dòng)運(yùn)行。備注:安裝mysql只是測(cè)試vault加密的數(shù)據(jù)能否測(cè)試登錄mysql,并不是把mysql作為vault數(shù)據(jù)庫(kù)存儲(chǔ)使用。以上完成了vault部署到測(cè)試的全部流程。

Vault: 基礎(chǔ)教程之內(nèi)置幫助及認(rèn)證

博客

08-11

2706

四、內(nèi)置幫助

現(xiàn)在你已經(jīng)使用過(guò)鍵值對(duì)的密碼引擎及AWS下的動(dòng)態(tài)密碼生成了,在兩個(gè)例子之中,結(jié)構(gòu)是使用都是不一樣的,那么你要如何記住使用什么路徑呢,vault里面有內(nèi)置的幫助系統(tǒng),可以通過(guò)api或者命令行訪問(wèn),同時(shí)生成可讀的幫助信息。

首先我們還是啟用aws,通過(guò)vault secrets enable -path=aws aws來(lái)啟用,然后即可使用vault path-help aws來(lái)查看路...

zfs-keyvault:systemd服務(wù)可從Azure Key Vault安全地加載ZFS加密密鑰

02-02

zfs-keyvault

使用加密文件系統(tǒng)安全,自動(dòng)解鎖工具。

它是如何工作的?

簡(jiǎn)而言之,它等效于ZFS加密文件系統(tǒng)的network-online.target :

ZFS文件系統(tǒng)加密密鑰放置在本地加密的密鑰存儲(chǔ)庫(kù)中,該存儲(chǔ)庫(kù)自身的加密密鑰放置在Azure Key Vault中。

引導(dǎo)后,系統(tǒng)服務(wù)會(huì)到達(dá)一個(gè)名為ZFS密鑰網(wǎng)關(guān)的小型Flask Web應(yīng)用程序,并請(qǐng)求存儲(chǔ)庫(kù)加密密鑰。

ZFS密鑰網(wǎng)關(guān)Web服務(wù)從人員獲得授權(quán),以通過(guò)Twilio SMS釋放存儲(chǔ)在Key Vault中的密鑰存儲(chǔ)庫(kù)的加密密鑰。 如果所有者通過(guò)回復(fù)SMS來(lái)授權(quán)請(qǐng)求??,則會(huì)從Key Vault中檢索密鑰并將其發(fā)送回去。

系統(tǒng)現(xiàn)在可以解密本地存儲(chǔ)庫(kù)并安裝加密的ZFS文件系統(tǒng),而文件系統(tǒng)加密密鑰永遠(yuǎn)不會(huì)離開設(shè)備。

產(chǎn)品特點(diǎn)

掛載ZFS加密的文件系統(tǒng),而文件系統(tǒng)密鑰不會(huì)離開設(shè)備

通過(guò)短信通知所有者,以批準(zhǔn)任何關(guān)鍵請(qǐng)求

利用Azure Key Vault來(lái)安全存儲(chǔ)存儲(chǔ)庫(kù)加密密鑰

CLI工具,方便管理包含文件系統(tǒng)加密密鑰的安全本地存儲(chǔ)庫(kù)

通過(guò)pexpect(stdin)將密鑰安全地傳遞到ZFS

網(wǎng)關(guān)將關(guān)鍵請(qǐng)求

Vault: 基礎(chǔ)教程之入門及使用介紹

熱門推薦

博客

08-11

2萬(wàn)+

vault介紹

vault 是一個(gè)強(qiáng)大的密碼管理工具,它基于命令行,是開源的。

vault是非常強(qiáng)大的,它具有如下特性:

1. 安全密碼存儲(chǔ)

2. 動(dòng)態(tài)密碼生成

3. 數(shù)據(jù)加密

4. 租期及更新

5. 廢棄

下面來(lái)一步步介紹vault。

一、使用入門

首先我們使用vault server -dev開啟vault的開發(fā)服務(wù)器,此服務(wù)器僅僅用于開發(fā)環(huán)境,生產(chǎn)環(huán)境下使用會(huì)導(dǎo)致不安...

Linux(Centos)舊版本操作系統(tǒng)配置舊版yum源(vault 源)的方法

你好帥(上局上段)

07-21

1634

舊版Centos操作系統(tǒng)在生存周期結(jié)束、停止維護(hù)后,官方會(huì)將舊版系統(tǒng)的yum源移動(dòng)到的https//vault.centos.org中,使得舊版系統(tǒng)中配置的原有yum源往往會(huì)變得無(wú)法使用。2、打開https//mirrors.aliyun.com/repo/,找到與系統(tǒng)版本對(duì)應(yīng)的源。curl-ohttps//mirrors.aliyun.com/repo/將系統(tǒng)的yum源改為為https//vault.centos.org中的源。...

Vault: 基礎(chǔ)教程之部署

博客

08-11

4742

七、部署vault

配置

vault使用HCL文件配置:

storage "consul" {

address = "127.0.0.1:8500"

path = "vault/"

}

listener "tcp" {

address = "127.0.0.1:8200"

tls_disa

MAC(m1)-Centos8建議切換centos-vault源

興趣是最好的老師

01-04

187

Centos8(centos8官方源已下線,建議切換centos-vault源)

Vault-如何與運(yùn)維體系融合

咖啡男孩之SRE之路

11-07

1474

上一篇《Vault-敏感信息保護(hù)的一種大膽嘗試》介紹了解決運(yùn)維體系中安全問(wèn)題的一個(gè)基石地位的平臺(tái)Vault,本篇跟大家分享下Vault如何與運(yùn)維體系集成和聯(lián)動(dòng)。

vault-token-helper:適用于macOS,Linux和Windows的@Hashicorp Vault令牌幫助器,支持安全令牌存儲(chǔ)和多個(gè)Vault服務(wù)器:locked_with_key:

05-15

保管庫(kù)令牌幫助器

@hashicorp Vault,支持在macOS,Linux和Windows上的本機(jī)秘密存儲(chǔ)。

特征

存儲(chǔ)和檢索多個(gè)Vault( $VAULT_ADDR )實(shí)例的令牌,簡(jiǎn)化了使用多個(gè)Vault時(shí)操作員的工作流程。

支持的后端:

macOS鑰匙串

Linux(兼容DBus Secret Service的后端,例如:Gnome Keyring)

Windows(WinCred)

(GPG)

快速入門(macOS)

安裝:

brew install joemiller/taps/vault-token-helper

配置Vault以使用令牌幫助器。 這將創(chuàng)建~/.vault配置文件:

vault-token-helper enable

向Vault實(shí)例進(jìn)行身份驗(yàn)證以在本地加密和存儲(chǔ)新令牌,例如使用Okta auth后端:

export VAULT_AD

aws-vault:用于在開發(fā)環(huán)境中安全存儲(chǔ)和訪問(wèn)AWS憑證的保險(xiǎn)庫(kù)

01-30

AWS保險(xiǎn)柜

AWS Vault是在開發(fā)環(huán)境中安全存儲(chǔ)和訪問(wèn)AWS憑證的工具。

AWS Vault會(huì)將IAM憑證存儲(chǔ)在操作系統(tǒng)的安全密鑰庫(kù)中,然后從這些憑證中生成臨時(shí)憑證,以暴露給您的Shell和應(yīng)用程序。 它被設(shè)計(jì)為對(duì)AWS CLI工具的補(bǔ)充,并且了解。

查看更多信息。

正在安裝

您可以安裝AWS Vault:

通過(guò)下載

在帶有macOS上: brew install --cask aws-vault

在具有macOS上: port install aws-vault

在Windows上使用 : choco install aws-vault

在帶有Windows上: scoop install aws-vault

在Linux上使用: brew install aws-vault

在: pacman -S aws-vault

在: pkg install aws-vault

使用 : nix-env -i aws-vault

文獻(xiàn)資料

文件中提供了配置,用法,提示和技巧。

后端存儲(chǔ)

支持的保管庫(kù)后端是:

特勤局( , )

加密文件

使用--backend標(biāo)

vault-init:初始化HashiCorp Vault并將根令牌和密鑰保存在您選擇的提供程序中

02-18

保管庫(kù)初始化

初始化HashiCorp Vault并將根令牌和密鑰保存在您選擇的提供程序中。

docker pull ghcr.io/pbar1/vault-init

用法

可以識(shí)別(例如VAULT_ADDR , VAULT_CACERT等)。

Usage of vault-init:

--file-path string Path on disk to save the Vault init result (default "vault-init.json")

--kube-secret-annotations stringToString Labels to add to the Kubernetes secret (default [])

--kube-secret-labels strin

如何使用 Vault 安全地存儲(chǔ)配置的 secret

華章IT官方博客

05-04

782

導(dǎo)讀:每一個(gè)應(yīng)用程序都有需要保密的信息,這些信息可能包括數(shù)據(jù)庫(kù)憑證,外部服務(wù)認(rèn)證,甚至某些資源的位置。所有這些都統(tǒng)稱為密鑰。應(yīng)用程序需要一個(gè)安全的地方來(lái)存儲(chǔ)這些密鑰,無(wú)論是在應(yīng)用程序啟動(dòng)時(shí)...

Vault實(shí)戰(zhàn)(一)-Vault介紹

sre救贖之路

12-20

954

Vault 是一個(gè)基于身份的秘密和加密管理系統(tǒng)。秘密是您想要嚴(yán)格控制訪問(wèn)的任何內(nèi)容,例如 API 加密密鑰、密碼和證書。Vault 提供由身份驗(yàn)證和授權(quán)方法控制的加密服務(wù)。使用 Vault 的 UI、CLI 或 HTTP API,可以安全地存儲(chǔ)和管理、嚴(yán)格控制(限制)和審核對(duì)機(jī)密和其他敏感數(shù)據(jù)的訪問(wèn)。

vault配置指南

霧里華的博客

01-04

808

vault配置指南

Vault使用教程

bhwqq的博客

12-05

1154

本地開發(fā)環(huán)境啟動(dòng)client server ,開發(fā)環(huán)境的server 數(shù)據(jù)都保存在內(nèi)存中,且交互式的內(nèi)容都是沒(méi)有tls協(xié)議加密的 ,請(qǐng)不要在生產(chǎn)環(huán)境運(yùn)行dev環(huán)境

生產(chǎn)環(huán)境的數(shù)據(jù)應(yīng)該都保存在磁盤或者consul里。

vault server -dev //需要記錄下這個(gè)命令下的Unsealed key 和 access key

秘鑰如下:

Unseal Key: uDJZKpkZ0bvfPd3LnFmRLNgAQN8DNPBMeQQSMR//trk=

Root Token: s.H5lx3jTkUrdOM

CentOS-8.5.2111 Boot版安裝流程(配置yum源、配置遠(yuǎn)程連接、服務(wù)自啟動(dòng))

林木無(wú)可棲的博客

07-06

3905

旨在創(chuàng)建一個(gè)輕量化的CentOS-8.5環(huán)境

The PersistentVolume "pv-vault-test01-vault1001" is invalid: spec.nodeAffinity: Required value: Local volume requires node affinity 配置文件案例

05-26

下面是一個(gè)示例的 PV 配置文件,其中使用了 nodeAffinity 來(lái)指定本地存儲(chǔ)卷的節(jié)點(diǎn): ``` apiVersion: v1 kind: PersistentVolume metadata: name: pv-vault-test01-vault1001 spec: capacity: storage: 10Gi ...

“相關(guān)推薦”對(duì)你有幫助么?

非常沒(méi)幫助

沒(méi)幫助

一般

有幫助

非常有幫助

提交

最笨的羊羊

CSDN認(rèn)證博客專家

CSDN認(rèn)證企業(yè)博客

碼齡7年

大數(shù)據(jù)領(lǐng)域新星創(chuàng)作者

1867

原創(chuàng)

1068

周排名

457

總排名

208萬(wàn)+

訪問(wèn)

等級(jí)

2萬(wàn)+

積分

3萬(wàn)+

粉絲

2428

獲贊

305

評(píng)論

4503

收藏

私信

關(guān)注

熱門文章

深入了解海豚調(diào)度DolphinScheduler

48157

能ping通服務(wù)器,但telnet不通22端口問(wèn)題解決方法匯總

21892

Mac系列之:Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP. Hide these hints with HOMEBREW

21573

Zabbix5 安裝教程

16579

MAC打開軟件報(bào)錯(cuò):無(wú)法驗(yàn)證開發(fā)者的解決方法

15907

分類專欄

軟考高級(jí)系統(tǒng)架構(gòu)設(shè)計(jì)師考試

付費(fèi)

232篇

debezium

付費(fèi)

289篇

flume

付費(fèi)

57篇

前端和后端開發(fā)

付費(fèi)

121篇

大數(shù)據(jù)

付費(fèi)

522篇

Ansible、Docker、K8S、服務(wù)器相關(guān)知識(shí)總結(jié)

付費(fèi)

64篇

數(shù)據(jù)庫(kù)

付費(fèi)

49篇

軟考高級(jí)信息系統(tǒng)項(xiàng)目管理師考試

付費(fèi)

93篇

PMP項(xiàng)目管理

付費(fèi)

41篇

軟考高級(jí)系統(tǒng)分析師

付費(fèi)

12篇

zeppelin

付費(fèi)

25篇

大數(shù)據(jù)平臺(tái)二次開發(fā)

付費(fèi)

103篇

數(shù)據(jù)中臺(tái)開發(fā)實(shí)戰(zhàn)總結(jié)

付費(fèi)

9篇

Kafka

付費(fèi)

49篇

日常分享專欄

421篇

金融知識(shí)總結(jié)

27篇

全面解析企業(yè)財(cái)務(wù)報(bào)表

5篇

軟考信息系統(tǒng)項(xiàng)目管理師考試

Flink

56篇

Scala

1篇

面試題分享專欄

28篇

Java

8篇

數(shù)據(jù)分析

6篇

雅思學(xué)習(xí)每日知識(shí)分享

python

最新評(píng)論

Debezium報(bào)錯(cuò)處理系列之二十二:SchemaBuilderException: Cannot create field because of field name duplication

最笨的羊羊:

私信我下報(bào)錯(cuò),幫你看下

Debezium報(bào)錯(cuò)處理系列之二十二:SchemaBuilderException: Cannot create field because of field name duplication

試試頂頂頂:

大佬能解答一下嗎,被困擾好久了

數(shù)據(jù)庫(kù)系列之:什么是 SAP HANA?

CSDN-Ada助手:

MySQL入門 技能樹或許可以幫到你:https://edu.csdn.net/skill/mysql?utm_source=AI_act_mysql

Debezium報(bào)錯(cuò)處理系列之二十二:SchemaBuilderException: Cannot create field because of field name duplication

試試頂頂頂:

大佬,問(wèn)一下,為什么我設(shè)置了這兩個(gè)參數(shù)后,重啟任務(wù)依舊是不行的

Flink系列之:JDBC SQL 連接器

lgq-tzq:

我想問(wèn)一下,在flink sql里面建的那張mysql的表,是不是可以用navicat連接數(shù)據(jù)庫(kù),然后看到這個(gè)表

最新文章

金融知識(shí)分析系列之:凈資產(chǎn)收益率、權(quán)益乘數(shù)、公允價(jià)值、總資產(chǎn)周轉(zhuǎn)率、每股收益、扣除非經(jīng)常性損益后凈利潤(rùn)、歸屬于母公司所有者的扣除非經(jīng)常性損益凈利潤(rùn)、少數(shù)股東權(quán)益

上市公司財(cái)務(wù)報(bào)表精講系列一:黃山旅游

Debezium日常分享系列之:Debezium 2.6.0.Beta1發(fā)布

2024

03月

18篇

02月

29篇

01月

18篇

2023年555篇

2022年518篇

2021年491篇

2020年191篇

2019年48篇

目錄

目錄

分類專欄

軟考高級(jí)系統(tǒng)架構(gòu)設(shè)計(jì)師考試

付費(fèi)

232篇

debezium

付費(fèi)

289篇

flume

付費(fèi)

57篇

前端和后端開發(fā)

付費(fèi)

121篇

大數(shù)據(jù)

付費(fèi)

522篇

Ansible、Docker、K8S、服務(wù)器相關(guān)知識(shí)總結(jié)

付費(fèi)

64篇

數(shù)據(jù)庫(kù)

付費(fèi)

49篇

軟考高級(jí)信息系統(tǒng)項(xiàng)目管理師考試

付費(fèi)

93篇

PMP項(xiàng)目管理

付費(fèi)

41篇

軟考高級(jí)系統(tǒng)分析師

付費(fèi)

12篇

zeppelin

付費(fèi)

25篇

大數(shù)據(jù)平臺(tái)二次開發(fā)

付費(fèi)

103篇

數(shù)據(jù)中臺(tái)開發(fā)實(shí)戰(zhàn)總結(jié)

付費(fèi)

9篇

Kafka

付費(fèi)

49篇

日常分享專欄

421篇

金融知識(shí)總結(jié)

27篇

全面解析企業(yè)財(cái)務(wù)報(bào)表

5篇

軟考信息系統(tǒng)項(xiàng)目管理師考試

Flink

56篇

Scala

1篇

面試題分享專欄

28篇

Java

8篇

數(shù)據(jù)分析

6篇

雅思學(xué)習(xí)每日知識(shí)分享

python

目錄

評(píng)論

被折疊的??條評(píng)論

為什么被折疊?

到【灌水樂(lè)園】發(fā)言

查看更多評(píng)論

添加紅包

祝福語(yǔ)

請(qǐng)?zhí)顚懠t包祝福語(yǔ)或標(biāo)題

紅包數(shù)量

個(gè)

紅包個(gè)數(shù)最小為10個(gè)

紅包總金額

紅包金額最低5元

余額支付

當(dāng)前余額3.43元

前往充值 >

需支付:10.00元

取消

確定

下一步

知道了

成就一億技術(shù)人!

領(lǐng)取后你會(huì)自動(dòng)成為博主和紅包主的粉絲

規(guī)則

hope_wisdom 發(fā)出的紅包

打賞作者

最笨的羊羊

你的鼓勵(lì)將是我創(chuàng)作的最大動(dòng)力

¥1

¥2

¥4

¥6

¥10

¥20

掃碼支付:¥1

獲取中

掃碼支付

您的余額不足,請(qǐng)更換掃碼支付或充值

打賞作者

實(shí)付元

使用余額支付

點(diǎn)擊重新獲取

掃碼支付

錢包余額

0

抵扣說(shuō)明:

1.余額是錢包充值的虛擬貨幣,按照1:1的比例進(jìn)行支付金額的抵扣。 2.余額無(wú)法直接購(gòu)買下載,可以購(gòu)買VIP、付費(fèi)專欄及課程。

余額充值

VAULT中文(繁體)翻譯:劍橋詞典

VAULT中文(繁體)翻譯:劍橋詞典

詞典

翻譯

語(yǔ)法

同義詞詞典

+Plus

劍橋詞典+Plus

Shop

劍橋詞典+Plus

我的主頁(yè)

+Plus 幫助

退出

劍橋詞典+Plus

我的主頁(yè)

+Plus 幫助

退出

登錄

/

注冊(cè)

中文 (簡(jiǎn)體)

查找

查找

英語(yǔ)-中文(繁體)

vault 在英語(yǔ)-中文(繁體)詞典中的翻譯

vaultnoun [ C ] uk

Your browser doesn't support HTML5 audio

/v?lt/ us

Your browser doesn't support HTML5 audio

/vɑ?lt/

vault noun [C]

(ARCH)

Add to word list

Add to word list

a type of arch that supports a roof or ceiling, especially in a church or public building, or a ceiling or roof supported by several of these arches

(尤指教堂或公共建築的)拱頂,穹頂

vault noun [C]

(ROOM)

(UK also vaults) a room, especially in a bank, with thick walls and a strong door, used to store money or valuable things in safe conditions

(尤指銀行的)金庫(kù),保險(xiǎn)庫(kù)

a bank vault

銀行金庫(kù)

She entered the vault with an armed guard.

她同一名武裝保安一起進(jìn)入了金庫(kù)。

a room under a church or a small building in a cemetery where dead bodies are buried

(教堂的)地下墓室;(墓地的)墓穴

She was buried in the family vault.

她被葬在家族墓室裡。

vaultverb uk

Your browser doesn't support HTML5 audio

/v?lt/ us

Your browser doesn't support HTML5 audio

/vɑ?lt/

[ I usually + adv/prep, T ] to jump over something by first putting your hands on it or by using a pole

(用手支撐或撐桿)跳躍,躍過(guò)

He vaulted over the gate.

他從那扇大門上翻了過(guò)去。

She vaulted the wall and kept running.

她躍過(guò)了那堵?tīng)澙^續(xù)往前跑。

He has vaulted 6.02 m in indoor competitions this year.

在今年的室內(nèi)比賽中他躍過(guò)了6.02米的高度。

也請(qǐng)參見(jiàn)

pole vault

[ T ] formal to move someone or something suddenly to a much more important position

突然提升;使躍居

Last week's changes vaulted the general to the top, over the heads of several of his seniors.

上週的變動(dòng)使這位將軍一下子超過(guò)他的幾位上司而躍居最高層。

(vault在劍橋英語(yǔ)-中文(繁體)詞典的翻譯 ? Cambridge University Press)

vault的例句

vault

In lateral view, larvae slightly and almost symmetrically vaulted; glabella and protopygidial axis inflated.

來(lái)自 Cambridge English Corpus

Gravestones became more splendid and monumental, amplifying the perspective not just of the family vaults but also of the whole parish architectural landscape.

來(lái)自 Cambridge English Corpus

I am told that one of the big joint stock banks have over £20,000,000 now on deposit, unused, in its own vaults.

來(lái)自 Hansard archive

該例句來(lái)自Hansard存檔。包含以下議會(huì)許可信息開放議會(huì)許可v3.0

Children play around in this area, but there are broken vaults and fallen gravestones.

來(lái)自 Hansard archive

該例句來(lái)自Hansard存檔。包含以下議會(huì)許可信息開放議會(huì)許可v3.0

They have cellars and vaults full of pictures for which no display space is available.

來(lái)自 Europarl Parallel Corpus - English

When such vaults are distressed, however, they may finally reveal the secrets of their construction by their patterns of cracks.

來(lái)自 Cambridge English Corpus

The vault's collapse changed the original location of the human remains and the offerings.

來(lái)自 Cambridge English Corpus

Comprising three storeys and underground vaults, it was built in the early 14th century, but still has two complete rooms.

來(lái)自 Hansard archive

該例句來(lái)自Hansard存檔。包含以下議會(huì)許可信息開放議會(huì)許可v3.0

示例中的觀點(diǎn)不代表劍橋詞典編輯、劍橋大學(xué)出版社和其許可證頒發(fā)者的觀點(diǎn)。

B1

vault的翻譯

中文(簡(jiǎn)體)

拱, (尤指教堂或公共建筑的)拱頂,穹頂, 房間…

查看更多內(nèi)容

西班牙語(yǔ)

bóveda, cámara acorazada, cripta…

查看更多內(nèi)容

葡萄牙語(yǔ)

abóbada, casa-forte, caixa-forte…

查看更多內(nèi)容

更多語(yǔ)言

土耳其語(yǔ)

法語(yǔ)

in Dutch

捷克語(yǔ)

丹麥語(yǔ)

印尼語(yǔ)

泰語(yǔ)

越南語(yǔ)

波蘭語(yǔ)

in Swedish

馬來(lái)語(yǔ)

德語(yǔ)

挪威語(yǔ)

in Ukrainian

俄語(yǔ)

kasa dairesi, (kilise) mezar odas?, s??ramak…

查看更多內(nèi)容

cave vo?tée, chambre forte, caveau…

查看更多內(nèi)容

gewelf, kluis, grafkelder…

查看更多內(nèi)容

sklepení, trezor, hrobka…

查看更多內(nèi)容

hv?lving, boks, -boks…

查看更多內(nèi)容

ruangan besar, gudang bawah tanah, ruang kuburan keluarga…

查看更多內(nèi)容

??????????, ??????????, ???????????????…

查看更多內(nèi)容

vòm, mái vòm, h?m…

查看更多內(nèi)容

skarbiec, krypta, grobowiec…

查看更多內(nèi)容

k?llarvalv, kassavalv, gravvalv…

查看更多內(nèi)容

kekubah, bilik kebal, makam…

查看更多內(nèi)容

das Gew?lbe, die Stahlkammer, die Gruft…

查看更多內(nèi)容

hvelv, kjeller, (bank)hvelv…

查看更多內(nèi)容

склеп?ння, п?двал, льох…

查看更多內(nèi)容

хранилище (в банке), склеп, перепрыгивать…

查看更多內(nèi)容

需要一個(gè)翻譯器嗎?

獲得快速、免費(fèi)的翻譯!

翻譯器工具

vault的發(fā)音是什么?

在英語(yǔ)詞典中查看 vault 的釋義

瀏覽

vat

VATable

Vatican City

vaudeville

vault

vaulted

vaulting

vaunt

vaunted

vault更多的中文(繁體)翻譯

全部

pole vault

查看全部意思?

“每日一詞”

veggie burger

UK

Your browser doesn't support HTML5 audio

/?ved?.i ?b??.ɡ?r/

US

Your browser doesn't support HTML5 audio

/?ved?.i ?b??.ɡ?/

a type of food similar to a hamburger but made without meat, by pressing together small pieces of vegetables, seeds, etc. into a flat, round shape

關(guān)于這個(gè)

博客

Forget doing it or forget to do it? Avoiding common mistakes with verb patterns (2)

March 06, 2024

查看更多

新詞

stochastic parrot

March 04, 2024

查看更多

已添加至 list

回到頁(yè)面頂端

內(nèi)容

英語(yǔ)-中文(繁體)例句翻譯

?劍橋大學(xué)出版社與評(píng)估2024

學(xué)習(xí)

學(xué)習(xí)

學(xué)習(xí)

新詞

幫助

紙質(zhì)書出版

Word of the Year 2021

Word of the Year 2022

Word of the Year 2023

開發(fā)

開發(fā)

開發(fā)

詞典API

雙擊查看

搜索Widgets

執(zhí)照數(shù)據(jù)

關(guān)于

關(guān)于

關(guān)于

無(wú)障礙閱讀

劍橋英語(yǔ)教學(xué)

劍橋大學(xué)出版社與評(píng)估

授權(quán)管理

Cookies與隱私保護(hù)

語(yǔ)料庫(kù)

使用條款

京ICP備14002226號(hào)-2

?劍橋大學(xué)出版社與評(píng)估2024

劍橋詞典+Plus

我的主頁(yè)

+Plus 幫助

退出

詞典

定義

清晰解釋自然的書面和口頭英語(yǔ)

英語(yǔ)

學(xué)習(xí)詞典

基礎(chǔ)英式英語(yǔ)

基礎(chǔ)美式英語(yǔ)

翻譯

點(diǎn)擊箭頭改變翻譯方向。

雙語(yǔ)詞典

英語(yǔ)-中文(簡(jiǎn)體)

Chinese (Simplified)–English

英語(yǔ)-中文(繁體)

Chinese (Traditional)–English

英語(yǔ)-荷蘭語(yǔ)

荷蘭語(yǔ)-英語(yǔ)

英語(yǔ)-法語(yǔ)

法語(yǔ)-英語(yǔ)

英語(yǔ)-德語(yǔ)

德語(yǔ)-英語(yǔ)

英語(yǔ)-印尼語(yǔ)

印尼語(yǔ)-英語(yǔ)

英語(yǔ)-意大利語(yǔ)

意大利語(yǔ)-英語(yǔ)

英語(yǔ)-日語(yǔ)

日語(yǔ)-英語(yǔ)

英語(yǔ)-挪威語(yǔ)

挪威語(yǔ)-英語(yǔ)

英語(yǔ)-波蘭語(yǔ)

波蘭語(yǔ)-英語(yǔ)

英語(yǔ)-葡萄牙語(yǔ)

葡萄牙語(yǔ)-英語(yǔ)

英語(yǔ)-西班牙語(yǔ)

西班牙語(yǔ)-英語(yǔ)

English–Swedish

Swedish–English

半雙語(yǔ)詞典

英語(yǔ)-阿拉伯語(yǔ)

英語(yǔ)-孟加拉語(yǔ)

英語(yǔ)-加泰羅尼亞語(yǔ)

英語(yǔ)-捷克語(yǔ)

英語(yǔ)-丹麥語(yǔ)

English–Gujarati

英語(yǔ)-印地語(yǔ)

英語(yǔ)-韓語(yǔ)

英語(yǔ)-馬來(lái)語(yǔ)

英語(yǔ)-馬拉地語(yǔ)

英語(yǔ)-俄語(yǔ)

English–Tamil

English–Telugu

英語(yǔ)-泰語(yǔ)

英語(yǔ)-土耳其語(yǔ)

英語(yǔ)-烏克蘭語(yǔ)

English–Urdu

英語(yǔ)-越南語(yǔ)

翻譯

語(yǔ)法

同義詞詞典

Pronunciation

劍橋詞典+Plus

Shop

劍橋詞典+Plus

我的主頁(yè)

+Plus 幫助

退出

登錄 /

注冊(cè)

中文 (簡(jiǎn)體) ?

Change

English (UK)

English (US)

Espa?ol

Русский

Português

Deutsch

Fran?ais

Italiano

中文 (簡(jiǎn)體)

正體中文 (繁體)

Polski

???

Türk?e

日本語(yǔ)

Ti?ng Vi?t

?????

?????

??????

關(guān)注我們

選擇一本詞典

最近的詞和建議

定義

清晰解釋自然的書面和口頭英語(yǔ)

英語(yǔ)

學(xué)習(xí)詞典

基礎(chǔ)英式英語(yǔ)

基礎(chǔ)美式英語(yǔ)

語(yǔ)法與同義詞詞典

對(duì)自然書面和口頭英語(yǔ)用法的解釋

英語(yǔ)語(yǔ)法

同義詞詞典

Pronunciation

British and American pronunciations with audio

English Pronunciation

翻譯

點(diǎn)擊箭頭改變翻譯方向。

雙語(yǔ)詞典

英語(yǔ)-中文(簡(jiǎn)體)

Chinese (Simplified)–English

英語(yǔ)-中文(繁體)

Chinese (Traditional)–English

英語(yǔ)-荷蘭語(yǔ)

荷蘭語(yǔ)-英語(yǔ)

英語(yǔ)-法語(yǔ)

法語(yǔ)-英語(yǔ)

英語(yǔ)-德語(yǔ)

德語(yǔ)-英語(yǔ)

英語(yǔ)-印尼語(yǔ)

印尼語(yǔ)-英語(yǔ)

英語(yǔ)-意大利語(yǔ)

意大利語(yǔ)-英語(yǔ)

英語(yǔ)-日語(yǔ)

日語(yǔ)-英語(yǔ)

英語(yǔ)-挪威語(yǔ)

挪威語(yǔ)-英語(yǔ)

英語(yǔ)-波蘭語(yǔ)

波蘭語(yǔ)-英語(yǔ)

英語(yǔ)-葡萄牙語(yǔ)

葡萄牙語(yǔ)-英語(yǔ)

英語(yǔ)-西班牙語(yǔ)

西班牙語(yǔ)-英語(yǔ)

English–Swedish

Swedish–English

半雙語(yǔ)詞典

英語(yǔ)-阿拉伯語(yǔ)

英語(yǔ)-孟加拉語(yǔ)

英語(yǔ)-加泰羅尼亞語(yǔ)

英語(yǔ)-捷克語(yǔ)

英語(yǔ)-丹麥語(yǔ)

English–Gujarati

英語(yǔ)-印地語(yǔ)

英語(yǔ)-韓語(yǔ)

英語(yǔ)-馬來(lái)語(yǔ)

英語(yǔ)-馬拉地語(yǔ)

英語(yǔ)-俄語(yǔ)

English–Tamil

English–Telugu

英語(yǔ)-泰語(yǔ)

英語(yǔ)-土耳其語(yǔ)

英語(yǔ)-烏克蘭語(yǔ)

English–Urdu

英語(yǔ)-越南語(yǔ)

詞典+Plus

詞匯表

選擇語(yǔ)言

中文 (簡(jiǎn)體) ?

English (UK)

English (US)

Espa?ol

Русский

Português

Deutsch

Fran?ais

Italiano

正體中文 (繁體)

Polski

???

Türk?e

日本語(yǔ)

Ti?ng Vi?t

?????

?????

??????

內(nèi)容

英語(yǔ)-中文(繁體)?

?

Noun?

vault (ARCH)

vault (ROOM)

Verb

例句

Translations

語(yǔ)法

所有翻譯

我的詞匯表

把vault添加到下面的一個(gè)詞匯表中,或者創(chuàng)建一個(gè)新詞匯表。

更多詞匯表

前往詞匯表

對(duì)該例句有想法嗎?

例句中的單詞與輸入詞條不匹配。

該例句含有令人反感的內(nèi)容。

取消

提交

例句中的單詞與輸入詞條不匹配。

該例句含有令人反感的內(nèi)容。

取消

提交

secrets 管理工具 Vault 的介紹、安裝及使用 - This Cute World

ets 管理工具 Vault 的介紹、安裝及使用 - This Cute World閱讀排行 系列 技術(shù) 生活 標(biāo)簽 朋友們 此刻 關(guān)于 Simplified Chinese

Simplified Chinese

取消閱讀排行系列技術(shù)生活標(biāo)簽朋友們此刻關(guān)于

Simplified Chinese

Simplified Chinese目錄一、Vault 基礎(chǔ)概念1. 數(shù)據(jù)存儲(chǔ)及加密解密2. 認(rèn)證系統(tǒng)及權(quán)限系統(tǒng)3. Secret Engine二、部署 Vault0. 如何選擇存儲(chǔ)后端?1. docker-compose 部署(非 HA)2. 通過(guò) helm 部署高可用的 vault3. 初始化并解封 vault4. 初始化并設(shè)置自動(dòng)解封三、Vault 自身的配置管理1. 使用 pulumi 自動(dòng)化配置 vault1.1 Token 的生成四、在 Kubernetes 中使用 vault 注入 secrets1. 部署并配置 vault agent1.1 使用集群外部的 valut 實(shí)例2. 關(guān)聯(lián) k8s rbac 權(quán)限系統(tǒng)和 vault3. 部署 Pod4. vault agent 配置5. 拓展:在 kubernetes 中使用 vault 的其他姿勢(shì)五、使用 vault 實(shí)現(xiàn) AWS IAM Credentials 的自動(dòng)輪轉(zhuǎn)secrets 管理工具 Vault 的介紹、安裝及使用ryan4yin

?收錄于 ?類別 tech?和?系列 寫給開發(fā)人員的實(shí)用密碼學(xué)?云原生相關(guān)?2021-01-24??2021-01-24??約 8631 字??預(yù)計(jì)閱讀 18 分鐘?系列 - 云原生相關(guān)

FinOps for Kubernetes - 如何拆分 Kubernetes 成本部署一個(gè) Kubernetes 集群Kubernetes 微服務(wù)最佳實(shí)踐云原生流水線 Argo Workflows 的安裝、使用以及個(gè)人體驗(yàn)Pulumi 使用體驗(yàn) - 基礎(chǔ)設(shè)施代碼化使用 Istio 進(jìn)行 JWT 身份驗(yàn)證(充當(dāng) API 網(wǎng)關(guān))Kubernetes 常見(jiàn)錯(cuò)誤、原因及處理方法secrets 管理工具 Vault 的介紹、安裝及使用Kubernetes 中的證書管理工具 - cert-manager系列 - 寫給開發(fā)人員的實(shí)用密碼學(xué)

寫給開發(fā)人員的實(shí)用密碼學(xué)(一)—— 概覽寫給開發(fā)人員的實(shí)用密碼學(xué)(二)—— 哈希函數(shù)寫給開發(fā)人員的實(shí)用密碼學(xué)(三)—— MAC 與密鑰派生函數(shù) KDF寫給開發(fā)人員的實(shí)用密碼學(xué)(四)—— 安全隨機(jī)數(shù)生成器 CSPRNG寫給開發(fā)人員的實(shí)用密碼學(xué)(五)—— 密鑰交換 DHKE 與完美前向保密 PFS寫給開發(fā)人員的實(shí)用密碼學(xué)(六)—— 對(duì)稱密鑰加密算法寫給開發(fā)人員的實(shí)用密碼學(xué)(七)—— 非對(duì)稱密鑰加密算法 RSA/ECC寫給開發(fā)人員的實(shí)用密碼學(xué)(八)—— 數(shù)字證書與 TLS 協(xié)議secrets 管理工具 Vault 的介紹、安裝及使用Kubernetes 中的證書管理工具 - cert-manager個(gè)人數(shù)據(jù)安全不完全指南目錄

一、Vault 基礎(chǔ)概念1. 數(shù)據(jù)存儲(chǔ)及加密解密2. 認(rèn)證系統(tǒng)及權(quán)限系統(tǒng)3. Secret Engine二、部署 Vault0. 如何選擇存儲(chǔ)后端?1. docker-compose 部署(非 HA)2. 通過(guò) helm 部署高可用的 vault3. 初始化并解封 vault4. 初始化并設(shè)置自動(dòng)解封三、Vault 自身的配置管理1. 使用 pulumi 自動(dòng)化配置 vault1.1 Token 的生成四、在 Kubernetes 中使用 vault 注入 secrets1. 部署并配置 vault agent1.1 使用集群外部的 valut 實(shí)例2. 關(guān)聯(lián) k8s rbac 權(quán)限系統(tǒng)和 vault3. 部署 Pod4. vault agent 配置5. 拓展:在 kubernetes 中使用 vault 的其他姿勢(shì)五、使用 vault 實(shí)現(xiàn) AWS IAM Credentials 的自動(dòng)輪轉(zhuǎn)Vault 是 hashicorp 推出的 secrets 管理、加密即服務(wù)與權(quán)限管理工具。它的功能簡(jiǎn)介如下:secrets 管理:支持保存各種自定義信息、自動(dòng)生成各類密鑰,vault 自動(dòng)生成的密鑰還能自動(dòng)輪轉(zhuǎn)(rotate)認(rèn)證方式:支持接入各大云廠商的賬號(hào)體系(比如阿里云RAM子賬號(hào)體系)或者 LDAP 等進(jìn)行身份驗(yàn)證,不需要?jiǎng)?chuàng)建額外的賬號(hào)體系。權(quán)限管理:通過(guò) policy,可以設(shè)定非常細(xì)致的 ACL 權(quán)限。密鑰引擎:也支持接管各大云廠商的賬號(hào)體系(比如阿里云RAM子賬號(hào)體系),實(shí)現(xiàn) API Key 的自動(dòng)輪轉(zhuǎn)。支持接入 kubernetes rbac 認(rèn)證體系,通過(guò) serviceaccount+role 為每個(gè) Pod 單獨(dú)配置認(rèn)證角色。支持通過(guò) sidecar/init-container 將 secrets 注入到 pod 中,或者通過(guò) k8s operator 將 vault 數(shù)據(jù)同步到 k8s secrets 中在使用 Vault 之前,我們是以攜程開源的 Apollo 作為微服務(wù)的分布式配置中心。Apollo 在國(guó)內(nèi)非常流行。它功能強(qiáng)大,支持配置的繼承,也有提供 HTTP API 方便自動(dòng)化。

缺點(diǎn)是權(quán)限管理和 secrets 管理比較弱,也不支持信息加密,不適合直接存儲(chǔ)敏感信息。因此我們現(xiàn)在切換到了 Vault.目前我們本地的 CI/CD 流水線和云上的微服務(wù)體系,都是使用的 Vault 做 secrets 管理.一、Vault 基礎(chǔ)概念「基本概念」這一節(jié),基本都翻譯自官方文檔: https://www.vaultproject.io/docs/internals/architecture首先看一下 Vault 的架構(gòu)圖:vault layers可以看到,幾乎所有的 Vault 組件都被統(tǒng)稱為「屏障(Barrier)」。Vault 可以簡(jiǎn)單地被劃分為存儲(chǔ)后端(Storage Backend)、屏障(Barrier)和 HTTP/S API 三個(gè)部分。Vault,翻譯成中文就是金庫(kù)。類比銀行金庫(kù),「屏障」就是用于保護(hù)金庫(kù)的合金大門和鋼筋混凝土,存儲(chǔ)后端和客戶端之間的所有數(shù)據(jù)流動(dòng)都需要經(jīng)過(guò)它?!钙琳稀勾_保只有加密數(shù)據(jù)會(huì)被寫入存儲(chǔ)后端,加密數(shù)據(jù)在經(jīng)過(guò)「屏障」被讀出的過(guò)程中被驗(yàn)證與解密。和銀行金庫(kù)的大門非常類似,「屏障」也必須先解封,才能解密存儲(chǔ)后端中的數(shù)據(jù)。1. 數(shù)據(jù)存儲(chǔ)及加密解密存儲(chǔ)后端(Storage Backend): Vault 自身不存儲(chǔ)數(shù)據(jù),因此需要為它配置一個(gè)存儲(chǔ)后端。

存儲(chǔ)后端是不受信任的,只用于存儲(chǔ)加密數(shù)據(jù)。初始化(Initialization): Vault 在首次啟動(dòng)時(shí)需要初始化,這一步生成一個(gè)加密密鑰(Encryption Key)用于加密數(shù)據(jù),加密完成的數(shù)據(jù)才能被保存到存儲(chǔ)后端。解封(Unseal): Vault 啟動(dòng)后,因?yàn)椴恢兰用苊荑€所以無(wú)法解密數(shù)據(jù),這種狀態(tài)被形象得稱作已封?。⊿ealed)。在解封前 Vault 無(wú)法進(jìn)行任何操作。加密密鑰被主密鑰(Master Key)保護(hù),我們必須提供主密鑰才能解密出 Vault 的加密密鑰,從而完成解封操作。默認(rèn)情況下,Vault 使用沙米爾密鑰分割算法

將主密鑰分割成五個(gè)分割密鑰(Key Shares),必須要提供其中任意三個(gè)分割密鑰才能重建出主密鑰,完成解封操作。vault-shamir-secret-sharing分割密鑰的總數(shù),以及重建主密鑰最少需要的分割密鑰數(shù)量,都是可以調(diào)整的。

沙米爾密鑰分割算法也可以關(guān)閉,這樣主密鑰將被直接提供給管理員,管理員可直接使用它進(jìn)行解封操作。2. 認(rèn)證系統(tǒng)及權(quán)限系統(tǒng)在解封完成后,Vault 就可以開始處理請(qǐng)求了。HTTP 請(qǐng)求進(jìn)入后的整個(gè)處理流程都由 vault core 管理,core 會(huì)強(qiáng)制進(jìn)行 ACL 檢查,并確保審計(jì)日志(audit logging)完成記錄??蛻舳耸状芜B接 vault 時(shí),需要先完成身份認(rèn)證,vault 的 auth methods 模塊有很多身份認(rèn)證方法可選:用戶友好的認(rèn)證方法,適合管理員使用:username/password、云服務(wù)商、ldap在創(chuàng)建 user 的時(shí)候,需要為 user 綁定 policy,給予合適的權(quán)限。應(yīng)用友好的方法,適合應(yīng)用程序使用:public/private keys、tokens、kubernetes、jwt身份驗(yàn)證請(qǐng)求流經(jīng) core 并進(jìn)入 auth methods,auth methods 確定請(qǐng)求是否有效并返回「關(guān)聯(lián)策略(policies)」的列表。ACL 策略由 policy store 負(fù)責(zé)管理與存儲(chǔ),由 core 進(jìn)行 ACL 檢查。

ACL 的默認(rèn)行為是拒絕,這意味著除非明確配置 policy 允許某項(xiàng)操作,否則該操作將被拒絕。在通過(guò) auth methods 完成了身份認(rèn)證,并且返回的關(guān)聯(lián)策略也沒(méi)毛病之后,token store 將會(huì)生成并管理一個(gè)新的憑證(token),

這個(gè) token 會(huì)被返回給客戶端,用于進(jìn)行后續(xù)請(qǐng)求。類似 web 網(wǎng)站的 cookie,token 也都存在一個(gè)租期(lease)或者說(shuō)有效期,這加強(qiáng)了安全性。token 關(guān)聯(lián)了相關(guān)的策略 policies,這些策略將被用于驗(yàn)證請(qǐng)求的權(quán)限。請(qǐng)求經(jīng)過(guò)驗(yàn)證后,將被路由到 secret engine。如果 secret engine 返回了一個(gè) secret(由 vault 自動(dòng)生成的 secret),

core 會(huì)將其注冊(cè)到 expiration manager,并給它附加一個(gè) lease ID。lease ID 被客戶端用于更新(renew)或吊銷(revoke)它得到的 secret.如果客戶端允許租約(lease)到期,expiration manager 將自動(dòng)吊銷這個(gè) secret.core 還負(fù)責(zé)處理審核代理 audit broker的請(qǐng)求及響應(yīng)日志,將請(qǐng)求發(fā)送到所有已配置的審核設(shè)備 audit devices. 不過(guò)默認(rèn)情況下這個(gè)功能貌似是關(guān)閉的。3. Secret EngineSecret Engine 是保存、生成或者加密數(shù)據(jù)的組件,它非常靈活。有的 Secret Engines 只是單純地存儲(chǔ)與讀取數(shù)據(jù),比如 kv 就可以看作一個(gè)加密的 Redis。

而其他的 Secret Engines 則連接到其他的服務(wù)并按需生成動(dòng)態(tài)憑證。還有些 Secret Engines 提供「加密即服務(wù)(encryption as a service)」的能力,如 transit、證書管理等。常用的 engine 舉例:AliCloud Secrets Engine: 基于 RAM 策略動(dòng)態(tài)生成 AliCloud Access Token,或基于 RAM 角色動(dòng)態(tài)生成 AliCloud STS 憑據(jù)Access Token 會(huì)自動(dòng)更新(Renew),而 STS 憑據(jù)是臨時(shí)使用的,過(guò)期后就失效了。kv: 鍵值存儲(chǔ),可用于存儲(chǔ)一些靜態(tài)的配置。它一定程度上能替代掉攜程的 Apollo 配置中心。Transit Secrets Engine: 提供加密即服務(wù)的功能,它只負(fù)責(zé)加密和解密,不負(fù)責(zé)存儲(chǔ)。主要應(yīng)用場(chǎng)景是幫 app 加解密數(shù)據(jù),但是數(shù)據(jù)仍舊存儲(chǔ)在 MySQL 等數(shù)據(jù)庫(kù)中。二、部署 Vault官方建議通過(guò) Helm 部署 vault,大概流程:使用 helm/docker 部署運(yùn)行 vault.初始化/解封 vault: vault 安全措施,每次重啟必須解封(可設(shè)置自動(dòng)解封).0. 如何選擇存儲(chǔ)后端?首先,我們肯定需要高可用 HA,至少要保留能升級(jí)到 HA 的能力,所以不建議選擇不支持 HA 的后端。而具體的選擇,就因團(tuán)隊(duì)經(jīng)驗(yàn)而異了,人們往往傾向于使用自己熟悉的、知根知底的后端,或者選用云服務(wù)。比如我們對(duì) MySQL/PostgreSQL 比較熟悉,而且使用云服務(wù)提供的數(shù)據(jù)庫(kù)不需要考慮太多的維護(hù)問(wèn)題,MySQL/PostgreSQL 作為一個(gè)通用協(xié)議也不會(huì)被云廠商綁架,那我們就傾向于使用這兩者之一。而如果你們是本地自建,那你可能更傾向于使用 Etcd/Consul/Raft 做后端存儲(chǔ)。1. docker-compose 部署(非 HA)推薦用于本地開發(fā)測(cè)試環(huán)境,或者其他不需要高可用的環(huán)境。docker-compose.yml 示例如下: 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

version: '3.3'

services:

vault:

# 文檔:https://hub.docker.com/_/vault

image: vault:1.6.0

container_name: vault

ports:

# rootless 容器,內(nèi)部不能使用標(biāo)準(zhǔn)端口 443

- "443:8200"

restart: always

volumes:

# 審計(jì)日志存儲(chǔ)目錄(`file` audit backend)

- ./logs:/vault/logs

# 當(dāng)使用 file data storage 插件時(shí),數(shù)據(jù)被存儲(chǔ)在這里。默認(rèn)不往這寫任何數(shù)據(jù)。

- ./file:/vault/file

# vault 配置

- ./config.hcl:/vault/config/config.hcl

# TLS 證書

- ./certs:/certs

# vault 需要鎖定內(nèi)存以防止敏感值信息被交換(swapped)到磁盤中

# 為此需要添加如下 capability

cap_add:

- IPC_LOCK

# 必須設(shè)定 entrypoint,否則 vault 容器默認(rèn)以 development 模式運(yùn)行

entrypoint: vault server -config /vault/config/config.hcl

config.hcl 內(nèi)容如下: 1

2

3

4

5

6

7

8

9

10

11

12

13

14

ui = true

// 使用文件做數(shù)據(jù)存儲(chǔ)(單節(jié)點(diǎn))

storage "file" {

path = "/vault/file"

}

listener "tcp" {

address = "[::]:8200"

tls_disable = false

tls_cert_file = "/certs/server.crt"

tls_key_file = "/certs/server.key"

}

將如上兩份配置保存在同一文件夾內(nèi),同時(shí)在 ./certs 中提供 TLS 證書 server.crt 和私鑰 server.key。然后 docker-compose up -d 就能啟動(dòng)運(yùn)行一個(gè) vault 實(shí)例。2. 通過(guò) helm 部署高可用的 vault推薦用于生產(chǎn)環(huán)境通過(guò) helm 部署:1

2

3

4

5

6

# 添加 valut 倉(cāng)庫(kù)

helm repo add hashicorp https://helm.releases.hashicorp.com

# 查看 vault 版本號(hào)

helm search repo hashicorp/vault -l | head

# 下載某個(gè)版本號(hào)的 vault

helm pull hashicorp/vault --version 0.11.0 --untar

參照下載下來(lái)的 ./vault/values.yaml 編寫 custom-values.yaml,

部署一個(gè)以 mysql 為后端存儲(chǔ)的 HA vault,配置示例如下:配置內(nèi)容雖然多,但是大都是直接拷貝自 ./vault/values.yaml,改動(dòng)很少。

測(cè)試 Vault 時(shí)可以忽略掉其中大多數(shù)的配置項(xiàng)。 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

global:

# enabled is the master enabled switch. Setting this to true or false

# will enable or disable all the components within this chart by default.

enabled: true

# TLS for end-to-end encrypted transport

tlsDisable: false

injector:

# True if you want to enable vault agent injection.

enabled: true

replicas: 1

# If true, will enable a node exporter metrics endpoint at /metrics.

metrics:

enabled: false

# Mount Path of the Vault Kubernetes Auth Method.

authPath: "auth/kubernetes"

certs:

# secretName is the name of the secret that has the TLS certificate and

# private key to serve the injector webhook. If this is null, then the

# injector will default to its automatic management mode that will assign

# a service account to the injector to generate its own certificates.

secretName: null

# caBundle is a base64-encoded PEM-encoded certificate bundle for the

# CA that signed the TLS certificate that the webhook serves. This must

# be set if secretName is non-null.

caBundle: ""

# certName and keyName are the names of the files within the secret for

# the TLS cert and private key, respectively. These have reasonable

# defaults but can be customized if necessary.

certName: tls.crt

keyName: tls.key

server:

# Resource requests, limits, etc. for the server cluster placement. This

# should map directly to the value of the resources field for a PodSpec.

# By default no direct resource request is made.

# Enables a headless service to be used by the Vault Statefulset

service:

enabled: true

# Port on which Vault server is listening

port: 8200

# Target port to which the service should be mapped to

targetPort: 8200

# This configures the Vault Statefulset to create a PVC for audit

# logs. Once Vault is deployed, initialized and unseal, Vault must

# be configured to use this for audit logs. This will be mounted to

# /vault/audit

# See https://www.vaultproject.io/docs/audit/index.html to know more

auditStorage:

enabled: false

# Run Vault in "HA" mode. There are no storage requirements unless audit log

# persistence is required. In HA mode Vault will configure itself to use Consul

# for its storage backend. The default configuration provided will work the Consul

# Helm project by default. It is possible to manually configure Vault to use a

# different HA backend.

ha:

enabled: true

replicas: 3

# Set the api_addr configuration for Vault HA

# See https://www.vaultproject.io/docs/configuration#api_addr

# If set to null, this will be set to the Pod IP Address

apiAddr: null

# config is a raw string of default configuration when using a Stateful

# deployment. Default is to use a Consul for its HA storage backend.

# This should be HCL.

# Note: Configuration files are stored in ConfigMaps so sensitive data

# such as passwords should be either mounted through extraSecretEnvironmentVars

# or through a Kube secret. For more information see:

# https://www.vaultproject.io/docs/platform/k8s/helm/run#protecting-sensitive-vault-configurations

config: |

ui = true

listener "tcp" {

address = "[::]:8200"

cluster_address = "[::]:8201"

# 注意,這個(gè)值要和 helm 的參數(shù) global.tlsDisable 一致

tls_disable = false

tls_cert_file = "/etc/certs/vault.crt"

tls_key_file = "/etc/certs/vault.key"

}

# storage "postgresql" {

# connection_url = "postgres://username:password@:5432/vault?sslmode=disable"

# ha_enabled = true

# }

service_registration "kubernetes" {}

# Example configuration for using auto-unseal, using AWS KMS.

# the cluster must have a service account that is authorized to access AWS KMS, throught an IAM Role.

# seal "awskms" {

# region = "us-east-1"

# kms_key_id = ""

# 默認(rèn)情況下插件會(huì)使用 awskms 的公網(wǎng) enpoint,但是也可以使用如下參數(shù),改用自行創(chuàng)建的 vpc 內(nèi)網(wǎng) endpoint

# endpoint = "https://.kms.us-east-1.vpce.amazonaws.com"

# }

# Definition of the serviceAccount used to run Vault.

# These options are also used when using an external Vault server to validate

# Kubernetes tokens.

serviceAccount:

create: true

name: "vault"

annotations:

# 如果要使用 auto unseal 的話,這個(gè)填寫擁有 awskms 權(quán)限的 AWS IAM Role

eks.amazonaws.com/role-arn:

# Vault UI

ui:

enabled: true

publishNotReadyAddresses: true

serviceType: ClusterIP

activeVaultPodOnly: true

externalPort: 8200

現(xiàn)在使用自定義的 custom-values.yaml 部署 vautl:1

2

3

kubectl create namespace vault

# 安裝/升級(jí) valut

helm upgrade --install vault ./vault --namespace vault -f custom-values.yaml

3. 初始化并解封 vault官方文檔:Initialize and unseal Vault - Vault on Kubernetes Deployment Guide通過(guò) helm 部署 vault,默認(rèn)會(huì)部署一個(gè)三副本的 StatefulSet,但是這三個(gè)副本都會(huì)處于 NotReady 狀態(tài)(docker 方式部署的也一樣)。

接下來(lái)還需要手動(dòng)初始化并解封 vault,才能 Ready:第一步:從三個(gè)副本中隨便選擇一個(gè),運(yùn)行 vault 的初始化命令:kubectl exec -ti vault-0 -- vault operator init初始化操作會(huì)返回 5 個(gè) unseal keys,以及一個(gè) Initial Root Token,這些數(shù)據(jù)非常敏感非常重要,一定要保存到安全的地方!第二步:在每個(gè)副本上,使用任意三個(gè) unseal keys 進(jìn)行解封操作。一共有三個(gè)副本,也就是說(shuō)要解封 3*3 次,才能完成 vault 的完整解封!1

2

3

4

5

# 每個(gè)實(shí)例都需要解封三次!

## Unseal the first vault server until it reaches the key threshold

$ kubectl exec -ti vault-0 -- vault operator unseal # ... Unseal Key 1

$ kubectl exec -ti vault-0 -- vault operator unseal # ... Unseal Key 2

$ kubectl exec -ti vault-0 -- vault operator unseal # ... Unseal Key 3

這樣就完成了部署,但是要注意,vault 實(shí)例每次重啟后,都需要重新解封!也就是重新進(jìn)行第二步操作!4. 初始化并設(shè)置自動(dòng)解封在未設(shè)置 auto unseal 的情況下,vault 每次重啟都要手動(dòng)解封所有 vault 實(shí)例,實(shí)在是很麻煩,在云上自動(dòng)擴(kuò)縮容的情況下,vault 實(shí)例會(huì)被自動(dòng)調(diào)度,這種情況就更麻煩了。為了簡(jiǎn)化這個(gè)流程,可以考慮配置 auto unseal 讓 vault 自動(dòng)解封。自動(dòng)解封目前有兩種方法:使用阿里云/AWS/Azure 等云服務(wù)提供的密鑰庫(kù)來(lái)管理 encryption keyAWS: awskms Seal如果是 k8s 集群,vault 使用的 ServiceAccount 需要有權(quán)限使用 AWS KMS,它可替代掉 config.hcl 中的 access_key/secret_key 兩個(gè)屬性阿里云:alicloudkms Seal如果你不想用云服務(wù),那可以考慮 autounseal-transit,這種方法使用另一個(gè) vault 實(shí)例提供的 transit 引擎來(lái)實(shí)現(xiàn) auto-unseal.簡(jiǎn)單粗暴:直接寫個(gè) crontab 或者在 CI 平臺(tái)上加個(gè)定時(shí)任務(wù)去執(zhí)行解封命令,以實(shí)現(xiàn)自動(dòng)解封。不過(guò)這樣安全性就不好說(shuō)了。以使用 awskms 為例,首先創(chuàng)建 aws IAM 的 policy 內(nèi)容如下: 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

{

"Version": "2012-10-17",

"Statement": [

{

"Sid": "VaultKMSUnseal",

"Effect": "Allow",

"Action": [

"kms:Decrypt",

"kms:Encrypt",

"kms:DescribeKey"

],

"Resource": "*"

}

]

}

然后創(chuàng)建 IAM Role 綁定上面的 policy,并為 vault 的 k8s serviceaccount 創(chuàng)建一個(gè) IAM Role,綁定上這個(gè) policy.這樣 vault 使用的 serviceaccount 自身就擁有了訪問(wèn) awskms 的權(quán)限,也就不需要額外通過(guò) access_key/secret_key 來(lái)訪問(wèn) awskms.關(guān)于 IAM Role 和 k8s serviceaccount 如何綁定,參見(jiàn)官方文檔:IAM roles for EKS service accounts完事后再修改好前面提供的 helm 配置,部署它,最后使用如下命令初始化一下:1

2

3

4

# 初始化命令和普通模式并無(wú)不同

kubectl exec -ti vault-0 -- vault operator init

# 會(huì)打印出一個(gè) root token,以及五個(gè) Recovery Key(而不是 Unseal Key)

# Recover Key 不再用于解封,但是重新生成 root token 等操作仍然會(huì)需要用到它.

然后就大功告成了,可以嘗試下刪除 vault 的 pod,新建的 Pod 應(yīng)該會(huì)自動(dòng)解封。三、Vault 自身的配置管理Vault 本身是一個(gè)復(fù)雜的 secrets 工具,它提供了 Web UI 和 CLI 用于手動(dòng)管理與查看 Vault 的內(nèi)容。但是作為一名 DevOps,我們當(dāng)然更喜歡更自治的方法,這有兩種選擇:使用 vault 的 sdk: python-hvac使用 terraform-provider-vault 或者 pulumi-vault 實(shí)現(xiàn) vault 配置的自動(dòng)化管理。Web UI 適合手工操作,而 sdk/terraform-provider-vault 則適合用于自動(dòng)化管理 vault.我們的測(cè)試環(huán)境就是使用 pulumi-vault 完成的自動(dòng)化配置 vault policy 和 kubernetes role,然后自動(dòng)化注入所有測(cè)試用的 secrets.1. 使用 pulumi 自動(dòng)化配置 vault使用 pulumi 管理 vault 配置的優(yōu)勢(shì)是很大的,因?yàn)樵粕腺Y源的敏感信息(數(shù)據(jù)庫(kù)賬號(hào)密碼、資源 ID、RAM子賬號(hào))都是 pulumi 創(chuàng)建的。再結(jié)合使用 pulumi_valut,就能實(shí)現(xiàn)敏感信息自動(dòng)生成后,立即保存到 vault 中,實(shí)現(xiàn)完全自動(dòng)化。后續(xù)微服務(wù)就可以通過(guò) kubernetes 認(rèn)證,直接從 vault 讀取敏感信息。或者是寫入到本地的 vault 中留做備份,在需要的時(shí)候,管理員能登入進(jìn)去查看相關(guān)敏感信息。1.1 Token 的生成pulumi_vault 本身挺簡(jiǎn)單的,聲明式的配置嘛,直接用就是了。但是它一定要求提供 VAULT_TOKEN 作為身份認(rèn)證的憑證(實(shí)測(cè) userpass/approle 都不能直接使用,會(huì)報(bào)錯(cuò) no vault token found),而且 pulumi 還會(huì)先生成臨時(shí)用的 child token,然后用這個(gè) child token

進(jìn)行后續(xù)的操作。首先安全起見(jiàn),肯定不應(yīng)該直接提供 root token!root token 應(yīng)該封存,除了緊急情況不應(yīng)該啟用。那么應(yīng)該如何生成一個(gè)權(quán)限有限的 token 給 vault 使用呢?

我的方法是創(chuàng)建一個(gè) userpass 賬號(hào),通過(guò) policy 給予它有限的權(quán)限。

然后先手動(dòng)(或者自動(dòng))登錄獲取到 token,再將 token 提供給 pulumi_vault 使用。這里面有個(gè)坑,就是必須給 userpass 賬號(hào)創(chuàng)建 child token 的權(quán)限:1

2

3

4

5

6

7

8

path "local/*" {

capabilities = ["read", "list"]

}

// 允許創(chuàng)建 child token

path "auth/token/create" {

capabilities = ["create", "read", "update", "delete", "list"]

}

不給這個(gè)權(quán)限,pulumi_vault 就會(huì)一直報(bào)錯(cuò)。。然后還得給它「自動(dòng)化配置」需要的權(quán)限,比如自動(dòng)創(chuàng)建/更新 policy/secrets/kubernetes 等等,示例如下: 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

# To list policies - Step 3

path "sys/policy"

{

capabilities = ["read"]

}

# Create and manage ACL policies broadly across Vault

path "sys/policy/*"

{

capabilities = ["create", "read", "update", "delete", "list", "sudo"]

}

# List, create, update, and delete key/value secrets

path "secret/*"

{

capabilities = ["create", "read", "update", "delete", "list", "sudo"]

}

path "auth/kubernetes/role/*"

{

capabilities = ["create", "read", "update", "list"]

}

四、在 Kubernetes 中使用 vault 注入 secretsvault-k8s-auth-workflow前面提到過(guò) vault 支持通過(guò) Kubernetes 的 ServiceAccount 為每個(gè) Pod 單獨(dú)分配權(quán)限。應(yīng)用程序有兩種方式去讀取 vault 中的配置:借助 Vault Sidecar,將 secrets 以文件的形式自動(dòng)注入到 Pod 中,比如 /vault/secrets/config.jsonvault sidecar 在常駐模式下每 15 秒更新一次配置,應(yīng)用程序可以使用 watchdog 實(shí)時(shí)監(jiān)控 secrets 文件的變更。應(yīng)用程序自己使用 SDK 直接訪問(wèn) vault api 獲取 secrets上述兩種方式,都可以借助 Kubernetes ServiceAccount 進(jìn)行身份驗(yàn)證和權(quán)限分配。下面以 Sidecar 模式為例,介紹如何將 secrets 以文件形式注入到 Pod 中。1. 部署并配置 vault agent首先啟用 Vault 的 Kubernetes 身份驗(yàn)證: 1

2

3

4

5

6

7

8

9

10

11

12

13

# 配置身份認(rèn)證需要在 vault pod 中執(zhí)行,啟動(dòng) vault-0 的交互式會(huì)話

kubectl exec -n vault -it vault-0 -- /bin/sh

export VAULT_TOKEN=''

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

# 啟用 Kubernetes 身份驗(yàn)證

vault auth enable kubernetes

# kube-apiserver API 配置,vault 需要通過(guò) kube-apiserver 完成對(duì) serviceAccount 的身份驗(yàn)證

vault write auth/kubernetes/config \

token_reviewer_jwt="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \

kubernetes_host="https://$KUBERNETES_PORT_443_TCP_ADDR:443" \

kubernetes_ca_cert=@/var/run/secrets/kubernetes.io/serviceaccount/ca.crt

1.1 使用集群外部的 valut 實(shí)例如果你沒(méi)這個(gè)需求,請(qǐng)?zhí)^(guò)這一節(jié)。詳見(jiàn) Install the Vault Helm chart configured to address an external Vaultkubernetes 也可以和外部的 vault 實(shí)例集成,集群中只部署 vault-agent.這適用于多個(gè) kubernetes 集群以及其他 APP 共用一個(gè) vault 實(shí)例的情況,比如我們本地的多個(gè)開發(fā)測(cè)試集群,就都共用著同一個(gè) vault 實(shí)例,方便統(tǒng)一管理應(yīng)用的 secrets.首先,使用 helm chart 部署 vault-agent,接入外部的 vault 實(shí)例。使用的 custom-values.yaml 示例如下: 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

global:

# enabled is the master enabled switch. Setting this to true or false

# will enable or disable all the components within this chart by default.

enabled: true

# TLS for end-to-end encrypted transport

tlsDisable: false

injector:

# True if you want to enable vault agent injection.

enabled: true

replicas: 1

# If multiple replicas are specified, by default a leader-elector side-car

# will be created so that only one injector attempts to create TLS certificates.

leaderElector:

enabled: true

image:

repository: "gcr.io/google_containers/leader-elector"

tag: "0.4"

ttl: 60s

# If true, will enable a node exporter metrics endpoint at /metrics.

metrics:

enabled: false

# External vault server address for the injector to use. Setting this will

# disable deployment of a vault server along with the injector.

# TODO 這里的 https ca.crt 要怎么設(shè)置?mTLS 又該如何配置?

externalVaultAddr: "https://"

# Mount Path of the Vault Kubernetes Auth Method.

authPath: "auth/kubernetes"

certs:

# secretName is the name of the secret that has the TLS certificate and

# private key to serve the injector webhook. If this is null, then the

# injector will default to its automatic management mode that will assign

# a service account to the injector to generate its own certificates.

secretName: null

# caBundle is a base64-encoded PEM-encoded certificate bundle for the

# CA that signed the TLS certificate that the webhook serves. This must

# be set if secretName is non-null.

caBundle: ""

# certName and keyName are the names of the files within the secret for

# the TLS cert and private key, respectively. These have reasonable

# defaults but can be customized if necessary.

certName: tls.crt

keyName: tls.key

部署命令和 通過(guò) helm 部署 vault 一致,只要更換 custom-values.yaml 就行。vault-agent 部署完成后,第二步是為 vault 創(chuàng)建 serviceAccount、secret 和 ClusterRoleBinding,以允許 vault 審查 kubernetes 的 token, 完成對(duì) pod 的身份驗(yàn)證. yaml 配置如下: 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

---

apiVersion: v1

kind: ServiceAccount

metadata:

name: vault-auth

namespace: vault

---

apiVersion: v1

kind: Secret

metadata:

name: vault-auth

namespace: vault

annotations:

kubernetes.io/service-account.name: vault-auth

type: kubernetes.io/service-account-token

---

apiVersion: rbac.authorization.k8s.io/v1beta1

kind: ClusterRoleBinding

metadata:

name: role-tokenreview-binding

roleRef:

apiGroup: rbac.authorization.k8s.io

kind: ClusterRole

name: system:auth-delegator

subjects:

- kind: ServiceAccount

name: vault-auth

namespace: vault

現(xiàn)在在 vault 實(shí)例這邊,啟用 kubernetes 身份驗(yàn)證,在 vault 實(shí)例內(nèi),執(zhí)行如下命令:vault 實(shí)例內(nèi)顯然沒(méi)有 kubectl 和 kubeconfig,簡(jiǎn)便起見(jiàn),下列的 vault 命令也可以通過(guò) Web UI 完成。 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

export VAULT_TOKEN=''

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

# 啟用 Kubernetes 身份驗(yàn)證

vault auth enable kubernetes

# kube-apiserver API 配置,vault 需要通過(guò) kube-apiserver 完成對(duì) serviceAccount 的身份驗(yàn)證

# TOKEN_REVIEW_JWT: 就是我們前面創(chuàng)建的 secret `vault-auth`

TOKEN_REVIEW_JWT=$(kubectl -n vault get secret vault-auth -o go-template='{{ .data.token }}' | base64 --decode)

# kube-apiserver 的 ca 證書

KUBE_CA_CERT=$(kubectl -n vault config view --raw --minify --flatten -o jsonpath='{.clusters[].cluster.certificate-authority-data}' | base64 --decode)

# kube-apiserver 的 url

KUBE_HOST=$(kubectl config view --raw --minify --flatten -o jsonpath='{.clusters[].cluster.server}')

vault write auth/kubernetes/config \

token_reviewer_jwt="$TOKEN_REVIEW_JWT" \

kubernetes_host="$KUBE_HOST" \

kubernetes_ca_cert="$KUBE_CA_CERT"

這樣,就完成了 kubernetes 與外部 vault 的集成!2. 關(guān)聯(lián) k8s rbac 權(quán)限系統(tǒng)和 vault接下來(lái)需要做的事:通過(guò) vault policy 定義好每個(gè) role(微服務(wù))能訪問(wèn)哪些資源。為每個(gè)微服務(wù)生成一個(gè) role,這個(gè) role 需要綁定對(duì)應(yīng)的 vault policy 及 kubernetes serviceaccount這個(gè) role 是 vault 的 kubernetes 插件自身的屬性,它和 kubernetes role 沒(méi)有半毛錢關(guān)系。創(chuàng)建一個(gè) ServiceAccount,并使用這個(gè) 使用這個(gè) ServiceAccount 部署微服務(wù)其中第一步和第二步都可以通過(guò) vault api 自動(dòng)化完成.

第三步可以通過(guò) kubectl 部署時(shí)完成。方便起見(jiàn),vault policy / role / k8s serviceaccount 這三個(gè)配置,都建議和微服務(wù)使用相同的名稱。上述配置中,role 起到一個(gè)承上啟下的作用,它關(guān)聯(lián)了 k8s serviceaccount 和 vault policy 兩個(gè)配置。比如創(chuàng)建一個(gè)名為 my-app-policy 的 vault policy,內(nèi)容為:1

2

3

4

5

6

7

8

# 允許讀取數(shù)據(jù)

path "my-app/data/*" {

capabilities = ["read", "list"]

}

// 允許列出 myapp 中的所有數(shù)據(jù)(kv v2)

path "myapp/metadata/*" {

capabilities = ["read", "list"]

}

然后在 vault 的 kuberntes 插件配置中,創(chuàng)建 role my-app-role,配置如下:關(guān)聯(lián) k8s default 名字空間中的 serviceaccount my-app-account,并創(chuàng)建好這個(gè) serviceaccount.關(guān)聯(lián) vault token policy,這就是前面創(chuàng)建的 my-app-policy設(shè)置 token period(有效期)這之后,每個(gè)微服務(wù)就能通過(guò) serviceaccount 從 vault 中讀取 my-app 中的所有信息了。3. 部署 Pod參考文檔:https://www.vaultproject.io/docs/platform/k8s/injector下一步就是將配置注入到微服務(wù)容器中,這需要使用到 Agent Sidecar Injector。

vault 通過(guò) sidecar 實(shí)現(xiàn)配置的自動(dòng)注入與動(dòng)態(tài)更新。具體而言就是在 Pod 上加上一堆 Agent Sidecar Injector 的注解,如果配置比較多,也可以使用 configmap 保存,在注解中引用。需要注意的是 vault-inject-agent 有兩種運(yùn)行模式:init 模式: 僅在 Pod 啟動(dòng)前初始化一次,跑完就退出(Completed)常駐模式: 容器不退出,持續(xù)監(jiān)控 vault 的配置更新,維持 Pod 配置和 vualt 配置的同步。示例: 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

apiVersion: apps/v1

kind: Deployment

metadata:

labels:

app: my-app

name: my-app

namespace: default

spec:

minReadySeconds: 3

progressDeadlineSeconds: 60

revisionHistoryLimit: 3

selector:

matchLabels:

app: my-app

strategy:

rollingUpdate:

maxUnavailable: 1

type: RollingUpdate

template:

metadata:

annotations:

vault.hashicorp.com/agent-init-first: 'true' # 是否使用 initContainer 提前初始化配置文件

vault.hashicorp.com/agent-inject: 'true'

vault.hashicorp.com/secret-volume-path: vault

vault.hashicorp.com/role: "my-app-role" # vault kubernetes 插件的 role 名稱

vault.hashicorp.com/agent-inject-template-config.json: |

# 渲染模板的語(yǔ)法在后面介紹

vault.hashicorp.com/agent-limits-cpu: 250m

vault.hashicorp.com/agent-requests-cpu: 100m

# 包含 vault 配置的 configmap,可以做更精細(xì)的控制

# vault.hashicorp.com/agent-configmap: my-app-vault-config

labels:

app: my-app

spec:

containers:

- image: registry.svc.local/xx/my-app:latest

imagePullPolicy: IfNotPresent

# 此處省略若干配置...

serviceAccountName: my-app-account

常見(jiàn)錯(cuò)誤:vault-agent(sidecar) 報(bào)錯(cuò): namespace not authorizedauth/kubernetes/config 中的 role 沒(méi)有綁定 Pod 的 namespacevault-agent(sidecar) 報(bào)錯(cuò): permission denied檢查 vault 實(shí)例的日志,應(yīng)該有對(duì)應(yīng)的錯(cuò)誤日志,很可能是 auth/kubernetes/config 沒(méi)配對(duì),vault 無(wú)法驗(yàn)證 kube-apiserver 的 tls 證書,或者使用的 kubernetes token 沒(méi)有權(quán)限。vault-agent(sidecar) 報(bào)錯(cuò): service account not authorizedauth/kubernetes/config 中的 role 沒(méi)有綁定 Pod 使用的 serviceAccount4. vault agent 配置vault-agent 的配置,需要注意的有:如果使用 configmap 提供完整的 config.hcl 配置,注意 agent-initvautl-agent 的 template 說(shuō)明:目前來(lái)說(shuō)最流行的配置文件格式應(yīng)該是 json/yaml,以 json 為例,

對(duì)每個(gè)微服務(wù)的 kv 數(shù)據(jù),可以考慮將它所有的個(gè)性化配置都保存在 // 下面,然后使用如下 template 注入配置:1

2

3

4

5

6

7

8

{

{{ range secrets "/metadata//" }}

"{{ printf "%s" . }}":

{{ with secret (printf "//%s" .) }}

{{ .Data.data | toJSONPretty }},

{{ end }}

{{ end }}

}

template 的詳細(xì)語(yǔ)法參見(jiàn): https://github.com/hashicorp/consul-template#secret注意:v2 版本的 kv secrets,它的 list 接口有變更,因此在遍歷 v2 kv secrets 時(shí),

必須要寫成 range secrets "/metadata//",也就是中間要插入 metadata,而且 policy 中必須開放 /metadata// 的 read/list 權(quán)限!

官方文檔完全沒(méi)提到這一點(diǎn),我通過(guò) wireshark 抓包調(diào)試,對(duì)照官方的 KV Secrets Engine - Version 2 (API) 才搞明白這個(gè)。這樣生成出來(lái)的內(nèi)容將是 json 格式,不過(guò)有個(gè)不兼容的地方:最后一個(gè) secrets 的末尾有逗號(hào) ,

渲染出的效果示例: 1

2

3

4

5

6

7

8

9

10

{

"secret-a": {

"a": "b",

"c": "d"

},

"secret-b": {

"v": "g",

"r": "c"

},

}

因?yàn)榇嬖谖膊慷禾?hào)(trailing comma),直接使用 json 標(biāo)準(zhǔn)庫(kù)解析它會(huì)報(bào)錯(cuò)。

那該如何去解析它呢?我在萬(wàn)能的 stackoverflow 上找到了解決方案:yaml 完全兼容 json 語(yǔ)法,并且支持尾部逗號(hào)!以 python 為例,直接 yaml.safe_load() 就能完美解析 vault 生成出的 json 內(nèi)容。5. 拓展:在 kubernetes 中使用 vault 的其他姿勢(shì)除了使用官方提供的 sidecar 模式進(jìn)行 secrets 注入,社區(qū)也提供了一些別的方案,可以參考:hashicorp/vault-csi-provider: 官方的 Beta 項(xiàng)目,通過(guò) Secrets Store CSI 驅(qū)動(dòng)將 vault secrets 以數(shù)據(jù)卷的形式掛載到 pod 中kubernetes-external-secrets: 提供 CRD 定義,根據(jù)定義將 secret 從 vault 中同步到 kubernetes secrets官方的 sidecar/init-container 模式仍然是最推薦使用的。五、使用 vault 實(shí)現(xiàn) AWS IAM Credentials 的自動(dòng)輪轉(zhuǎn)待續(xù)。。。相關(guān)內(nèi)容FinOps for Kubernetes - 如何拆分 Kubernetes 成本部署一個(gè) Kubernetes 集群Kubernetes 微服務(wù)最佳實(shí)踐如果你覺(jué)得這篇文章對(duì)你有所幫助,歡迎評(píng)論、分享、打賞~

贊賞更新于 2021-01-24

?Vault,?云原生,?Secrets,?配置,?配置管理返回?|?主頁(yè)QEMU/KVM 虛擬化環(huán)境的搭建與使用

云原生流水線 Argo Workflows 的安裝、使用以及個(gè)人體驗(yàn)Please enable JavaScript to view the comments powered by Utterances.

由 Hugo 強(qiáng)力驅(qū)動(dòng)?|?托管在 Vercel 上?|?主題 - DoIt2021 - 2024?ryan4yin?|? CC BY-NC 4.0

云時(shí)代的機(jī)密管理——Vault(Vault的架構(gòu)設(shè)計(jì)) - 知乎

云時(shí)代的機(jī)密管理——Vault(Vault的架構(gòu)設(shè)計(jì)) - 知乎切換模式寫文章登錄/注冊(cè)云時(shí)代的機(jī)密管理——Vault(Vault的架構(gòu)設(shè)計(jì))大可不加冰程序員之前的文章大多是介紹了Vault某些特定的應(yīng)用場(chǎng)景,本文會(huì)結(jié)合文檔,嘗試為讀者從一個(gè)俯瞰的角度介紹一下Vault的架構(gòu)設(shè)計(jì)、組成部分的說(shuō)明,讓讀者對(duì)Vault有一個(gè)更加全面和直觀的理解。詞匯表Vault是由多個(gè)松耦合的部件組成的復(fù)雜系統(tǒng),總體來(lái)說(shuō)它由以下幾個(gè)部件組成:后端存儲(chǔ)(Storage Backend):后端存儲(chǔ)負(fù)責(zé)將密文數(shù)據(jù)存儲(chǔ)到可靠的持久存儲(chǔ)上。Vault并不假設(shè)后端存儲(chǔ)上的數(shù)據(jù)不會(huì)被盜取,而只是假設(shè)該存儲(chǔ)是持久的、可靠的。Vault只會(huì)向后端存儲(chǔ)寫入加密過(guò)的數(shù)據(jù)。后端存儲(chǔ)應(yīng)在Vault服務(wù)啟動(dòng)前被妥善配置。屏障(Barrier):屏障是由加密算法所組成的鋼筋混凝土防護(hù)工事。所有在Vault服務(wù)與后端存儲(chǔ)之間流動(dòng)的數(shù)據(jù)都會(huì)經(jīng)過(guò)屏障處理。屏障確保了Vault寫入后端存儲(chǔ)的一切數(shù)據(jù)都是加密的,而從后端存儲(chǔ)讀取的數(shù)據(jù)都會(huì)經(jīng)由屏障解密交由Vault服務(wù)使用。由于屏障的存在,Vault服務(wù)啟動(dòng)后,必須進(jìn)行“解封”(Unseal)處理,獲得與后端存儲(chǔ)數(shù)據(jù)相應(yīng)的主密鑰(Master Key)后才能正常工作。機(jī)密引擎(Secret Engine):機(jī)密引擎負(fù)責(zé)管理各種機(jī)密數(shù)據(jù)。比如我們之前介紹的“KV“引擎,就是一種簡(jiǎn)單的保存靜態(tài)機(jī)密數(shù)據(jù)的機(jī)密引擎。某些機(jī)密引擎可提供被查詢時(shí)動(dòng)態(tài)創(chuàng)建機(jī)密的動(dòng)態(tài)機(jī)密功能,這使得Vault可以提供細(xì)顆粒度權(quán)限配置的一次一密的臨時(shí)機(jī)密。例如為運(yùn)維與開發(fā)配置不同的策略,并對(duì)應(yīng)不同的Aws權(quán)限,相關(guān)人員每次讀取相關(guān)機(jī)密時(shí),由Vault動(dòng)態(tài)創(chuàng)建一組擁有有限有效期和預(yù)設(shè)Aws權(quán)限的Access Key和Secret Key,并確保在有效期過(guò)后由Vault在Aws上自動(dòng)刪除該Key。審計(jì)設(shè)備(Auth Method):審計(jì)設(shè)備負(fù)責(zé)管理審計(jì)日志。進(jìn)出Vault的每一個(gè)請(qǐng)求和響應(yīng)都會(huì)被記錄在預(yù)設(shè)的審計(jì)設(shè)備上。該部件為Vault與多種不同的審計(jì)日志存儲(chǔ)的集成提供了一種簡(jiǎn)單的方式。認(rèn)證方式(Auth Method):認(rèn)證方式被用來(lái)認(rèn)證連接到Vault服務(wù)的用戶或是應(yīng)用程序的身份信息。一旦認(rèn)證通過(guò),認(rèn)證組件會(huì)返回一組當(dāng)前身份適用的策略信息。Vault接受一個(gè)通過(guò)認(rèn)證的用戶,并返回一個(gè)可供將來(lái)使用的客戶端Token。舉個(gè)例子,使用userpass認(rèn)證方式,用戶通過(guò)提供用戶名與密碼來(lái)進(jìn)行認(rèn)證。如果使用github認(rèn)證方式,用戶通過(guò)Github Token來(lái)通過(guò)Vault的認(rèn)證??蛻舳薚oken(Client Token):一個(gè)客戶端Token(又稱“Vault Token“)類似于網(wǎng)站的繪畫Cookie。一旦用戶通過(guò)認(rèn)證,Vault返回一個(gè)客戶端Token。該Token可以被Vault用來(lái)識(shí)別客戶端身份并使用相應(yīng)的訪問(wèn)控制權(quán)限約束客戶端權(quán)限。該Token通過(guò)HTTP Header傳遞。機(jī)密(Secret):機(jī)密指的是所有由Vault返回的包含機(jī)密信息或者密碼學(xué)原材料(Cryptographic Material)的信息。并不是所有由Vault返回的信息都是機(jī)密,例如系統(tǒng)配置、服務(wù)狀態(tài)信息、策略配置等就不屬于機(jī)密范疇。機(jī)密都有對(duì)應(yīng)的租約(Lease),這代表客戶端不可以假設(shè)機(jī)密可以無(wú)限期地被使用。Vault會(huì)在租約到期后吊銷相關(guān)機(jī)密,Vault管理員也可以在租約到期之前人工吊銷機(jī)密。Vault服務(wù)與客戶端之間的這種契約是至關(guān)重要的,它允許實(shí)現(xiàn)全自動(dòng)的機(jī)密憑據(jù)和策略的改變。服務(wù)器(Server):Vault依賴于一個(gè)長(zhǎng)期運(yùn)行服務(wù)實(shí)例的服務(wù)器。Vault服務(wù)器對(duì)外提供了一組API用以與客戶端互動(dòng),以及管理與各種機(jī)密引擎的互動(dòng),訪問(wèn)控制權(quán)限體系的執(zhí)行,以及機(jī)密租約管理和吊銷。服務(wù)器的架構(gòu)設(shè)計(jì)解除了客戶端與機(jī)密信息、權(quán)限策略的耦合,使得管理員可以輕松實(shí)現(xiàn)對(duì)審計(jì)日志的中央化管控。架構(gòu)全覽可以看到,只有后端存儲(chǔ)以及HTTP API兩部分位于屏障外部,其余所有部件都位于屏障內(nèi)部。Vault不信任后端存儲(chǔ),所以只會(huì)向后端存儲(chǔ)寫入加密后的密文數(shù)據(jù)。當(dāng)Vault服務(wù)啟動(dòng)時(shí),必須配置一個(gè)后端存儲(chǔ),使得Vault重啟后仍然可以讀取到數(shù)據(jù)。HTTP API同樣也必須在Vault服務(wù)啟動(dòng)時(shí)被啟動(dòng),才能使得客戶端可以與Vault服務(wù)交互。當(dāng)Vault啟動(dòng)后,Vault處于“封印(Sealed)“狀態(tài)。在執(zhí)行任意操作之前,首先要對(duì)Vault執(zhí)行“解封(Unseal)“操作。當(dāng)Vault服務(wù)初始化時(shí)會(huì)生成一個(gè)加密密鑰,所有寫入后端存儲(chǔ)的數(shù)據(jù)都會(huì)用該密鑰加密。該密鑰由一個(gè)主密鑰(Master Key)保護(hù)。默認(rèn)情況下,Vault使用Shamir算法將主密鑰拆分成5份,需要至少3份才能重建主密鑰:主密鑰拆分的份數(shù)以及解封要求的最低份數(shù)都可以被配置。我們也可以不使用Shamir算法,直接用主密鑰解封。一旦Vault獲得了加密密鑰,就可以解密后端存儲(chǔ)上的數(shù)據(jù),服務(wù)進(jìn)入解封狀態(tài)。一旦解封,Vault就會(huì)加載所有審計(jì)設(shè)備、認(rèn)證方式以及機(jī)密引擎的配置信息。當(dāng)Vault解封,發(fā)往Vault的請(qǐng)求就可以通過(guò)HTTP API被轉(zhuǎn)往核心(Core)進(jìn)行處理。核心管理系統(tǒng)接收到的請(qǐng)求,強(qiáng)制執(zhí)行訪問(wèn)控制權(quán)限,以及確保審計(jì)信息的成功寫入。當(dāng)客戶端首次與Vault連接,它需要經(jīng)過(guò)身份認(rèn)證。Vault提供了多種身份認(rèn)證方式。對(duì)人類用戶比較友好的有userpass、github等,應(yīng)用程序可以使用公私鑰或是Token認(rèn)證。一個(gè)身份認(rèn)證請(qǐng)求會(huì)經(jīng)由核心抵達(dá)相應(yīng)的認(rèn)證方式,由認(rèn)證方式判定認(rèn)證是否通過(guò),然后返回一組相關(guān)的策略。策略(Policies)是一個(gè)命名的訪問(wèn)控制規(guī)則,比如說(shuō),root策略是一個(gè)內(nèi)建策略,它允許訪問(wèn)任意資源。你可以創(chuàng)建任意多個(gè)命名的策略,在相關(guān)路徑上定義細(xì)致的權(quán)限控制。Vault采用白名單的模式,意為除非策略明確允許某項(xiàng)操作,否則所有操作都是被禁止的。如果一個(gè)用戶擁有多個(gè)策略,對(duì)于某項(xiàng)操作,只要任意策略允許就可以執(zhí)行。策略由內(nèi)部的策略存儲(chǔ)(Policy Store)存儲(chǔ)和管理。這個(gè)內(nèi)部的策略存儲(chǔ)通過(guò)系統(tǒng)后端(System Backend)控制,掛載路徑總是為sys/。一旦身份認(rèn)證通過(guò),并且身份認(rèn)證方式返回一組適用的策略,Token存儲(chǔ)(Token Store)會(huì)生成并管理一個(gè)新的客戶端Token。該Token會(huì)被返回給客戶端,用來(lái)作為后續(xù)操作的認(rèn)證信息,這很像網(wǎng)站在用戶登錄后通過(guò)發(fā)還給用戶的Cookie傳遞會(huì)話信息的機(jī)制。根據(jù)身份認(rèn)證方式的配置,該客戶端Token可能還會(huì)關(guān)聯(lián)一個(gè)租約。這意味著客戶端Token可能需要定期續(xù)約來(lái)避免過(guò)期。一旦身份認(rèn)證通過(guò),后續(xù)請(qǐng)求都要附加客戶端Token。客戶端Token被用來(lái)確認(rèn)客戶端有權(quán)加載相關(guān)策略。策略被用來(lái)驗(yàn)證客戶請(qǐng)求的權(quán)限。通過(guò)驗(yàn)證的請(qǐng)求被路由到相關(guān)機(jī)密引擎,由機(jī)密引擎進(jìn)行處理。如果機(jī)密引擎返回一個(gè)機(jī)密,核心會(huì)將其注冊(cè)到過(guò)期管理器(Expiration Manager)并附加一個(gè)租約ID。租約ID可用來(lái)續(xù)約租約或是吊銷相關(guān)機(jī)密。如果客戶端任由租約過(guò)期,過(guò)期管理器會(huì)自動(dòng)吊銷相關(guān)機(jī)密。核心還負(fù)責(zé)將請(qǐng)求與響應(yīng)的日志寫入審計(jì)中介(Audit Broker),由審計(jì)中介負(fù)責(zé)將日志寫入所有預(yù)設(shè)的審計(jì)設(shè)備。除了處理客戶端發(fā)送的請(qǐng)求,核心還會(huì)負(fù)責(zé)特定的后臺(tái)活動(dòng)。租約管理是至關(guān)重要的,它允許自動(dòng)吊銷過(guò)期的客戶端Token以及機(jī)密信息。另外,Vault使用預(yù)寫日志(Write Ahead Logging)和回滾管理器處理特定的失敗場(chǎng)景。這些是由核心透明地執(zhí)行的,對(duì)用戶不可見(jiàn)。發(fā)布于 2021-05-07 12:08云計(jì)算網(wǎng)絡(luò)安全DevOps?贊同 13??添加評(píng)論?分享?喜歡?收藏?申請(qǐng)

開源密碼存儲(chǔ)引擎 Vault 的安裝與使用-騰訊云開發(fā)者社區(qū)-騰訊云

存儲(chǔ)引擎 Vault 的安裝與使用-騰訊云開發(fā)者社區(qū)-騰訊云用戶3147702開源密碼存儲(chǔ)引擎 Vault 的安裝與使用關(guān)注作者騰訊云開發(fā)者社區(qū)文檔建議反饋控制臺(tái)首頁(yè)學(xué)習(xí)活動(dòng)專區(qū)工具TVP最新優(yōu)惠活動(dòng)文章/答案/技術(shù)大牛搜索搜索關(guān)閉發(fā)布登錄/注冊(cè)首頁(yè)學(xué)習(xí)活動(dòng)專區(qū)工具TVP最新優(yōu)惠活動(dòng)返回騰訊云官網(wǎng)用戶3147702首頁(yè)學(xué)習(xí)活動(dòng)專區(qū)工具TVP最新優(yōu)惠活動(dòng)返回騰訊云官網(wǎng)社區(qū)首頁(yè) >專欄 >開源密碼存儲(chǔ)引擎 Vault 的安裝與使用開源密碼存儲(chǔ)引擎 Vault 的安裝與使用用戶3147702關(guān)注發(fā)布于 2022-12-21 17:42:241.8K0發(fā)布于 2022-12-21 17:42:24舉報(bào)文章被收錄于專欄:小腦斧科技博客小腦斧科技博客1. 引言vault 是一款 HCP 推出的密鑰管理引擎,用來(lái)集中存儲(chǔ)集群運(yùn)行過(guò)程中所需要的秘密信息,例如數(shù)據(jù)庫(kù)的訪問(wèn)憑證、密碼、密鑰等。它保證了存儲(chǔ)與通信過(guò)程的保密性,這對(duì)于我們無(wú)處不在的敏感信息的數(shù)據(jù)安全顯然是十分必要的。與此同時(shí),vault 擁有一系列可插拔功能擴(kuò)展,可以支持將 vault 的實(shí)際數(shù)據(jù)存儲(chǔ)到內(nèi)存、文件系統(tǒng)、google cloud、AWS、etcd 等多種存儲(chǔ)介質(zhì)中,滿足不同的集群部署需求,可謂是非常靈活。本文我們就來(lái)初步介紹一下 vault 這款存儲(chǔ)的搭建和使用。2. Vault 安裝在不同的平臺(tái)上,vault 安裝略有不同,可以參考實(shí)際的文檔:https://www.vaultproject.io/downloads例如在 centos 上,可以通過(guò)下面的命令來(lái)進(jìn)行安裝: sudo yum install -y yum-utils

sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo

sudo yum -y install vault復(fù)制3. 啟動(dòng) Server3.1 測(cè)試環(huán)境如果僅用于測(cè)試,只需要執(zhí)行下面的命令即可: vault server -dev復(fù)制命令執(zhí)行后的返回文本中會(huì)有 Unseal Key 和 Root Token 兩個(gè)參數(shù):==> Vault server configuration: Api Address: http://127.0.0.1:8200

Cgo: disabled

Cluster Address: https://127.0.0.1:8201

Listener 1: tcp (addr: "127.0.0.1:8200", cluster address: "127.0.0.1:8201", max_request_duration: "1m30s", max_request_size: "33554432", tls: "disabled")

Log Level: info

Mlock: supported: false, enabled: false

Recovery Mode: false

Storage: inmem

Version: Vault v1.4.1復(fù)制WARNING! dev mode is enabled! In this mode, Vault runs entirely in-memoryand starts unsealed with a single unseal key. The root token is alreadyauthenticated to the CLI, so you can immediately begin using Vault.You may need to set the following environment variable: $ export VAULT_ADDR='http://127.0.0.1:8200'The unseal key and root token are displayed below in case you want toseal/unseal the Vault or re-authenticate.Unseal Key: 1+yv+v5mz+aSCK67X6slL3ECxb4UDL8ujWZU/ONBpn0Root Token: s.XmpNPoi9sRhYtdKHaQhkHP6xDevelopment mode should NOT be used in production installations!==> Vault server started! Log data will stream in below:接下來(lái),按照上述指引,需要 export 兩個(gè)環(huán)境變量: export VAULT_ADDR='http://127.0.0.1:8200'

export VAULT_TOKEN="s.XmpNPoi9sRhYtdKHaQhkHP6x"復(fù)制通過(guò) vault status 命令可以查看 vault 狀態(tài): $ vault status

Key Value

--- -----

Seal Type shamir

Initialized true

Sealed false

Total Shares 1

Threshold 1

Version 1.7.0

Storage Type inmem

Cluster Name vault-cluster-4d862b44

Cluster ID 92143a5a-0566-be89-f229-5a9f9c47fb1a

HA Enabled false復(fù)制3.2 正式環(huán)境3.2.1 啟動(dòng) server上述測(cè)試環(huán)境部署的 vault 使用了用于測(cè)試的一系列默認(rèn)配置,如果我們要用于正式環(huán)境,我們自然需要進(jìn)行一系列必要的配置,例如 vault 的數(shù)據(jù)具體存儲(chǔ)在哪里,http 端口與 tls 協(xié)議支持等。vault 支持通過(guò) json、linux config、hcl 等多種配置方式,例如下面這個(gè) config.hcl 配置: storage "raft" {

path = "./vault/data"

node_id = "node1"

}

listener "tcp" {

address = "127.0.0.1:8200"

tls_disable = "true"

}

api_addr = "http://127.0.0.1:8200"

cluster_addr = "https://127.0.0.1:8201"

ui = true復(fù)制接下來(lái)就可以啟動(dòng) server 了: mkdir -p ./vault/data

vault server -config=config.hcl復(fù)制3.2.2 server 的初始化對(duì)于單機(jī)模式的 server 來(lái)說(shuō),每個(gè) server 都需要進(jìn)行一次且只能進(jìn)行一次初始化操作,用來(lái)應(yīng)用上述配置。對(duì)于 HA 模式的 vault 來(lái)說(shuō),則每個(gè) cluster 需要執(zhí)行一次初始化操作。執(zhí)行下面的命令對(duì) vault 進(jìn)行初始化操作: export VAULT_ADDR='http://127.0.0.1:8200'

vault operator init復(fù)制會(huì)打印出下列信息:Unseal Key 1: 4jYbl2CBIv6SpkKj6Hos9iD32k5RfGkLzlosrrq/JgOmUnseal Key 2: B05G1DRtfYckFV5BbdBvXq0wkK5HFqB9g2jcDmNfTQiSUnseal Key 3: Arig0N9rN9ezkTRo7qTB7gsIZDaonOcc53EHo83F5chAUnseal Key 4: 0cZE0C/gEk3YHaKjIWxhyyfs8REhqkRW/CSXTnmTilv+Unseal Key 5: fYhZOseRgzxmJCmIqUdxEm9C3jB5Q27AowER9w4FC2Ck

Initial Root Token: s.KkNJYWF5g0pomcCLEmDdOVCW

Vault initialized with 5 key shares and a key threshold of 3. Please securelydistribute 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 itbefore it can start servicing requests.

Vault does not store the generated root key (previously known as master key).Without at least 3 key to reconstruct the root key, Vault will remainpermanently sealed!

It is possible to generate new unseal keys, provided you have a quorum ofexisting unseal keys shares. See "vault operator rekey" for more information.3.2.3 對(duì) key 解封初始化后,vault 還不知道如何使用具體的存儲(chǔ),因此處于封鎖狀態(tài),在上面的 output 內(nèi)容中有這樣一句話:Vault initialized with 5 key shares and a key threshold of 3.說(shuō)明 threshold 為 3,也就是說(shuō),我們至少要對(duì) 3 個(gè) key 執(zhí)行解封操作后,server 才可以使用。執(zhí)行下面的命令即可: vault operator unseal 復(fù)制3.2.4 創(chuàng)建 engine和其他數(shù)據(jù)存儲(chǔ)一樣,要使用 vault 我們同樣需要?jiǎng)?chuàng)建 database,但在 vault 中,數(shù)據(jù)是按照類似文件系統(tǒng)的 path 來(lái)組織的,需要用下面的命令來(lái)開啟相應(yīng)的 engine: vault secrets enable -path=secret kv復(fù)制我們創(chuàng)建了一個(gè) path secret,并且以 kv 類型進(jìn)行存儲(chǔ)。4. vault 的基本使用4.1 數(shù)據(jù)寫入使用下面的命令就可以寫入數(shù)據(jù)了: vault kv put -mount=secret hello foo=world復(fù)制他表示在 path 為 secret 的子 path hello 中寫入 kv 對(duì) foo=world。你也可以一次寫入多個(gè)數(shù)據(jù): vault kv put -mount=secret hello foo=world excited=yes復(fù)制4.2 數(shù)據(jù)讀取我們可以直接讀取 secret path 下 hello 子 path 的所有數(shù)據(jù): vault kv get -mount=secret hello復(fù)制會(huì)打印出: == Secret Path ==

secret/data/hello

======= Metadata =======

Key Value

--- -----

created_time 2022-01-15T01:40:09.888293Z

custom_metadata

deletion_time n/a

destroyed false

version 2

===== Data =====

Key Value

--- -----

excited yes

foo world復(fù)制我們也可以指定 path 下具體的 field 來(lái)獲取某個(gè)值: vault kv get -mount=secret -field=excited hello復(fù)制這樣就會(huì)直接打印出值:yes4.3 刪除數(shù)據(jù)把上述查詢語(yǔ)句中的 get 關(guān)鍵字改成 delete 關(guān)鍵字就可以刪除對(duì)應(yīng)數(shù)據(jù): vault kv delete -mount=secret -field=excited hello復(fù)制但是,如果你是誤刪除的話,vault 是支持誤刪恢復(fù)的,前提是你需要將 destroyed 配置為 false。通過(guò)下面的命令,可以將已刪除數(shù)據(jù)進(jìn)行恢復(fù): vault kv undelete -mount=secret -versions=2 hello復(fù)制本文參與?騰訊云自媒體分享計(jì)劃,分享自微信公眾號(hào)。原始發(fā)表:2022-09-03,如有侵權(quán)請(qǐng)聯(lián)系?cloudcommunity@tencent.com 刪除存儲(chǔ)本文分享自 小腦斧科技博客 微信公眾號(hào),前往查看如有侵權(quán),請(qǐng)聯(lián)系 cloudcommunity@tencent.com 刪除。本文參與?騰訊云自媒體分享計(jì)劃? ,歡迎熱愛(ài)寫作的你一起參與!存儲(chǔ)評(píng)論登錄后參與評(píng)論0 條評(píng)論熱度最新登錄 后參與評(píng)論推薦閱讀LV.關(guān)注文章0獲贊0目錄1. 引言2. Vault 安裝3. 啟動(dòng) Server3.1 測(cè)試環(huán)境3.2 正式環(huán)境3.2.1 啟動(dòng) server3.2.2 server 的初始化3.2.3 對(duì) key 解封3.2.4 創(chuàng)建 engine4. vault 的基本使用4.1 數(shù)據(jù)寫入4.2 數(shù)據(jù)讀取4.3 刪除數(shù)據(jù)相關(guān)產(chǎn)品與服務(wù)對(duì)象存儲(chǔ)對(duì)象存儲(chǔ)(Cloud Object Storage,COS)是由騰訊云推出的無(wú)目錄層次結(jié)構(gòu)、無(wú)數(shù)據(jù)格式限制,可容納海量數(shù)據(jù)且支持 HTTP/HTTPS 協(xié)議訪問(wèn)的分布式存儲(chǔ)服務(wù)。騰訊云 COS 的存儲(chǔ)桶空間無(wú)容量上限,無(wú)需分區(qū)管理,適用于 CDN 數(shù)據(jù)分發(fā)、數(shù)據(jù)萬(wàn)象處理或大數(shù)據(jù)計(jì)算與分析的數(shù)據(jù)湖等多種場(chǎng)景。免費(fèi)體驗(yàn)產(chǎn)品介紹產(chǎn)品文檔COS新用戶專享存儲(chǔ)包低至1元,新老同享存儲(chǔ)容量低至0.02元/GB/月,立即選購(gòu)!

領(lǐng)券社區(qū)專欄文章閱讀清單互動(dòng)問(wèn)答技術(shù)沙龍技術(shù)視頻團(tuán)隊(duì)主頁(yè)騰訊云TI平臺(tái)活動(dòng)自媒體分享計(jì)劃邀請(qǐng)作者入駐自薦上首頁(yè)技術(shù)競(jìng)賽資源技術(shù)周刊社區(qū)標(biāo)簽開發(fā)者手冊(cè)開發(fā)者實(shí)驗(yàn)室關(guān)于社區(qū)規(guī)范免責(zé)聲明聯(lián)系我們友情鏈接騰訊云開發(fā)者掃碼關(guān)注騰訊云開發(fā)者領(lǐng)取騰訊云代金券熱門產(chǎn)品域名注冊(cè)云服務(wù)器區(qū)塊鏈服務(wù)消息隊(duì)列網(wǎng)絡(luò)加速云數(shù)據(jù)庫(kù)域名解析云存儲(chǔ)視頻直播熱門推薦人臉識(shí)別騰訊會(huì)議企業(yè)云CDN加速視頻通話圖像分析MySQL 數(shù)據(jù)庫(kù)SSL 證書語(yǔ)音識(shí)別更多推薦數(shù)據(jù)安全負(fù)載均衡短信文字識(shí)別云點(diǎn)播商標(biāo)注冊(cè)小程序開發(fā)網(wǎng)站監(jiān)控?cái)?shù)據(jù)遷移Copyright ? 2013 - 2024 Tencent Cloud. All Rights Reserved. 騰訊云 版權(quán)所有?深圳市騰訊計(jì)算機(jī)系統(tǒng)有限公司 ICP備案/許可證號(hào):粵B2-20090059?深公網(wǎng)安備號(hào) 44030502008569騰訊云計(jì)算(北京)有限責(zé)任公司 京ICP證150476號(hào) | ?京ICP備11018762號(hào) | 京公網(wǎng)安備號(hào)11010802020287問(wèn)題歸檔專欄文章快訊文章歸檔關(guān)鍵詞歸檔開發(fā)者手冊(cè)歸檔開發(fā)者手冊(cè) Section 歸檔Copyright ? 2013 - 2024 Tencent Cloud.All Rights Reserved. 騰訊云 版權(quán)所有登錄 后參與評(píng)論00

Just a moment...

a moment...Enable JavaScript and cookies to conti

404 Not Found


nginx/1.25.2
欧美丰满大黑帍在线播放| 日本成熟少妇喷浆视频| 国内大量揄拍人妻精品视频| 亚洲色大成网站www| 国产影片AV级毛片特别刺激| 亚洲AV无码专区在线播放| 欧美成人精品三级网站| 国产无遮挡18禁网站免费| 乱公和我做爽死我视频| 国产一精品一av一免费| 韩国 欧美 日产 国产精品| 亚洲精品无码不卡| 精品亚洲卡一卡2卡三卡乱码| 日本熟妇色XXXXX日本免费看| 久久精品国产亚洲av蜜臀| 2021在线精品自偷自拍无码| 曰韩精品无码一区二区三区视频| 国产a在亚洲线播放| 国产福利在线观看免费第一福利| 国产99视频精品免费视频36| 把女邻居弄到潮喷的性经历| 性色av无码中文av有码vr| 精品乱人伦一区二区三区| 中国丰满人妻videoshd| 国产精品XXXX国产喷水| 欧美精品v国产精品v日韩精品| 精产国品一二三产区区别是什么| 老女人老熟女亚洲| av午夜福利一片免费看久久| AV网站免费线看精品| 一区二区三区中文字幕| 亚洲av一本岛在线播放| 曰韩亚洲AV人人夜夜澡人人爽| 黑人与人妻无码中字视频| 久久99九九精品久久久久蜜桃| 国产成人精品无码一区二区老年人| 青青青在线视频国产| 亚洲av无码成人精品区日韩| 婷婷精品国产亚洲AV麻豆不片| 国产男女乱婬真视频免费| 无码日韩精品一区二区人妻|