23 ngày ôn tập kiến thức cho chứng chỉ Vault Associate

Table of contents
- Ngày 1: Giới thiệu Vault và Cài đặt (The Foundation)
- Ngày 2: Secret Engines (KV và Transit)
- Ngày 3: Authentication Methods (Userpass, AppRole)
- Ngày 4: Policies (Path-Based, Capabilities)
- Ngày 5: Tokens (Service, Batch, Orphan) và Leases
- Ngày 6: Vault Agent và Auto-Auth
- Ngày 7: Vault Secrets Operator (VSO)
- Ngày 8: Vault Enterprise Replication
- Ngày 9: Vault Deployment Architectures
- Ngày 10: Integrated Storage
- Ngày 11: Authentication Methods và Secret Engines (Nâng cao)
- Ngày 12: Key Management và Seal/Unseal (Vault Enterprise)
- Ngày 13: Policies và Governance (Sentinel)
- Ngày 14: Multi-Tenancy với Namespaces (Vault Enterprise)
- Ngày 15: Vault Agent Auto-Auth và Templating (Vault Enterprise)
- Ngày 16: Vault API (Nâng cao)
- Ngày 17: Troubleshooting Vault
- Ngày 18: Security Hardening và Compliance
- Ngày 19: Vault và Kubernetes
- Ngày 20: Vault và Kubernetes (Part 2 - Dynamic Configuration)
- Ngày 21: Vault và Cloud (AWS/Azure/GCP)
- Ngày 22: Vault và Jenkins
- Ngày 23: Vault và Monitoring
Lưu ý:
Tài khoản HashiCorp Cloud Platform (HCP): Đăng ký tài khoản miễn phí để làm quen với Vault Dedicated.
Môi trường thực hành: Cài đặt Vault trên máy cá nhân (Docker hoặc binary) và làm quen với môi trường dòng lệnh, có thể sử dụng Linux.
Tài liệu bổ sung: Tham khảo các blog, bài viết, video, khóa học trực tuyến về Vault, đặc biệt là các nguồn từ HashiCorp.
Ghi chú: Ghi lại mọi thứ quan trọng, khó hiểu, lỗi gặp phải, cách khắc phục, các lệnh đã sử dụng.
Luyện tập: Thực hành liên tục, không chỉ làm các mini-project mà còn tự tạo các tình huống, thử nghiệm khác nhau.
Vault Enterprise Trial License: Xin cấp Vault Enterprise Trial License để thực hành các tính năng Enterprise.
Ngày 1: Giới thiệu Vault và Cài đặt (The Foundation)
Mục tiêu: Hiểu rõ Vault là gì, kiến trúc tổng quan và cài đặt thành công Vault trên máy cá nhân.
Nội dung:
Lý thuyết:
Vault là gì? (The "Why")
Secret Management: Vấn đề và giải pháp.
Data Encryption: Bảo vệ dữ liệu nhạy cảm.
Identity-Based Access Management: Kiểm soát truy cập dựa trên danh tính.
Audit Logging: Ghi lại mọi hoạt động.
Kiến trúc Vault (The "How")
Client, API, Auth Methods, Policies, Secret Engines, Storage Backend, Audit Log, Seal/Unseal, Cryptographic Barrier.
Luồng hoạt động: Authentication -> Authorization -> Access.
Các loại Tokens (Service, Batch, Orphan, Root).
Các phiên bản Vault (The "Which")
- Open Source, Enterprise, HCP Vault Dedicated: So sánh tính năng, chi phí, trách nhiệm quản lý.
Thực hành:
Cài đặt Vault:
Docker:
docker pull
,docker run
, tìm hiểu các tùy chọn (ports, volumes, environment variables).Binary: Tải binary, giải nén, thêm vào PATH, tìm hiểu các tùy chọn cấu hình (config file, environment variables).
Khởi động Vault:
Chế độ
dev
:vault server -dev
, lưu ý root token và địa chỉ.Tìm hiểu các hạn chế của chế độ
dev
.
Truy cập Vault:
CLI: Cấu hình
VAULT_ADDR
,VAULT_TOKEN
, kiểm tra trạng thái bằngvault status
.UI: Truy cập địa chỉ Vault UI, đăng nhập bằng root token.
Mini-Project:
Vault Hello World:
Mục tiêu: Viết và đọc secret đơn giản bằng cả CLI và UI.
Hướng dẫn:
CLI:
vault kv put hello/world message="Hello, Vault!"
,vault kv get hello/world
.UI: Điều hướng đến KV Secrets Engine, tạo folder
hello
, viết secretworld
với keymessage
.
Vault với Docker Compose:
Mục tiêu: Khởi động Vault bằng Docker Compose để dễ dàng quản lý cấu hình.
Hướng dẫn:
Tạo file
docker-compose.yml
với cấu hình Vault.Sử dụng
docker-compose up -d
để khởi động.
Kết hợp CLI và UI:
- Mục tiêu: Thực hành các bước từ cài đặt đến truy cập Vault bằng CLI và UI một cách thuần thục.
Ngày 2: Secret Engines (KV và Transit)
Mục tiêu: Tìm hiểu sâu về Secret Engines, đặc biệt là KV và Transit, để quản lý secrets và mã hóa dữ liệu.
Nội dung:
Lý thuyết:
Secrets Engines (The "What")
KV, Transit, Database, AWS, SSH, GCP, Azure...: Mục đích sử dụng, ưu nhược điểm.
Static vs. Dynamic Secrets: So sánh, use cases.
Leases và Renewal: Quản lý vòng đời secrets động.
Response Wrapping: Bảo vệ secrets trong quá trình truyền tải.
KV Secrets Engine (The "How To Store")
Versions (v1 vs. v2): So sánh, cách sử dụng.
CAS (Check-And-Set): Ngăn chặn xung đột khi ghi.
Transit Secrets Engine (The "How To Encrypt")
Encryption as a Service: Mã hóa/giải mã dữ liệu mà không cần lưu trữ key.
Key Rotation: Thay đổi key định kỳ để tăng cường bảo mật.
Thực hành:
KV Secrets Engine:
Enable KV Secrets Engine:
vault secrets enable -path=kv-v2 -version=2 kv
.Viết, đọc, liệt kê, xóa secrets:
vault kv put
,vault kv get
,vault kv list
,vault kv delete
.Sử dụng versions:
vault kv put -cas
,vault kv get -version
.
Transit Secrets Engine:
Enable Transit Secrets Engine:
vault secrets enable transit
.Tạo encryption key:
vault write transit/keys/my-key
.Mã hóa dữ liệu:
vault write transit/encrypt/my-key plaintext=$(base64 <<< "My Secret Data")
.Giải mã dữ liệu:
vault write transit/decrypt/my-key ciphertext="..."
.Key Rotation:
vault write transit/rotate/my-key
.
Mini-Project:
Secret Management cho ứng dụng web:
Mục tiêu: Lưu trữ cấu hình database (username, password, host) cho ứng dụng web vào Vault KV Secrets Engine.
Hướng dẫn:
Tạo folder
webapp
trong KV Secrets Engine.Lưu cấu hình database vào secret
database
.Viết script (Python, Bash) để đọc cấu hình từ Vault và cấu hình ứng dụng.
Mã hóa dữ liệu nhạy cảm:
Mục tiêu: Sử dụng Transit Secrets Engine để mã hóa thông tin cá nhân (PII) trong database.
Hướng dẫn:
Tạo encryption key
pii
.Sử dụng Transit API để mã hóa và giải mã thông tin PII trước khi lưu vào database.
Tìm hiểu cách key rotation ảnh hưởng đến dữ liệu đã mã hóa.
Version Control cho Secrets:
- Mục tiêu: Sử dụng version control của KV Secrets Engine để theo dõi thay đổi và khôi phục secrets.
Ngày 3: Authentication Methods (Userpass, AppRole)
Mục tiêu: Tìm hiểu sâu về Authentication Methods, đặc biệt là Userpass và AppRole, để xác thực người dùng và ứng dụng.
Nội dung:
Lý thuyết:
Authentication Methods (The "Who")
Token, Userpass, LDAP, GitHub, AWS, AppRole, Kubernetes...: So sánh, use cases.
Human vs. Machine Authentication: Sự khác biệt, lựa chọn phù hợp.
Entities và Groups: Quản lý danh tính tập trung.
Userpass (The "Simple User")
- Đơn giản, dễ sử dụng cho người dùng.
AppRole (The "Machine Identity")
- An toàn hơn cho ứng dụng, không cần lưu trữ credentials trong code.
Thực hành:
Userpass Authentication:
Enable Userpass:
vault auth enable userpass
.Tạo user:
vault write auth/userpass/users/myuser password=mypassword
.Đăng nhập:
vault login auth/userpass/login/myuser password=mypassword
.
AppRole Authentication:
Enable AppRole:
vault auth enable approle
.Tạo role:
vault write auth/approle/role/myrole policies=my-policy token_ttl=1h token_max_ttl=2h
.Lấy Role ID:
vault read auth/approle/role/myrole/role-id
.Lấy Secret ID:
vault write -f auth/approle/role/myrole/secret-id
.Đăng nhập:
vault login -method=approle role_id=... secret_id=...
.
Mini-Project:
User Authentication cho CLI:
Mục tiêu: Tạo user và password để đăng nhập vào Vault CLI.
Hướng dẫn:
Enable Userpass Authentication.
Tạo user và password.
Sử dụng
vault login
để đăng nhập.
AppRole cho ứng dụng:
Mục tiêu: Cấu hình AppRole để ứng dụng có thể tự động authenticate vào Vault.
Hướng dẫn:
Enable AppRole Authentication.
Tạo role với policy phù hợp.
Lấy Role ID và Secret ID.
Viết script (Python, Bash) để lấy token từ Vault bằng Role ID và Secret ID.
Entities và Groups:
- Mục tiêu: Tạo Entities và Groups để quản lý danh tính tập trung, áp dụng policies cho Group.
Ngày 4: Policies (Path-Based, Capabilities)
Mục tiêu: Tìm hiểu sâu về Policies để kiểm soát truy cập vào Vault dựa trên path và capabilities.
Nội dung:
Lý thuyết:
Policies (The "Rules")
Tổng quan về Policies: Mục đích, vai trò.
Policy Syntax:
path
,capabilities
,description
.Capabilities:
read
,write
,create
,update
,delete
,list
,sudo
.Variables trong Policy Paths: Sử dụng biến để tạo policies linh hoạt.
Default Policies:
default
,root
.Deny by Default: Vault từ chối mọi truy cập trừ khi được cho phép.
Thực hành:
Tạo Policies:
Tạo policy cho phép đọc secrets tại path
kv-v2/data/myapp
.Tạo policy cho phép viết secrets tại path
kv-v2/metadata/myapp/*
.Tạo policy sử dụng variables để cho phép truy cập vào các path khác nhau dựa trên user ID.
Áp dụng Policies:
Áp dụng policies cho user và role.
Áp dụng policies cho Entities và Groups.
Kiểm tra quyền truy cập:
Sử dụng token của user và role để truy cập Vault.
Kiểm tra xem user và role có quyền truy cập vào các path đã được chỉ định hay không.
Mini-Project:
RBAC (Role-Based Access Control):
Mục tiêu: Thiết kế hệ thống RBAC cho ứng dụng sử dụng Vault.
Hướng dẫn:
Xác định các vai trò (admin, developer, operator).
Tạo policies cho mỗi vai trò, chỉ định các quyền truy cập phù hợp.
Tạo Groups cho mỗi vai trò.
Thêm Users vào Groups.
Kiểm tra quyền truy cập của từng vai trò.
Dynamic Policies:
Mục tiêu: Tạo policies động dựa trên thông tin metadata của user hoặc application.
Hướng dẫn:
Sử dụng variables trong policy paths để tạo policies linh hoạt.
Ví dụ: Cho phép mỗi user truy cập vào secrets trong folder riêng của họ.
Least Privilege Principle:
- Mục tiêu: Thiết kế policies theo nguyên tắc "least privilege" (chỉ cấp quyền tối thiểu cần thiết).
Ngày 5: Tokens (Service, Batch, Orphan) và Leases
Mục tiêu: Tìm hiểu sâu về các loại Tokens và Leases, cách quản lý chúng và ảnh hưởng của chúng đến bảo mật.
Nội Dung:
Lý Thuyết:
Tokens (The "Keys"):
Tổng Quan Về Tokens: Mục Đích, Vai Trò.
Các Loại Tokens: Service, Batch, Orphan, Root.
Service: Dùng Cho Ứng Dụng, Có Thể Renew.
Batch: Dùng Cho Tác Vụ Hàng Loạt, Không Thể Renew.
Orphan: Không Phụ Thuộc Vào Parent Token.
Root: Có Quyền Cao Nhất, Cần Được Bảo Vệ Nghiêm Ngặt.
Token Accessors: Dùng Để Quản Lý Token Mà Không Cần Biết Token ID.
TTL (Time-To-Live) và Max TTL: Thời Gian Tồn Tại Của Token.
Renewable Tokens: Có Thể Gia Hạn Thời Gian Tồn Tại.
Leases (The "Borrowed Keys"):
Tổng Quan Về Leases: Mục Đích, Vai Trò.
Lease ID: Định Danh Duy Nhất Cho Một Secret Động.
Renewal và Revocation: Gia Hạn Và Thu Hồi Secret Động.
Impact of Leases on Dynamic Secrets: Secrets Động Chỉ Tồn Tại Trong Thời Gian Lease.
Thực Hành:
Tạo Service Tokens:
Sử Dụng
vault token create
.Chỉ Định TTL và Policies.
Tạo Batch Tokens:
Sử Dụng
vault token create -type=batch
.Tìm Hiểu Về Batch Token Limitations.
Renew Tokens:
Sử Dụng
vault token renew
.Kiểm Tra TTL Sau Khi Renew.
Revoke Tokens:
Sử Dụng
vault token revoke
.Kiểm Tra Xem Token Còn Hợp Lệ Hay Không.
Làm Việc Với Dynamic Secrets và Leases:
Lấy Dynamic Secrets (Ví Dụ: Từ Database Secrets Engine).
Kiểm Tra Lease ID.
Renew và Revoke Lease.
Mini-Project:
Token Rotation:
Mục Tiêu: Thiết Kế Cơ Chế Tự Động Thay Đổi Token Định Kỳ Cho Ứng Dụng.
Hướng Dẫn:
Tạo Service Token Với TTL Ngắn.
Sử Dụng Cron Job Hoặc Scheduled Task Để Lấy Token Mới Định Kỳ.
Áp Dụng Token Mới Cho Ứng Dụng.
Database Credentials Rotation:
Mục Tiêu: Tự Động Thay Đổi Username và Password Cho Database Bằng Dynamic Secrets.
Hướng Dẫn:
Cấu Hình Database Secrets Engine.
Tạo Role Với TTL Ngắn.
Sử Dụng Ứng Dụng Để Lấy Credentials Mới Định Kỳ.
Lease Management:
Mục Tiêu: Giám Sát Và Quản Lý Leases Để Đảm Bảo Ứng Dụng Không Mất Quyền Truy Cập Secret Động.
Hướng Dẫn:
Sử Dụng Vault API Để Liệt Kê Tất Cả Leases.
Thiết Lập Alert Nếu Có Lease Sắp Hết Hạn.
Tự Động Renew Leases.
Ngày 6: Vault Agent và Auto-Auth
Mục tiêu: Làm quen với Vault Agent, Auto-Auth và cách sử dụng chúng để đơn giản hóa việc quản lý secrets cho ứng dụng.
Nội dung:
Lý thuyết:
Vault Agent (The "Helper"):
Tổng quan về Vault Agent: Mục đích, vai trò.
Auto-Auth: Tự động authenticate vào Vault.
Caching: Lưu trữ token và secrets cục bộ để giảm độ trễ.
Templates: Tạo file cấu hình động từ secrets.
Auto-Auth (The "Automatic Login"):
Các phương pháp Auto-Auth: AppRole, AWS, Kubernetes...
Cấu hình Auto-Auth: Chỉ định phương pháp, Role ID, Secret ID...
Vault Agent vs. Application Integration: So sánh ưu nhược điểm.
Thực hành:
Cài đặt và cấu hình Vault Agent:
Tải Vault Agent binary.
Cấu hình Vault Agent (config file).
Sử dụng Auto-Auth với AppRole:
Cấu hình Vault Agent để authenticate bằng AppRole.
Lưu Role ID và Secret ID trong file.
Chạy ứng dụng sử dụng Vault Agent để lấy secrets.
Sử dụng Vault Agent Templates:
Tạo template file để lấy secrets từ Vault và ghi vào file cấu hình ứng dụng.
Sử dụng
consul-template
syntax.
Sử dụng Caching:
Cấu hình Vault Agent để cache tokens và secrets.
Kiểm tra hiệu suất khi sử dụng caching.
Mini-Project:
Vault Agent cho ứng dụng web:
Mục tiêu: Sử dụng Vault Agent để cung cấp cấu hình database cho ứng dụng web.
Hướng dẫn:
Cấu hình AppRole để ứng dụng có thể authenticate.
Sử dụng Vault Agent để lấy cấu hình database từ Vault.
Sử dụng Vault Agent Templates để tạo file cấu hình cho ứng dụng web.
Auto-Auth với AWS:
Mục tiêu: Sử dụng Auto-Auth để EC2 instances có thể tự động authenticate vào Vault.
Hướng dẫn:
Tạo IAM role cho EC2 instance.
Cấu hình AWS Authentication trong Vault.
Cấu hình Vault Agent trên EC2 instance để sử dụng AWS Authentication.
Ngày 7: Vault Secrets Operator (VSO)
Mục tiêu: Tìm hiểu về Vault Secrets Operator và cách sử dụng nó để quản lý secrets trong Kubernetes một cách hiệu quả.
Nội dung:
Lý thuyết:
Vault Secrets Operator (The "Kubernetes Native"):
Tổng quan về Vault Secrets Operator: Mục đích, vai trò.
Kubernetes Native Secrets Management: Quản lý secrets bằng Kubernetes CRDs.
Instant Updates: Tự động cập nhật secrets khi có thay đổi trong Vault.
Encrypted Client Cache: Lưu trữ secrets đã mã hóa cục bộ.
Secret Transformation: Mã hóa secrets trước khi lưu vào Kubernetes.
Benefits of VSO (The "Advantages"):
Centralized Secret Management: Quản lý secrets tập trung trong Vault.
Simplified Secret Rotation: Đơn giản hóa việc thay đổi secrets.
Improved Security: Tăng cường bảo mật cho secrets.
Thực hành:
Cài đặt Vault Secrets Operator:
- Sử dụng Helm chart hoặc YAML manifests.
Cấu hình VSO:
- Kết nối VSO với Vault server.
Tạo Vault Secret Engine (VSE) CRD:
- Chỉ định path và policies.
Tạo Vault Static Secret (VSS) hoặc Vault Dynamic Secret (VDS) CRD:
- Chỉ định secrets cần lấy từ Vault.
Triển khai ứng dụng sử dụng VSO:
- Sử dụng annotations hoặc environment variables.
Kiểm tra Instant Updates:
- Thay đổi secret trong Vault và kiểm tra xem ứng dụng có nhận được secret mới hay không.
Mini-Project:
Quản lý Database Credentials với VSO:
Mục tiêu: Sử dụng VSO để quản lý username và password cho database trong Kubernetes.
Hướng dẫn:
Cấu hình Database Secrets Engine trong Vault.
Tạo Vault Dynamic Secret (VDS) CRD để lấy credentials.
Triển khai application Kubernetes và sử dụng VSO để inject credentials vào environment variables.
Mã hóa Secrets với VSO:
Mục tiêu: Sử dụng VSO để mã hóa secrets trước khi lưu vào Kubernetes.
Hướng dẫn:
Cấu hình Secret Transformation trong VSO.
Sử dụng VSO để lấy secrets từ Vault.
Kiểm tra xem secrets có được mã hóa trước khi lưu vào Kubernetes hay không.
Ngày 8: Vault Enterprise Replication
Mục tiêu: Hiểu rõ về Vault Enterprise Replication và các loại replication, cũng như cách sử dụng chúng để đảm bảo tính sẵn sàng và khả năng phục hồi dữ liệu.
Nội dung:
Lý thuyết:
Vault Enterprise Replication (The "Always On"):
Tổng quan về Vault Enterprise Replication: Mục đích, vai trò.
Performance Replication: Tăng hiệu suất, giảm độ trễ cho người dùng ở xa.
Disaster Recovery Replication: Đảm bảo khả năng phục hồi dữ liệu khi có sự cố.
Replication Topologies: Mô hình triển khai replication (primary-secondary, multi-primary).
Benefits of Replication (The "Advantages"):
High Availability: Đảm bảo Vault luôn hoạt động.
Disaster Recovery: Phục hồi dữ liệu khi có sự cố.
Improved Performance: Tăng hiệu suất, giảm độ trễ.
Thực hành:
(Nếu có Vault Enterprise)
Cài đặt và cấu hình Performance Replication:
Cài đặt hai Vault clusters.
Cấu hình Performance Replication giữa hai clusters.
Kiểm tra xem secrets và policies có được replicate hay không.
Thử truy cập secrets từ cả hai clusters.
Cài đặt và cấu hình Disaster Recovery Replication:
Cài đặt hai Vault clusters.
Cấu hình Disaster Recovery Replication giữa hai clusters.
Thực hiện failover từ primary sang secondary cluster.
Kiểm tra xem secrets và policies có được phục hồi hay không.
Mini-Project:
Triển khai Vault với Performance Replication cho ứng dụng toàn cầu:
Mục tiêu: Sử dụng Performance Replication để giảm độ trễ cho người dùng ở các khu vực khác nhau.
Hướng dẫn:
Triển khai Vault clusters ở các khu vực khác nhau (ví dụ: US, EU, Asia).
Cấu hình Performance Replication giữa các clusters.
Sử dụng load balancer để điều hướng người dùng đến cluster gần nhất.
Xây dựng Disaster Recovery Plan cho Vault:
Mục tiêu: Lập kế hoạch phục hồi dữ liệu Vault trong trường hợp có sự cố.
Hướng dẫn:
Xác định các rủi ro (ví dụ: mất điện, tấn công mạng).
Thiết lập Disaster Recovery Replication.
Thực hiện failover test để đảm bảo kế hoạch hoạt động.
Ngày 9: Vault Deployment Architectures
Mục tiêu: Hiểu rõ về các deployment architectures khác nhau của Vault và cách lựa chọn kiến trúc phù hợp với yêu cầu của tổ chức.
Nội dung:
Lý thuyết:
Deployment Architectures (The "Where"):
Single Node: Đơn giản, dễ cài đặt, không phù hợp cho production.
Clustered: Khả năng chịu lỗi cao, phù hợp cho production.
Self-Managed: Tự quản lý toàn bộ hạ tầng.
HCP Vault Dedicated: HashiCorp quản lý hạ tầng, tập trung vào quản lý secrets.
Considerations for Production Deployments: HA, Scalability, Security, Monitoring.
Thực hành:
Thiết kế một Vault deployment architecture cho một ứng dụng cụ thể:
Xác định yêu cầu về HA, scalability, security và monitoring.
Lựa chọn storage backend phù hợp.
Lựa chọn authentication methods phù hợp.
Lựa chọn replication strategy (nếu cần).
Vẽ sơ đồ kiến trúc.
Tìm hiểu về các best practices cho việc triển khai Vault trong production:
Security Hardening.
Backup and Recovery.
Monitoring and Alerting.
Mini-Project:
Triển khai Vault Cluster với Consul:
Mục tiêu: Xây dựng Vault cluster sử dụng Consul làm storage backend.
Hướng dẫn:
Cài đặt Consul cluster.
Cấu hình Vault để sử dụng Consul làm storage backend.
Khởi động Vault nodes và tham gia vào cluster.
Security Hardening cho Vault:
Mục tiêu: Áp dụng các biện pháp để tăng cường bảo mật cho Vault deployment.
Hướng dẫn:
Sử dụng TLS encryption.
Hạn chế quyền truy cập vào Vault server.
Sử dụng firewall để chặn các kết nối không mong muốn.
Ngày 10: Integrated Storage
Mục tiêu: Cấu hình Vault server với Integrated Storage (Raft) và quản lý cluster.
Nội dung:
Lý thuyết:
Integrated Storage (Raft) Backend:
Raft Consensus Algorithm: Chi tiết về thuật toán, leader election, log replication.
Data Snapshot and Restore: Cách tạo snapshot và phục hồi dữ liệu từ snapshot.
Automatic Failover: Tự động chuyển sang standby node khi leader gặp sự cố.
Membership Management: Thêm, xóa nodes khỏi cluster.
Monitoring and Troubleshooting: Theo dõi trạng thái cluster, xử lý sự cố.
Thực hành:
Cấu hình Vault Server với Integrated Storage:
Sử dụng HCL syntax để cấu hình Integrated Storage.
Chỉ định
node_id
,raft_protocol
,retry_join
.
Khởi động Vault Cluster:
- Khởi động các Vault nodes và tham gia vào cluster.
Thực hiện Data Snapshot và Restore:
Sử dụng
vault snapshot save
để tạo snapshot.Sử dụng
vault snapshot restore
để phục hồi dữ liệu.
Quản lý Cluster Membership:
Sử dụng
vault operator raft list-peers
để xem danh sách nodes.Sử dụng
vault operator raft remove-peer
để xóa nodes khỏi cluster.
Mini-Project:
Automated Vault Cluster Recovery:
Mục tiêu: Tự động hóa quá trình phục hồi Vault cluster từ snapshot.
Hướng dẫn:
Sử dụng script (Bash, Python) để kiểm tra trạng thái cluster.
Nếu cluster gặp sự cố, tự động phục hồi từ snapshot.
Ngày 11: Authentication Methods và Secret Engines (Nâng cao)
Mục tiêu: Tìm hiểu về các Authentication Methods và Secret Engines nâng cao, cũng như cách cấu hình chúng.
Nội dung:
Lý thuyết:
Authentication Methods:
LDAP: Xác thực người dùng từ LDAP server.
GitHub: Xác thực người dùng từ GitHub.
AWS: Xác thực từ AWS IAM role hoặc EC2 instance.
Kubernetes: Xác thực từ Kubernetes Service Account.
Secret Engines:
AWS: Tạo credentials tạm thời cho các dịch vụ AWS.
Database: Tạo username và password cho database.
SSH: Cấp quyền truy cập SSH.
Transit: Mã hóa và giải mã dữ liệu.
PKI: Tạo và quản lý certificates.
Thực hành:
Cấu hình LDAP Authentication:
Cấu hình Vault để kết nối với LDAP server.
Tạo policies để cấp quyền truy cập cho LDAP users.
Cấu hình Database Secrets Engine:
Cấu hình Vault để kết nối với database.
Tạo role để tạo credentials tạm thời cho database.
Cấu hình SSH Secrets Engine:
- Cấu hình Vault để cấp quyền truy cập SSH.
Mini-Project:
Centralized SSH Key Management:
Mục tiêu: Sử dụng Vault để quản lý SSH keys tập trung và cấp quyền truy cập SSH.
Hướng dẫn:
Cấu hình SSH Secrets Engine.
Tạo role để cấp quyền truy cập SSH.
Sử dụng Vault CLI hoặc API để lấy SSH keys.
Ngày 12: Key Management và Seal/Unseal (Vault Enterprise)
Mục tiêu: Tìm hiểu về Key Management Strategies và Seal/Unseal Process trong Vault Enterprise.
Nội dung:
Lý thuyết:
Key Management Strategies:
HSM (Hardware Security Module) Integration: Lợi ích, hạn chế, các nhà cung cấp HSM phổ biến (Thales, Gemalto).
KMS (Key Management Service) Integration (AWS KMS, Azure Key Vault, GCP KMS): So sánh, lựa chọn, cấu hình.
Seal/Unseal Process:
Shamir Secret Sharing: Chi tiết về thuật toán, ưu nhược điểm.
Auto Unseal: AWS KMS, Azure Key Vault, GCP KMS: Cấu hình, so sánh, troubleshooting.
Seal Wrap (PKCS#11):
- Mã hóa unseal keys bằng HSM.
Thực hành:
Auto Unseal với AWS KMS (Nếu có tài khoản AWS):
Tạo KMS Key trong AWS.
Cấu Hình Vault để Sử Dụng KMS Key.
Kiểm Tra Quá Trình Auto Unseal.
Tìm hiểu về Seal Wrap (PKCS#11):
Nghiên cứu tài liệu về Seal Wrap.
Thử cấu hình Seal Wrap (nếu có HSM).
Mini-Project:
Vault Security Hardening:
Mục tiêu: Tăng cường bảo mật cho Vault deployment bằng Auto Unseal và Seal Wrap.
Hướng dẫn:
Cấu hình Auto Unseal với KMS.
Cấu hình Seal Wrap.
Kiểm tra khả năng chịu lỗi và bảo mật của Vault.
Ngày 13: Policies và Governance (Sentinel)
Mục tiêu: Sử dụng Sentinel Policies để kiểm soát truy cập và quản lý Vault một cách linh hoạt và mạnh mẽ.
Nội dung:
Lý thuyết:
Sentinel Policies:
Sentinel Language: Cú pháp, các hàm, các loại policy (authentication, authorization, dynamic secret).
Data Sources: Sử dụng data sources để lấy thông tin từ bên ngoài Vault (API, files, databases).
Mocks: Sử dụng mocks để kiểm tra Sentinel policies.
Policy Sets: Quản lý nhiều policies cùng lúc.
Use Cases:
Enforce Naming Conventions for Secrets: Đảm bảo secrets tuân thủ quy tắc đặt tên.
Limit Secret Lifetimes: Giới hạn thời gian tồn tại của secrets.
Require MFA for Access to Sensitive Data: Yêu cầu xác thực đa yếu tố để truy cập dữ liệu nhạy cảm.
Thực hành:
Viết Sentinel Policy:
Viết Sentinel policy để giới hạn quyền truy cập vào secrets dựa trên user metadata.
Viết Sentinel policy để kiểm tra tính hợp lệ của dữ liệu trước khi ghi vào Vault.
Kiểm tra Sentinel Policy:
- Sử dụng mocks để kiểm tra policy trước khi áp dụng vào production.
Áp dụng Sentinel Policy:
- Áp dụng policy cho authentication và authorization.
Mini-Project:
Vault Security Automation:
Mục tiêu: Sử dụng Sentinel Policies để tự động hóa việc kiểm tra và tuân thủ các quy tắc bảo mật.
Hướng dẫn:
Viết Sentinel policies để kiểm tra các quy tắc bảo mật (ví dụ: sử dụng TLS, tuân thủ quy tắc đặt tên secrets).
Tự động kiểm tra các quy tắc bảo mật định kỳ và tạo báo cáo.
Ngày 14: Multi-Tenancy với Namespaces (Vault Enterprise)
Mục tiêu: Sử dụng Namespaces để phân chia và quản lý Vault cho nhiều tenants hoặc team.
Nội dung:
Lý thuyết:
Namespaces:
Namespace Hierarchies: Tạo và quản lý namespaces lồng nhau.
Policy Inheritance: Cách policies được kế thừa trong namespaces.
Resource Isolation: Cô lập các tài nguyên giữa các namespaces.
Use Cases:
Separate Environments (Dev, Test, Prod): Phân chia các môi trường khác nhau.
Separate Teams or Projects: Phân chia các team hoặc project khác nhau.
Multi-Tenant SaaS Applications: Cung cấp Vault as a service cho nhiều tenants.
Thực hành:
Tạo Namespaces:
- Sử dụng CLI hoặc API để tạo namespaces.
Áp dụng Policies cho Namespaces:
- Tạo policies để cấp quyền truy cập vào namespaces.
Quản lý Users và Groups trong Namespaces:
- Tạo users và groups trong namespaces.
Mini-Project:
Vault as a Service:
Mục tiêu: Xây dựng hệ thống Vault as a service cho nhiều tenants bằng Namespaces.
Hướng dẫn:
Tạo namespace cho mỗi tenant.
Cấu hình policies và authentication methods cho mỗi namespace.
Cung cấp API để cho phép tenants quản lý secrets và policies trong namespace của họ.
Ngày 15: Vault Agent Auto-Auth và Templating (Vault Enterprise)
Mục tiêu: Tìm hiểu và cấu hình Vault Agent Auto-Auth và Templating với các tính năng nâng cao của Vault Enterprise.
Nội dung:
Lý thuyết:
Vault Agent Auto-Auth (Vault Enterprise):
Using Managed Identities (Azure, GCP): Cách cấu hình và lợi ích.
Custom Auth Methods: Sử dụng Auto-Auth với các auth methods tùy chỉnh.
Vault Agent Templating (Vault Enterprise):
Dynamic Template Rendering: Sử dụng các hàm để tạo template linh hoạt hơn.
Template Versioning: Quản lý các phiên bản template khác nhau.
Integration with Configuration Management Tools: Ansible, Chef, Puppet.
Use Cases:
Dynamic Configuration of Microservices: Tự động cấu hình microservices dựa trên secrets và metadata.
Secure Deployment of Serverless Functions: Cung cấp secrets cho serverless functions một cách an toàn.
Thực hành:
Cấu hình Auto-Auth với Managed Identities (Azure hoặc GCP):
Tạo Managed Identity trong Azure hoặc GCP.
Cấu hình Vault Agent để sử dụng Managed Identity.
Sử dụng Dynamic Template Rendering:
- Sử dụng các hàm như
getenv
,file
,lookup
.
- Sử dụng các hàm như
Integration với Ansible:
- Sử dụng Ansible để triển khai ứng dụng và cấu hình Vault Agent Templates.
Mini-Project:
Dynamic Microservice Configuration with Vault and Ansible:
Mục tiêu: Sử dụng Vault Agent, Templating và Ansible để tự động cấu hình microservices.
Hướng dẫn:
Lưu trữ cấu hình microservice trong Vault.
Sử dụng Vault Agent Templates để tạo file cấu hình cho microservice.
Sử dụng Ansible để triển khai microservice và cấu hình Vault Agent Templates.
Ngày 16: Vault API (Nâng cao)
Mục tiêu: Làm quen với Vault API và sử dụng nó để tự động hóa các tác vụ quản lý Vault.
Nội dung:
Lý thuyết:
Vault API:
Authentication: Lấy token bằng API.
Secrets Management: Đọc, viết, liệt kê, xóa secrets.
Policies: Tạo, đọc, cập nhật, xóa policies.
Authentication Methods: Enable, disable, configure auth methods.
Audit Logging: Lấy thông tin audit log.
System Operations: Seal, unseal, rekey, rotate.
Vault SDKs:
- Go, Python, Java, Ruby.
API Best Practices:
Error Handling: Xử lý lỗi một cách đúng đắn.
Rate Limiting: Tránh quá tải Vault server.
Idempotency: Đảm bảo các API calls an toàn khi thực hiện nhiều lần.
Thực hành:
Sử dụng Vault API:
Sử dụng
curl
hoặc một HTTP client library để gọi Vault API.Lấy token bằng AppRole.
Tạo, đọc, cập nhật, xóa secrets.
Tạo, đọc, cập nhật, xóa policies.
Sử dụng Vault SDK:
- Sử dụng Vault SDK để viết script Python hoặc Go để tự động hóa các tác vụ.
Mini-Project:
Vault Management Automation:
Mục tiêu: Sử dụng Vault API để tự động hóa các tác vụ quản lý Vault.
Hướng dẫn:
Viết script để tự động tạo và cấu hình các authentication methods và secrets engines.
Viết script để tự động tạo và áp dụng policies.
Viết script để theo dõi trạng thái của Vault server và gửi alerts khi có sự cố.
Ngày 17: Troubleshooting Vault
Mục tiêu: Học cách xác định và khắc phục các sự cố thường gặp trong Vault.
Nội dung:
Lý thuyết:
Common Vault Issues:
Authentication Failures: Kiểm tra cấu hình auth method, policies, user credentials.
Connectivity Issues: Kiểm tra firewall, network configuration, TLS certificates.
Performance Issues: Kiểm tra storage backend, resource utilization, caching.
Data Corruption: Kiểm tra storage backend, thực hiện restore from snapshot.
Vault Unreachable: Kiểm tra Vault server status, cluster membership.
Troubleshooting Tools:
Vault CLI: Sử dụng
vault status
,vault audit
,vault read sys/health
.Vault UI: Sử dụng UI để kiểm tra cấu hình và trạng thái.
Audit Logs: Phân tích audit logs để tìm ra nguyên nhân sự cố.
Telemetry Data: Phân tích metrics để tìm ra bottleneck.
Debugging Techniques:
Enable Debug Logging: Tăng mức độ logging để có thông tin chi tiết hơn.
Use
tcpdump
orwireshark
to capture network traffic.
Thực hành:
Thực hiện các bài tập troubleshooting:
Mô phỏng các sự cố thường gặp (authentication failures, connectivity issues, performance issues) và thực hiện các bước để khắc phục.
Sử dụng Vault CLI, UI, audit logs và telemetry data để tìm ra nguyên nhân sự cố.
Mini-Project:
Vault Incident Response Plan:
Mục tiêu: Xây dựng kế hoạch ứng phó sự cố cho Vault.
Hướng dẫn:
Xác định các sự cố có thể xảy ra.
Xác định các bước cần thực hiện để khắc phục sự cố.
Tạo danh sách liên hệ và communication plan.
Ngày 18: Security Hardening và Compliance
Mục tiêu: Áp dụng các biện pháp bảo mật và tuân thủ để bảo vệ Vault và dữ liệu được quản lý bởi Vault.
Nội dung:
Lý thuyết:
Security Hardening:
Network Segmentation: Hạn chế kết nối mạng đến Vault.
Principle of Least Privilege: Áp dụng policies để hạn chế quyền truy cập.
Regular Security Audits: Kiểm tra và đánh giá cấu hình Vault.
Vulnerability Scanning: Sử dụng các công cụ để quét lỗ hổng bảo mật.
Intrusion Detection and Prevention: Sử dụng các công cụ để phát hiện và ngăn chặn tấn công.
Compliance:
PCI DSS: Payment Card Industry Data Security Standard.
HIPAA: Health Insurance Portability and Accountability Act.
GDPR: General Data Protection Regulation.
SOC 2: System and Organization Controls 2.
Compliance Best Practices:
Data Encryption: Mã hóa dữ liệu at rest và in transit.
Access Control: Kiểm soát truy cập dựa trên vai trò và trách nhiệm.
Audit Logging: Ghi lại mọi hoạt động để kiểm tra và tuân thủ.
Vulnerability Management: Quét lỗ hổng bảo mật và vá lỗi kịp thời.
Thực hành:
Thực hiện các bài tập security hardening:
Cấu hình firewall để hạn chế kết nối mạng đến Vault.
Áp dụng policies để hạn chế quyền truy cập.
Thực hiện vulnerability scanning.
Xây dựng Compliance Documentation:
- Tạo tài liệu mô tả cách Vault giúp tổ chức tuân thủ các tiêu chuẩn bảo mật.
Mini-Project:
Vault Security Audit:
Mục tiêu: Thực hiện security audit cho Vault deployment.
Hướng dẫn:
Kiểm tra cấu hình Vault server.
Kiểm tra policies và authentication methods.
Kiểm tra audit logs và telemetry data.
Đánh giá các rủi ro và đưa ra các khuyến nghị để cải thiện bảo mật.
Ngày 19: Vault và Kubernetes
Mục tiêu: Làm chủ các kỹ thuật triển khai Vault phức tạp hơn trên Kubernetes, bao gồm High Availability và Auto-Unseal.
Nội dung:
Lý thuyết:
Vault HA on Kubernetes:
StatefulSets: Tại sao StatefulSets phù hợp cho Vault.
Storage Considerations: Persistent Volumes, Dynamic Provisioning.
Leader Election: Cách Raft hoạt động trong Kubernetes.
Auto-Unseal on Kubernetes:
Using KMS Providers (AWS KMS, Azure Key Vault, GCP KMS): So sánh, lựa chọn.
Kubernetes Secrets for Unseal Keys: Không khuyến khích, chỉ sử dụng cho mục đích thử nghiệm.
Security Considerations:
Network Policies: Hạn chế kết nối mạng giữa các pods.
Pod Security Policies (PSP) / Pod Security Standards (PSS): Hạn chế các capabilities của containers.
Thực hành:
Deploy Vault HA Cluster on Kubernetes:
Sử dụng Helm chart hoặc YAML manifests.
Cấu hình StatefulSet cho Vault.
Cấu hình Persistent Volumes cho Vault.
Cấu hình Auto-Unseal với AWS KMS:
Tạo KMS key trong AWS.
Cấu hình Vault để sử dụng KMS key.
Configure Network Policies:
- Hạn chế kết nối mạng đến Vault pods.
Mini-Project:
Secure Vault Deployment on Kubernetes:
Mục tiêu: Triển khai Vault cluster trên Kubernetes với cấu hình bảo mật và khả năng chịu lỗi cao.
Hướng dẫn:
Sử dụng Helm chart hoặc YAML manifests.
Cấu hình StatefulSet, Persistent Volumes, Auto-Unseal, Network Policies, Pod Security Standards.
Ngày 20: Vault và Kubernetes (Part 2 - Dynamic Configuration)
Mục tiêu: Tìm hiểu cách cấu hình ứng dụng Kubernetes một cách động bằng Vault và Vault Agent.
Nội dung:
Lý thuyết:
Dynamic Configuration:
Vault Agent Templates: Sử dụng templates để tạo file cấu hình động.
Kubernetes ConfigMaps: Sử dụng ConfigMaps để lưu trữ cấu hình.
Kubernetes Secrets: Sử dụng Secrets để lưu trữ secrets.
Automation:
Helm Hooks: Tự động cập nhật cấu hình khi Helm chart được deploy.
Kubernetes Operators: Tự động quản lý cấu hình ứng dụng.
Best Practices:
Immutable Infrastructure: Không thay đổi cấu hình ứng dụng sau khi deploy.
Declarative Configuration: Sử dụng YAML manifests để khai báo cấu hình ứng dụng.
Thực hành:
Dynamic Configuration with Vault Agent Templates:
Tạo Vault Agent Templates để lấy secrets từ Vault và tạo file cấu hình.
Sử dụng ConfigMaps để lưu trữ file cấu hình.
Cấu hình ứng dụng để đọc file cấu hình từ ConfigMap.
Automate Configuration Updates with Helm Hooks:
- Sử dụng Helm Hooks để tự động cập nhật ConfigMap khi Helm chart được deploy.
Mini-Project:
Dynamic Web Application Configuration:
Mục tiêu: Sử dụng Vault và Vault Agent Templates để cấu hình web application (ví dụ: Nginx) một cách động.
Hướng dẫn:
Lưu trữ cấu hình web application trong Vault.
Sử dụng Vault Agent Templates để tạo file cấu hình Nginx.
Sử dụng ConfigMaps để lưu trữ file cấu hình.
Sử dụng Helm Hooks để tự động cập nhật ConfigMap khi Helm chart được deploy.
Ngày 21: Vault và Cloud (AWS/Azure/GCP)
Mục tiêu: Tìm hiểu về tích hợp Vault với các dịch vụ Cloud (AWS, Azure, GCP) để quản lý credentials và secrets cho cloud resources.
Nội dung:
Lý thuyết:
Cloud Authentication:
IAM Roles (AWS): Cách hoạt động, cấu hình, best practices.
Managed Identities (Azure): Cách hoạt động, cấu hình, best practices.
Service Accounts (GCP): Cách hoạt động, cấu hình, best practices.
Cloud Secrets Engines:
AWS Secrets Engine: Tạo credentials tạm thời cho các dịch vụ AWS.
Azure Secrets Engine: Tạo credentials tạm thời cho các dịch vụ Azure.
GCP Secrets Engine: Tạo credentials tạm thời cho các dịch vụ GCP.
Use Cases:
Securely Accessing Cloud Storage: Tạo credentials để truy cập S3 buckets, Azure Blob Storage, Google Cloud Storage.
Managing Cloud Compute Instances: Tạo credentials để quản lý EC2 instances, Azure Virtual Machines, Google Compute Engine.
Deploying Serverless Functions: Cung cấp credentials cho Lambda functions, Azure Functions, Google Cloud Functions.
Thực hành:
Cấu hình Cloud Authentication:
Create IAM role/Managed Identity/Service Account cho Vault.
Cấu hình Vault để sử dụng Cloud Authentication.
Cấu hình Cloud Secrets Engine:
Tạo role để tạo credentials tạm thời.
Sử dụng credentials để truy cập cloud resources.
Mini-Project:
Secure Serverless Function Deployment:
Mục tiêu: Sử dụng Vault để cung cấp credentials an toàn cho serverless function (ví dụ: AWS Lambda).
Hướng dẫn:
Create IAM role cho Lambda function.
Cấu hình AWS Secrets Engine trong Vault.
Sử dụng Lambda function để lấy credentials từ Vault.
Ngày 22: Vault và Jenkins
Mục tiêu: Nâng cao khả năng tích hợp Vault với Jenkins bằng cách sử dụng Jenkins Pipeline và các kỹ thuật quản lý credentials nâng cao.
Nội dung:
Lý thuyết:
Jenkins Pipeline:
Declarative vs. Scripted Pipelines: So sánh, lựa chọn.
Shared Libraries: Tạo thư viện để tái sử dụng code trong pipeline.
Credentials Management: Secure storage of credentials.
Vault Integration:
Vault Secrets Plugin: Advanced configuration options.
Dynamic Credentials Generation: Tạo credentials động cho các tác vụ.
Secrets as Code: Quản lý secrets trong Vault bằng Jenkins pipeline.
Security Considerations:
Jenkins Agent Security: Hạn chế quyền truy cập của agents.
Vault Policies: Cấp quyền truy cập tối thiểu cho Jenkins.
Thực hành:
Create Jenkins Pipeline:
Sử dụng Declarative hoặc Scripted Pipeline.
Sử dụng Shared Libraries để tái sử dụng code.
Vault Integration:
Sử dụng Vault Secrets Plugin để lấy secrets trong pipeline.
Sử dụng Dynamic Credentials Generation để tạo credentials cho database hoặc cloud services.
Secrets as Code:
- Viết Jenkinsfile để tạo, cập nhật và xóa secrets trong Vault.
Mini-Project:
Automated Infrastructure Deployment with Vault and Jenkins:
Mục tiêu: Sử dụng Jenkins pipeline để tự động triển khai hạ tầng trên cloud (ví dụ: AWS CloudFormation), sử dụng Vault để quản lý credentials.
Hướng dẫn:
Viết CloudFormation template để tạo hạ tầng.
Sử dụng Vault để lưu trữ AWS credentials.
Sử dụng Vault Secrets Plugin để lấy credentials trong Jenkinsfile.
Sử dụng AWS CLI để triển khai CloudFormation template.
Ngày 23: Vault và Monitoring
Mục tiêu: Làm chủ các kỹ thuật giám sát Vault nâng cao để đảm bảo tính ổn định và hiệu suất.
Nội dung:
Lý thuyết:
Monitoring Metrics:
System Metrics: CPU, Memory, Disk, Network.
Vault Metrics: Authentication, Authorization, Secret Engine, Replication, Storage.
Custom Metrics: Tạo metrics tùy chỉnh để theo dõi các khía cạnh cụ thể của ứng dụng.
Monitoring Tools:
Prometheus: Thu thập và lưu trữ metrics.
Grafana: Tạo dashboards để hiển thị metrics.
Alertmanager: Thiết lập alerts dựa trên metrics.
ELK Stack (Elasticsearch, Logstash, Kibana): Thu thập, xử lý và phân tích logs.
Alerting Strategies:
Threshold-Based Alerts: Cảnh báo khi metrics vượt quá ngưỡng.
Anomaly Detection: Cảnh báo khi có hành vi bất thường.
Root Cause Analysis: Xác định nguyên nhân gốc rễ của sự cố.
Thực hành:
Configure Vault to Export Metrics to Prometheus:
- Sử dụng
telemetry
block trong Vault configuration file.
- Sử dụng
Create Grafana Dashboards:
Kết nối Grafana với Prometheus.
Tạo dashboards để hiển thị metrics quan trọng.
Configure Alertmanager:
Thiết lập alerts dựa trên metrics.
Configure notifications (email, Slack, PagerDuty).
Configure Vault to Send Logs to ELK Stack:
Sử dụng
audit
block trong Vault configuration file.Cấu hình Logstash để thu thập và xử lý logs.
Sử dụng Kibana để phân tích logs.
Mini-Project:
Vault Monitoring and Alerting System:
Mục tiêu: Xây dựng hệ thống giám sát và cảnh báo toàn diện cho Vault.
Hướng dẫn:
Cấu hình Prometheus, Grafana, Alertmanager và ELK Stack.
Tạo dashboards và alerts để theo dõi trạng thái và hiệu suất của Vault.
Xây dựng kế hoạch ứng phó sự cố dựa trên alerts.
Subscribe to my newsletter
Read articles from Hải Yến Trịnh directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
