πŸ”‘Vault

1. Starting the server

Vault hoαΊ‘t Δ‘α»™ng nhΖ° mα»™t α»©ng dα»₯ng client-server

Starting Dev server

  1. Sα»­ dα»₯ng cờ -help để liệt kΓͺ cΓ‘c tΓΉy chọn cΓ³ sαΊ΅n cho vault server

  1. Khởi Δ‘α»™ng Vault server trong chαΊΏ Δ‘α»™ development (dev server). Dev server lΓ  mα»™t mΓ‘y chα»§ tΓ­ch hợp, được cαΊ₯u hΓ¬nh sαΊ΅n, khΓ΄ng an toΓ n nhΖ°ng hα»―u Γ­ch khi thao tΓ‘c vα»›i local Vault.

Set environment variables

  1. ChαΊ‘y mα»™t cα»­a sα»• terminal mα»›i

  2. ChαΊ‘y lệnh sau để cαΊ₯u hΓ¬nh mΓ‘y Vault client giao tiαΊΏp vα»›i mΓ‘y Dev . Vault CLI xΓ‘c Δ‘inh Vault server nΓ o sαΊ½ gα»­i yΓͺu cΓ u bαΊ±ng cΓ‘ch sα»­ dα»₯ng biαΊΏn mΓ΄i trường VAULT_ADDR

export VAULT_ADDR='http://127.0.0.1:8200

  1. Đặt giΓ‘ trα»‹ biαΊΏn mΓ΄i trường VAULT_TOKEN thΓ nh Root Token Δ‘Γ£ được tαΊ‘o trong bΖ°α»›c Khởi Δ‘α»™ng Dev server.

export VAULT_TOKEN="hvs.XHApczAxj0bqP115hfdxx3eM"

Verify the Server is Running

XΓ‘c minh mΓ‘y chα»§ Δ‘ang chαΊ‘y bαΊ±ng cΓ‘ch chαΊ‘y dΖ°α»›i Δ‘Γ’y . NαΊΏu lệnh thΓ nh cΓ΄ng, Δ‘αΊ§u ra sαΊ½ nhΖ° sau:

2. Your first secret

Key/Value secrets engine

Khi vault chαΊ‘y ở Dev mode, Key/Value V2 secret engine được bαΊ­t tαΊ‘i đường dαΊ«n secret/ . Key/Value secret engine lΓ  mα»™t kho lΖ°u trα»― khΓ³a vΓ  giΓ‘ trα»‹ chung được sα»­ dα»₯ng để lΖ°u trα»― cΓ‘c bΓ­ mαΊ­t tΓΉy Γ½ trong bα»™t lΖ°u trα»― vαΊ­t lΓ­ Δ‘Γ£ được cαΊ₯u hΓ¬nh cho Vault. CΓ‘c bΓ­ mαΊ­t được ghi vΓ o Vault được mΓ£ hΓ³a vΓ  sau Δ‘Γ³ được ghi vΓ o Storage Backend. Do Δ‘Γ³, cΖ‘ chαΊΏ backend storastorage khΓ΄ng bao giờ nhΓ¬n thαΊ₯y giΓ‘ trα»‹ khΓ΄ng được mΓ£ hΓ³a.

Get command help

BαΊ‘n cΓ³ thể tΖ°Ζ‘ng tΓ‘c vα»›i cΓ΄ng cα»₯ bΓ­ mαΊ­t key/value bαΊ±ng cΓ‘ch sα»­ dα»₯ng lệnh vault kv

Write secret

BΓ’y giờ viαΊΏt bΓ­ mαΊ­t key-value vΓ o đường dαΊ«n hello vα»›i khΓ³a lΓ  foo vΓ  giΓ‘ trα»‹ lΓ  world. Sα»­ dα»₯ng lαΊΉnh vault kv put Δ‘α»‘i vα»›i đường dαΊ«n mount secret, Δ‘Γ’y lΓ  nΖ‘i cΓ΄ng cα»₯ bΓ­ mαΊ­t KV v2 được gαΊ―n kαΊΏt. Lệnh nΓ y tαΊ‘o mα»™t phiΓͺn bαΊ£n mα»›i cα»§a cΓ‘c bΓ­ mαΊ­t vΓ  thay thαΊΏ mọi dα»― liệu Δ‘Γ£ tα»“n tαΊ‘i trΖ°α»›c Δ‘Γ³ tαΊ‘i đường dαΊ«n nΓ y nαΊΏu cΓ³.

-mount=string: chỉ Δ‘α»‹nh đường dαΊ«n mΓ  KV backend được mounted. NαΊΏu được chỉ Δ‘α»‹nh, Δ‘α»‘i sα»‘ tiαΊΏp theo sαΊ½ được hieeur lΓ  đường dαΊ«n bΓ­ mαΊ­t. NαΊΏu cờ nΓ y khΓ΄ng được chỉ Δ‘α»‹nh, Δ‘α»‘i sα»‘ tiαΊΏp theo sαΊ½ được hiểu lΓ  đường dαΊ«n gαΊ―n kαΊΏt vΓ  đường dαΊ«n bΓ­ mαΊ­t kαΊΏt hợp vα»›i /data/ được tα»± Δ‘α»™ng được thΓͺm vΓ o giα»― bΓ­ mαΊ­t KV v2

Read a secret

CΓ‘c bΓ­ mαΊ­t cΓ³ thể được truy xuαΊ₯t bαΊ±ng vault kv get

Để chỉ in giΓ‘ trα»‹ cα»§a mα»™t trường duy nhαΊ₯t Δ‘α»‹nh, hΓ£y sα»­ dα»₯ng cờ: -field=<key_name>

Delete a secret

Sα»­ dα»₯ng lệnh vault kv delete

ChΓΊ Γ½: tham sα»‘ destroyed cΓ³ giΓ‘ trα»‹ false nghΔ©a lΓ  cΓ³ thể khΓ΄i phα»₯c dα»― liệu Δ‘Γ£ xΓ³a nαΊΏu việc xΓ³a lΓ  khΓ΄ng cΓ³ chα»§ Γ½.

3. Secret engines

Định nghΔ©a: Secret engine lΓ  thΓ nh phαΊ§n cα»§a Vault lΖ°u trα»―, tαΊ‘o hoαΊ·c mΓ£ hΓ³a bΓ­ mαΊ­t.

Enable a secret engine

Để bαΊ―t Δ‘αΊ§u, bαΊ­t secret engine KV mα»›i tαΊ‘i path kv. Mα»—i path hoΓ n toΓ n bα»‹ cΓ΄ lαΊ­p vΓ  khΓ΄ng thể talk vα»›i nhα»―ng path khΓ‘c. VΓ­ dα»₯: secret engine KV được tαΊ‘o tαΊ‘i foo khΓ΄ng cΓ³ khαΊ£ nΔƒng giao tiαΊΏp vα»›i secret engine KV tαΊ‘i bar

KαΊΏt quαΊ£ cho thαΊ₯y cΓ³ 5 secret engines được kΓ­ch hoαΊ‘t trΓͺn mΓ‘y chα»§ nΓ y.

Để tαΊ‘o bΓ­ mαΊ­t, sα»­ dα»₯ng lệnh kv put:

Để đọc cΓ‘c bΓ­ mαΊ­t được lΖ°u trα»― rong đường dαΊ«n kv/hello, sα»­ dα»₯ng lệnh kv get:

TαΊ‘o bΓ­ mαΊ­t tαΊ‘i đường dαΊ«n: kv/my-secret

Đọc nhα»―ng bΓ­ mαΊ­t tαΊ‘i đường dαΊ«n: kv/my-sec​ret

4. Dynamic secrets

KhΓ΄ng giα»‘ng nhΖ° cΓ‘c bΓ­ mαΊ­t kv (dα»― liệu phαΊ£i tα»± Δ‘Ζ°a vΓ o store) cΓ‘c bΓ­ mαΊ­t Δ‘α»™ng được tαΊ‘o khi chΓΊng được truy cαΊ­p.

BΓ­ mαΊ­t Δ‘α»™ng khΓ΄ng tα»“n tαΊ‘i cho Δ‘αΊΏn khi chΓΊng được đọc, vΓ¬ vαΊ­y khΓ΄ng cΓ³ nguy cΖ‘ ai Δ‘Γ³ Δ‘Γ‘nh cαΊ―p chΓΊng hoαΊ·c khΓ‘ch hΓ ng khΓ‘c sα»­ dα»₯ng cΓΉng bΓ­ mαΊ­t. VΓ¬ Vault cΓ³ cΓ‘c cΖ‘ chαΊΏ thu hα»“i tΓ­ch hợp, cΓ‘c bΓ­ mαΊ­t Δ‘α»™ng cΓ³ thể được thu hα»“i ngay sau khi sα»­ dα»₯ng, Δ‘iều nΓ y giαΊ£m thiểu thời gian bΓ­ mαΊ­t tα»“n tαΊ‘i.

Enable the AWS secrets engine

KhΓ΄ng giα»‘ng nhΖ° kv lΓ  được bαΊ­t theo mαΊ·c , AWS secrets engine phαΊ£i được bαΊ­t trΖ°α»›c khi sα»­ dα»₯ng. BΖ°α»›c nΓ y thường được thα»±c hiện thΓ΄ng qua mα»™t hệ thα»‘ng quαΊ£n lΓ­ cαΊ₯u hΓ¬nh.

Configure the AWS secrets engine

Đang cập nhật

5. Authentication

Token authentication

MΓ£ xΓ‘c thα»±c token được bαΊ­t tα»± Δ‘α»™ng. Khi khởi Δ‘α»™ng Dev , Δ‘αΊ§u ra hiển thα»‹ root . Vault CLI đọc root token tα»« biαΊΏn mΓ΄i trường $VAULT_TOKEN. Root token nΓ y cΓ³ thể thα»±c hiện bαΊ₯t kΓ¬ hoαΊ‘t Δ‘α»™ng nΓ o trong Vault vΓ¬ nΓ³ được chỉ Δ‘α»‹nh root policy.

Create a new token

Token Δ‘Γ£ tαΊ‘o được hiển thα»‹ dΖ°α»›i dαΊ‘ng: hvs.Ve8Iqi6JvD5gswYqMh55LadG

MΓ£ thΓ΄ng bΓ‘o nΓ y lΓ  mΓ£ con cα»§a root token vΓ  theo mαΊ·c Δ‘α»‹nh, mΓ£ nΓ y kαΊΏ thα»«a cΓ‘c chΓ­nh sΓ‘ch tα»« mΓ£ gα»‘c cα»§a .

Token lΓ  phΖ°Ζ‘ng thα»©c xΓ‘c thα»±c cα»‘t lΓ΅i. CΓ³ thể sα»­ dα»₯ng mΓ£ thΓ΄ng bΓ‘o Δ‘Γ£ tαΊ‘o để Δ‘Δƒng nhαΊ­p Vault bαΊ±ng cΓ‘ch sao chΓ©p vΓ  dΓ‘n token khi được nhαΊ―c

ChΓΊ Γ½: Mα»—i token Vault lΓ  duy nhαΊ₯t. Khi mα»™t mΓ£ token khΓ΄ng cΓ²n cαΊ§n thiαΊΏt, nΓ³ cΓ³ thể bα»‹ thu hα»“i. VΓ­ dα»₯:

MΓ£ token bα»‹ thu hα»“i vΓ  khΓ΄ng cΓ²n giΓ‘ trα»‹ sα»­ dα»₯ng.

6. Policies

Để xΓ‘c thα»±c, Vault cΓ³ nhiều tΓΉy chọn hoαΊ·c phΖ°Ζ‘ng phΓ‘p cΓ³ thể được kΓ­ch hoαΊ‘t vΓ  sα»­ dα»₯ng. Vault luΓ΄n sα»­ dα»₯ng cΓΉng mα»™t Δ‘α»‹nh dαΊ‘ng cho cαΊ£ α»§y quyền vΓ  chΓ­nh sΓ‘ch. TαΊ₯t cαΊ£ cΓ‘c phΖ°Ζ‘ng thα»©c xΓ‘c thα»±c Γ‘nh xαΊ‘ danh tΓ­nh return cΓ‘c chΓ­nh sΓ‘ch cα»‘t lΓ΅i được Δ‘α»‹nh cαΊ₯u hΓ¬nh vα»›i Vault.

Policy format

CΓ‘c chΓ­nh sΓ‘ch được viαΊΏt bαΊ±ng HCL nhΖ°ng tΖ°Ζ‘ng thΓ­ch vα»›i JSON. VΓ­ dα»₯:

GiαΊ£i thΓ­ch: vα»›i chΓ­nh sΓ‘ch nΓ y, người dΓΉng cΓ³ thể ghi bαΊ₯t kΓ¬ bΓ­ mαΊ­t nΓ o vΓ o secret/data/, ngoαΊ‘i trα»« vΓ o secret/data/foo (chỉ cho phΓ©p đọc). CΓ‘c chΓ­nh sΓ‘ch mαΊ·c Δ‘α»‹nh lΓ  tα»« chα»‘i, vΓ¬ vαΊ­y mọi quyền truy cαΊ­p vΓ o mα»™t đường dαΊ«n khΓ΄ng xΓ‘c Δ‘α»‹nh đều khΓ΄ng được phΓ©p.

TαΊ₯t cαΊ£ mọi thα»© trong Vault phαΊ£i được truy cαΊ­p thΓ΄ng qua API, Δ‘iều nΓ y mang lαΊ‘i quyền kiểm soΓ‘t chαΊ·t chαΊ½ Δ‘α»‘i vα»›i mọi khΓ­a cαΊ‘nh cα»§a Vault (bαΊ­t cΓ΄ng cα»₯ bΓ­ mαΊ­t, bαΊ­t phΖ°Ζ‘ng thα»©c xΓ‘c thα»±c, quyền truy cαΊ­p bΓ­ mαΊ­t....)

CΓ³ mα»™t sα»‘ chΓ­nh sΓ‘ch tΓ­ch hợp khΓ΄ng thể xΓ³a được. VΓ­ dα»₯ nhΖ° chΓ­nh sΓ‘ch root, vΓ  default lΓ  cΓ‘c chΓ­nh sΓ‘ch bαΊ―t buα»™c vΓ  khΓ΄ng thể xΓ³a được. ChΓ­nh sΓ‘ch default cung cαΊ₯p mα»™t tαΊ­p hợp cΓ‘c quyền chung vΓ  được bao gα»“m trΓͺn tαΊ₯t cαΊ£ cΓ‘c token mαΊ·c Δ‘α»‹nh. ChΓ­nh sΓ‘ch root cung cαΊ₯p cho người dΓΉng mΓ£ token vα»›i quyền siΓͺu quαΊ£n trα»‹ viΓͺn.

Write a Policy

Sα»­ dα»₯ng lệnh vault policy write để viαΊΏt mα»™t chΓ­nh sΓ‘ch.

TαΊ‘o mα»™t policy cΓ³ tΓͺn lΓ  my-policy vα»›i nα»™i dα»₯ng tα»« stdin:

Liệt kΓͺ nhα»―ng chΓ­nh sΓ‘ch hiện cΓ³:

Test the Policy

TαΊ‘o token, thΓͺm chΓ­nh sΓ‘ch my-policy vΓ  Δ‘αΊ·t ID mΓ£ token lΓ m giΓ‘ trα»‹ cα»§a biαΊΏn mΓ΄i trường VAULT_TOKEN để sα»­ dα»₯ng sau nΓ y.

ChΓ­nh sΓ‘ch nΓ y cho phΓ©p tαΊ‘o vΓ  cαΊ­p nhαΊ­t cho mọi đường dαΊ«n trong secret/ ngoΓ i trα»« mα»™t đường dαΊ«n.

ViαΊΏt bΓ­ mαΊ­t cho đường dαΊ«n secret/data/creds

ChΓ­nh sΓ‘ch chỉ cho phΓ©p cho đường dαΊ«n secret/data/foo. Mọi nα»— lα»±c ghi vΓ o đường dαΊ«n nΓ y đều bα»‹ tα»« chα»‘i.

Associate Policies to Auth Methods

Đang cập nhật

7. Deploy Vault

Configuring Vault

Vault được Δ‘α»‹nh cαΊ₯u hΓ¬nh bαΊ±ng tệp HCL. TαΊ‘o cαΊ₯u hΓ¬nh Vault trong tệp config.hcl

Trong tệp cαΊ₯u hΓ¬nh nΓ y cΓ³ 2 cαΊ₯u hΓ¬nh chΓ­nh:

  • storage: lΓ  physical backend mΓ  Vault sα»­ dα»₯ng để lΖ°u trα»―. Cho Δ‘αΊΏn thời Δ‘iểm nΓ y, Dev server Δ‘Γ£ sα»­ dα»₯ng "inmem".

  • listener: mα»™t hoαΊ·c nhiều trΓ¬nh lαΊ―ng nghe xΓ‘c Δ‘α»‹nh cΓ‘ch Vault lαΊ―ng nghe cΓ‘c yΓͺu cαΊ§u API. VΓ­ dα»₯ trΓͺn lαΊ―ng nghe trΓͺn cα»•ng 8200 cα»§a mΓ‘y chα»§ cα»₯c bα»™ khΓ΄ng cΓ³ TLS.

  • api_addr: chỉ Δ‘α»‹nh Δ‘α»‹a chỉ để thΓ΄ng bΓ‘o cho route yΓͺu cαΊ§u cα»§a khΓ‘ch hΓ ng.

  • cluster_addr: cho biαΊΏt Δ‘α»‹a chỉ vΓ  cα»•ng sαΊ½ được sα»­ dα»₯ng để liΓͺn lαΊ‘c giα»―a cΓ‘c node Vault trong 1 cα»₯m.

Starting the Server

ThThe ./vault/data directory that raft storage backend uses must exist.

Đặt cờ -config để trỏ Δ‘αΊΏn dường dαΊ«n mΓ  Δ‘Γ£ lΖ°u cαΊ₯u hΓ¬nh config.hcl trΖ°α»›c Δ‘Γ³:

Vault xuαΊ₯t thΓ΄ng tin chi tiαΊΏt về cαΊ₯u hΓ¬nh cα»§a nΓ³, sau Δ‘Γ³ block

Initializing the Vault

Mở phiΓͺn lΓ m việc mα»›i vΓ  chαΊ‘y lệnh sau:

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

Để khởi tαΊ‘o Vault, sα»­ dα»₯ng vault operator init. ĐÒy lΓ  yΓͺu cαΊ§u chΖ°a được xΓ‘c thα»±c, nhΖ°ng nΓ³ chỉ hoαΊ‘t Δ‘α»™ng trΓͺn cΓ‘c Vault hoΓ n toΓ n mα»›i mΓ  khΓ΄ng cΓ³ dα»― liệu hiện cΓ³:

GiαΊ£i thΓ­ch: QuΓ‘ trΓ¬nh khởi tαΊ‘o cho 2 thΓ΄ng tin quan trọng: unseal key vΓ  root token. Tuy nhiΓͺn Δ‘Γ’y lΓ  lαΊ§n duy nhαΊ₯t mΓ  Vault cho cΓ‘c unseal key gαΊ§n nhau Δ‘αΊΏn vαΊ­y. NhΖ°ng trong thα»±c tαΊΏ, khΓ΄ng lΖ°u tαΊ­p trung cΓ‘c khΓ³a nΓ y cΓΉng nhau. Thay vΓ o Δ‘Γ³ cΓ³ thể sα»­ dα»₯ng PGP vΓ  Keybase.io cα»§a Vault để mΓ£ hΓ³a tα»«ng khΓ³a nΓ y bαΊ±ng khΓ³a PGP cα»§a người .

Seal/Unseal

Mọi mΓ‘y chα»§ Vault khởi chαΊ‘y đều bαΊ―t Δ‘αΊ§u ở trαΊ‘ng thΓ‘i SEAL. Tα»« cαΊ₯u hΓ¬nh, Vault cΓ³ thể truy cαΊ­p physical storage nhΖ°ng khΓ΄ng thể đọc bαΊ₯t kΓ¬ bα»™ nhα»› nΓ o vΓ¬ khΓ΄ng biαΊΏt cΓ‘ch giαΊ£i mΓ£. QuΓ‘ trΓ¬nh hΖ°α»›ng dαΊ«n Vault cΓ‘ch giαΊ£i mΓ£ dα»― liệu được gọi lΓ  unseal

Việc unseal phαΊ£i diα»…n ra mα»—i khi Vault khởi Δ‘α»™ng. NΓ³ cΓ³ thể được thα»±c hiện thΓ΄ng qua API vΓ  thΓ΄ng qua dΓ²ng lệnh. Để unseal Vault, phαΊ£i cΓ³ sα»‘ lượng unseal key Δ‘αΊ‘t ngΖ°α»‘ng Δ‘α»“ng thuαΊ­n. VΓ­ dα»₯ trong cαΊ₯u hΓ¬nh trΓͺn, phαΊ£i cΓ³ 3/5 khΓ³a unseal thΓ¬ mα»›i hα»§y "niΓͺm phong" Vault được.

Mở "niΓͺm phong" Vault:

GiΓ‘ trα»‹ sealed trở thΓ nh false. Vault được mở niΓͺm phong.

XΓ‘c thα»±c vα»›i root key:

LΓ  mα»™t người dΓΉng root cΓ³ thể niΓͺm phong lαΊ‘i Vault bαΊ±ng lệnh: vault operator seal.

8. Using the HTTP APIs with authentication

Accessing Secrets via the REST APIs

CΓ‘c mΓ‘y cαΊ§n quyền truy cαΊ­p vΓ o thΓ΄ng tin được lΖ°u trong Vault rαΊ₯t cΓ³ thể sαΊ½ truy cαΊ­p thΓ΄ng qua REST API cα»§a nΓ³.

VΓ­ dα»₯: nαΊΏu mα»™t mΓ‘y Δ‘ang sα»­ dα»₯ng AppRole để xΓ‘c thα»±c, trΖ°α»›c tiΓͺn, α»©ng dα»₯ng sαΊ½ xΓ‘c thα»±c vα»›i Vault, α»©ng dα»₯ng nΓ y trαΊ£ về Vault API token. Ứng dα»₯ng sαΊ½ sα»­ dα»₯ng token Δ‘Γ³ để liΓͺn lαΊ‘c vα»›i vault trong tΖ°Ζ‘ng lai.

TαΊ‘o cαΊ₯u hΓ¬nh mΓ‘y chα»§: config.hcl

TLS bα»‹ tαΊ―t ở Δ‘Γ’y vα»›i mα»₯c Δ‘Γ­ch vΓ­ dα»₯.

BαΊ―t Δ‘αΊ§u phiΓͺn lΓ m việc Vault mα»›i:

Khởi chẑy Vault bằng API:

Sα»­ dα»₯ng khΓ³a unseal ở trΓͺn, cΓ³ thể hα»§y niΓͺm phong Vault thΓ΄ng qua API HTTP

Gọi API Vault để xΓ‘c thα»±c trαΊ‘ng thΓ‘i khởi tαΊ‘o:

Giờ Δ‘Γ’y, bαΊ₯t kΓ¬ phΖ°Ζ‘ng thα»©c xΓ‘c thα»±c cΓ³ sαΊ΅n nΓ o cΕ©ng cΓ³ thể được bαΊ­t vΓ  Δ‘α»‹nh cαΊ₯u hΓ¬nh.

Bật phưƑng thức xÑc thực AppRole bằng cÑch gọi API Vault

TαΊ‘o chΓ­nh sΓ‘ch thΓ΄ng qua API Vault:

BαΊ­t cΓ΄ng cα»₯ bΓ­ mαΊ­t KV v2 khi sα»­ dα»₯ng API secret/

Lệnh dΖ°α»›i dΓ’y chỉ Δ‘α»‹nh rαΊ±ng cΓ‘c mΓ£ token dược phΓ‘t hΓ nh trong AppRole my-role phαΊ£i được liΓͺn kαΊΏt vα»›i my-policy

PhΖ°Ζ‘ng thα»©c xΓ‘c thα»±c AppRole yΓͺu cαΊ§u mα»™t RoleID vΓ  SecretID lΓ m Δ‘αΊ§u vΓ o. RoleID tΖ°Ζ‘ng tα»± nhΖ° tΓͺn người dΓΉng vΓ  SecretID cΓ³ thể được coi lΓ  mαΊ­t khαΊ©u cα»§a RoleID

Lệnh dΖ°α»›i Δ‘Γ’y để lαΊ₯y RoleID cα»§a role name my-role:

TαΊ‘o mα»™t SecretID mα»›i:

Hai thΓ΄ng tin RoleID vΓ  SecretID cΓ³ thể được cung cαΊ₯p cho Δ‘iểm cuα»‘i Δ‘Δƒng nhαΊ­p để tΓ¬m nαΊ‘p token Vault mα»›i.

Last updated