Vault Plugin Part 1 - Start Vault Server

มาเขียน Vault Plugin กันเถอะ : ตอนที่ 1 Start Vault Server

vault คืออะไร จริงๆมีคนนิยามไว้แล้วแล้วผมก็ไม่เก่งเรื่องนิยามดังนั้นตาม Link นี้ไปดีกว่า แต่สำหรับผม มันคือที่ที่มีไว้เก็บอะไรที่ต้องการให้เป็นความลับ เช่น password , private key , token, secret เป็นต้น โดยเปรียบว่ามันเป็นห้องนิรภัยในธนาคาร ที่คนที่จะเข้าไปเอาของมาได้นั้นต้องผ่านการตรวจสอบสิทธิ์ต่างๆที่เข้มงวดก่อนที่จะเข้าไปได้ ว่าง่ายๆ ถ้าเราเจองานที่ต้องเก็บข้อมูลที่ Sensitive ข้อมูลต้องเก็บเป็นแบบเข้ารหัสลับ ไม่ให้คนที่มีสิทธิ์เข้าเครื่องนั้นสามารถเห็นแล้วนำไปใช้ได้ง่ายๆ เช่น เจ้าหน้าที่เทคนิค เป็นต้นที่ shell เข้าเครื่องนั้นได้

เขาเอา Vault เอาไปใช้อะไรบ้าง

จริงๆผมก็ไม่เคยเอาไปใช้หรอกครับ แต่จากการหาอ่านเขาก็เอาไปเก็บข้อมูลที่เป็นความ (หัวข้อที่แล้วพูดไปแล้ว) ดังนั้นไปอ่านคนที่เขาใช้แล้วมาเขียนให้อ่านกันดีกว่า อันนี้คนของ วงใน เขียนเลย น่าจะอ่านเข้าใจง่ายกว่าที่ผมเขียน แต่ในโลกนี้นั้นไม่มีอะไรกลางๆที่ถูกใจทุกคน มันจะต้องมีความต้องการที่เฉพาะ ซึ่งคำตอบสุดท้ายของการแก้ปัญหานี้คือ เขียนเองจ้า ซึ่งนั่นเป็นที่มาของบทความนี้นั่นเอง

Start vault มาใช้งาน

เนื่องจากยุคนี้เป็นยุคของ Docker ในบทความนี้จะใช้ Vault ที่เป็น Docker จะได้ง่ายต่อการลบสร้างใหม่เวลาเกิดความผิดพลาดหรือ Config ค่าผิด ผมแนะนำให้สร้าง directory สำหรับการทดลองนี้ไว้ด้วยครับ เพื่อจะได้ง่ายในการเก็บข้อมูลของ Vault และเก็บ Plugin โดยมี structure ใน directory ดังนี้

1
2
3
.
├── data
└── plugin
1
docker run -d -v "$PWD/plugin:/vault/plugin" -v "$PWD/data:/vault/data" -p 8200:8200 --cap-add=IPC_LOCK --name=test-vault -e 'VAULT_LOCAL_CONFIG={"listener":[{"tcp":{"address":"0.0.0.0:8200","tls_disable":1}}],"storage":{"file":{"path":"./vault/data"}},"default_lease_ttl":"168h","max_lease_ttl":"720h","api_addr":"http://127.0.0.1:8200","ui":true,"plugin_directory":"./vault/plugin","log_level":"debug","disable_mlock":true}' vault:1.5.4 server

เมื่อ Run เสร็จแล้วให้เข้า Browser แล้วพิมพ์ ip ของเครื่องที่เราทำการ Run docker ของผมคือ 192.168.56.101 เครื่องของคุณอาจจะเป็น 127.0.0.1

1
2
3
4
5
# เข้าผ่าน Browser
http:<YOUR-DOCKER-HOST-IP>:8200/ui

# ของผมคือ
http://192.168.56.101:8200/ui

ในส่วนของ key share กับ key threshold ให้ใส่ 1 ไปก่อนเพราะเราทำแค่คนเดียว จากนั้นกด initialize จากนั้นจะเปลี่ยนมาหน้านี้

ให้ทำการกด Download key ซึ่งไฟล์จะหน้าตาประมาณนี้

1
2
3
4
5
6
7
8
9
{
"keys": [
"53b1b68057e39a27def299445995669c1d7e2fed9e574d609d5a22cb6901d14c"
],
"keys_base64": [
"U7G2gFfjmife8plEWZVmnB1+L+2eV01gnVoiy2kB0Uw="
],
"root_token": "s.lVRVeQTPBJbxPijFKv6ghm21"
}

ซึ่งไฟล์นี้ในขั้นตอน Production ห้ามให้ใครเห็น ห้ามแจกจ่าย เด็ดขาด

แต่อันนี้เป็นตัว Test ของผมเองเลยไม่มีประเด็นอะไร ไม่นานเดี๋ยวมันก็หายไปแล้ว โดยตัวที่จำเป็นคือ keys_base64 ซึ่งเป็นการปลด Lock vault ให้เข้าไปใช้งานได้ ส่วน root_token ใช้ในการเป็น token ไว้ authen ใช้งาน vault

จากนั้นกดไปขั้นตอนถัดไปคือการทำการ Unseal เข้าไปใช้งาน Vault

จากนั้นทำการ Login เข้าไปใช้งาน

ซึ่งถ้าสำเร็จจะเข้ามาที่หน้านี้ ซึ่งถ้ามาถึงแปลว่าคุณสามารถใช้ Vault ได้แล้ว

ตัดจบก่อน

สำหรับตอนนี้เราสามารถสร้าง Vault server ขึ้นมาใช้งานผ่าน Docker ได้เป็นที่เรียบร้อย ในตอนถัดไปเราจะมาสร้าง Custom plugin ของ Vault ขึ้นมาใช้งาน แล้วก็ Register plugin เพื่อลองใช้งานกัน

ไม่เกี่ยวกับ Docker แต่เกี่ยวกับไอดอล

Lara

น้องเป็นไอดอลสายวิชาการแถมน้องเป็นโปรแกรมเมอร์ด้วยนะ ไปติดตาม Page กันได้น้องอัพเดทความรู้ต่างๆเกี่ยวกับ IT แล้วก็เกี่ยวกับ Game ด้วย

Lara

เพลงประกอบการเขียน Blog

ชอบการจิกกัดของเพลงนี้มาก