Vault lưu proxy credentials: KV v2, quyền đọc và cache an toàn
Vault lưu proxy credentials là cách đặt user và mật khẩu proxy vào kho bí mật HashiCorp Vault thay vì tệp cấu hình hay biến môi trường rải rác. Mỗi ứng dụng nhận một token chỉ đọc được đúng chỗ nó cần. Cách này giải được chuyện lộ mật khẩu trong repo và chuyện đổi mật khẩu phải sửa hàng chục máy. ProxyVN dựng lab với thư viện hvac đọc bí mật theo định dạng API KV v2, chạy 150 request qua proxy có xác thực, đổi mật khẩu giữa chừng và kiểm log để thấy chỗ nào còn rò.
Vault lưu proxy credentials: tác vụ cụ thể và ranh giới với bài đã có
Bài này giải một việc: crawler cần mật khẩu proxy để chạy, nhưng mật khẩu không được nằm trong mã, trong repo hay trong log. Vault là nơi giữ mật khẩu, ứng dụng hỏi Vault khi khởi động hoặc khi cần, và chỉ ứng dụng được phép mới hỏi được.
Ba loại bí mật trong bài

Ba loại bí mật
Loại thứ nhất là thông tin proxy do nhà cung cấp cấp: địa chỉ, cổng, user, mật khẩu. Đây là thứ cần bảo vệ. Loại thứ hai là token Vault của ứng dụng, chìa khóa để ứng dụng đọc loại thứ nhất. Loại thứ ba là bản sao thông tin proxy trong bộ nhớ ứng dụng sau khi đọc.
Ba loại này có vòng đời khác nhau. Thông tin proxy đổi khi nhà cung cấp đổi hoặc khi anh em xoay mật khẩu. Token Vault có thời hạn và có thể thu hồi. Bản sao trong bộ nhớ sống theo tiến trình. Nhầm lẫn giữa ba thứ là nguồn gốc của phần lớn lỗi khi triển khai.
Vì sao không để mật khẩu trong biến môi trường
Biến môi trường là bước tiến so với ghi thẳng trong mã, nhưng vẫn có giới hạn. Biến môi trường hiện trong danh sách tiến trình với một số công cụ, bị in ra khi ứng dụng lỗi và in toàn bộ môi trường, và bị chép theo khi tạo bản sao máy. Đổi mật khẩu phải sửa từng máy rồi khởi động lại.
Với một hai máy, biến môi trường đủ dùng. Khi có hàng chục worker trên nhiều máy, mỗi máy giữ một bản sao mật khẩu, việc xoay mật khẩu trở thành chiến dịch. Vault gom bản gốc về một chỗ, các máy chỉ giữ quyền đọc.
Vault không thay proxy, proxy không thay Vault
Vault không làm gì với lưu lượng mạng. Nó chỉ trả lại chuỗi bí mật cho ứng dụng có quyền. Ứng dụng tự ghép chuỗi đó thành URL proxy và tự gửi request qua proxy. Proxy vẫn kiểm mật khẩu như bình thường.
Vault quyết định ai được biết mật khẩu proxy, proxy quyết định ai được đi qua. Hai lớp này độc lập. Lộ token Vault của ứng dụng là lộ mật khẩu proxy, nên token cũng phải được giữ kỹ như mật khẩu.
Ranh giới với bài đã có
Bài proxy Apache Airflow và bài API gateway là gì có nhắc kho bí mật như một lựa chọn, nhưng chưa đi vào cấu hình. Bài xác thực proxy bằng IP whitelist hay user password so hai cách xác thực với nhà cung cấp. Bài này đi vào Vault: đường dẫn, policy, cách đọc trong Python, cache và xoay mật khẩu.
Lưu và đọc proxy credentials qua KV v2 với quyền tối thiểu khi dùng Vault lưu proxy credentials
Phần này đi qua cách tổ chức đường dẫn bí mật, cách viết policy chỉ đọc và cách hiểu phiên bản trong KV v2.
KV v2 là gì
KV là bộ máy bí mật dạng khóa và giá trị của Vault. Phiên bản 2 giữ lịch sử: mỗi lần ghi tạo một phiên bản mới, phiên bản cũ vẫn đọc được cho tới khi bị xóa. Tài liệu KV v2 mô tả cách bật và dùng bộ máy này.
Theo tài liệu API KV v2, mặc định Vault giữ 10 phiên bản cho mỗi khóa nếu max_versions bằng 0 hoặc không đặt. Đọc bằng GET tới đường dẫn có chữ data chen giữa, ví dụ /v1/secret/data/proxy/vn. Ghi bằng POST tới cùng đường dẫn.
Tổ chức đường dẫn theo nhóm proxy
Mỗi nhóm proxy một đường dẫn: secret/proxy/vn cho proxy Việt Nam, secret/proxy/us cho proxy Mỹ, secret/proxy/rotating cho proxy xoay. Mỗi đường dẫn chứa các trường host, port, user, password. Cách này cho phép cấp quyền theo nhóm.
Không gom mọi proxy vào một đường dẫn. Ứng dụng chỉ cần proxy Việt Nam không có lý do đọc được proxy Mỹ. Gom chung thì policy không tách được, lộ một token là lộ hết.
Policy chỉ đọc một đường dẫn
path "secret/data/proxy/vn" {
capabilities = ["read"]
}
Tài liệu policy của Vault ghi policy mặc định là từ chối, policy rỗng không cho quyền gì. Policy trên chỉ cho đọc đúng một đường dẫn. Token gắn policy này không ghi được, không đọc được đường dẫn khác, không liệt kê được các khóa.
Chú ý chữ data trong đường dẫn policy. Với KV v2, policy phải viết theo đường dẫn API thật có chữ data, không phải đường dẫn ngắn mà lệnh vault kv dùng. Viết thiếu chữ data là lỗi hay gặp khiến ứng dụng bị từ chối dù policy trông đúng.
Token và thời hạn
Token Vault có thời hạn sống. Token của ứng dụng nên ngắn, ví dụ vài giờ, và được gia hạn hoặc cấp lại tự động khi ứng dụng còn chạy. Khi ứng dụng dừng, token hết hạn theo, không để lại chìa khóa sống lâu trên máy.
Bí mật trong KV không có thời hạn riêng như token. Mật khẩu proxy chỉ đổi khi người vận hành ghi phiên bản mới. Ứng dụng vì vậy cần cách tự phát hiện mật khẩu đã đổi, phần lab bên dưới đi vào chuyện này.
Policy cho người vận hành
Người cập nhật mật khẩu proxy cần quyền create và update trên đường dẫn đó, không cần read. Tách quyền ghi khỏi quyền đọc giúp người vận hành đổi được mật khẩu mà không xem được mật khẩu cũ. Trong lab, token ops-writer chỉ có create và update.
Phiên bản và xoay mật khẩu
Khi nhà cung cấp đổi mật khẩu, người vận hành ghi bản mới. KV v2 tạo phiên bản 2, giữ phiên bản 1. Ứng dụng đọc không chỉ định phiên bản sẽ nhận bản mới nhất. Nếu bản mới sai, có thể đọc lại phiên bản cũ để so, hoặc khôi phục.
Phần metadata trả về kèm số phiên bản và thời điểm tạo. Ứng dụng nên ghi số phiên bản vào log, không ghi mật khẩu. Khi có lỗi 407, biết ứng dụng đang dùng phiên bản nào giúp chẩn đoán nhanh.
Chuẩn bị phiên bản, token và môi trường thử khi dùng Vault lưu proxy credentials
Lab chạy ngày 29/10/2026 trên Windows 10, Python 3.12.10, hvac 2.4.0, requests 2.34.2.
Không chạy Vault thật
Chế độ an toàn của môi trường lab chặn chạy tệp thực thi tải từ Internet, nên lab không chạy được máy chủ Vault, kể cả chế độ dev. Thay vào đó, ProxyVN viết một máy chủ Python nhỏ ở 127.0.0.1 cổng 9580 mô phỏng hình dạng API KV v2 theo tài liệu. Máy chủ này có đường dẫn /v1/secret/data/..., header X-Vault-Token, phản hồi có data.data và data.metadata.version, từ chối bằng mã 403.
Đây là giới hạn chính của bài. Máy chủ mô phỏng kiểm được mã phía ứng dụng: cách hvac gọi API, cách đọc kết quả, cách xử lý lỗi quyền, cách cache và xoay. Nó không kiểm được Vault thật: cơ chế seal, xác thực AppRole, thời hạn token, nhật ký kiểm toán thật.
Ba token mô phỏng
Token root-lab có mọi quyền, chỉ dùng để dựng. Token ops-writer có create và update trên secret/data/proxy/vn. Token app-readonly chỉ có read trên secret/data/proxy/vn. Mọi đường dẫn khác bị từ chối, đúng nguyên tắc mặc định từ chối.
Proxy lab có xác thực
Proxy HTTP lab chạy ở cổng 9581, yêu cầu Basic auth với user vnuser. Pha một mật khẩu là Pw1#lab@2026, pha hai đổi thành Pw2%new:2026. Cả hai mật khẩu cố tình chứa ký tự đặc biệt # @ % : để kiểm việc mã hóa khi ghép vào URL.
Trang đích lab đi kèm proxy, tên site.test, trả 200 cho mọi request. Proxy sai mật khẩu trả 407.
Ghi log có bộ lọc che mật khẩu
Ứng dụng ghi một dòng log cho mỗi request, gồm số thứ tự, URL proxy, mã trạng thái và số phiên bản bí mật. Bộ lọc log thay phần mật khẩu trong URL bằng dấu sao. Lab chạy bộ lọc hai lần: bản đầu viết sai, bản sau sửa lại.
Cấu hình tối thiểu và phạm vi từng thiết lập khi dùng Vault lưu proxy credentials
Phần này đưa mã cốt lõi của ứng dụng: đọc bí mật, ghép URL, cache, thử lại khi 407.
Vì sao chọn hvac
hvac là thư viện Python phổ biến để gọi API Vault, bọc các đường dẫn KV v2 thành hàm như create_or_update_secret và read_secret_version. Nó tự đặt header X-Vault-Token và chuyển mã lỗi HTTP thành ngoại lệ có tên. Dùng thư viện thay vì tự gọi requests giúp mã gọn và ít sai đường dẫn.
Khi dùng hvac với máy chủ mô phỏng, mọi lời gọi đi đúng đường dẫn tài liệu ghi, nên máy chủ mô phỏng cũng kiểm luôn việc thư viện gọi đúng API. Nếu đường dẫn sai, máy chủ trả 403 và lab sẽ thấy ngay.
Ghi bí mật bằng token vận hành
import hvac
ops = hvac.Client(url="http://127.0.0.1:9580", token="ops-writer")
ops.secrets.kv.v2.create_or_update_secret(
path="proxy/vn", mount_point="secret",
secret={"host": "127.0.0.1", "port": "9581", "user": "vnuser", "password": "MAT_KHAU"})
Trên Vault thật, token vận hành lấy qua phương thức đăng nhập của người, không ghi cứng trong mã. Mã trên chỉ để dựng lab.
Đọc bí mật và ghép URL proxy
from urllib.parse import quote
app = hvac.Client(url="http://127.0.0.1:9580", token="app-readonly")
CACHE = {"t": 0, "s": None, "ver": None}
def get_proxy(force=False, ttl=300):
if force or not CACHE["s"] or time.time() - CACHE["t"] > ttl:
r = app.secrets.kv.v2.read_secret_version(
path="proxy/vn", mount_point="secret", raise_on_deleted_version=True)
CACHE.update(t=time.time(), s=r["data"]["data"], ver=r["data"]["metadata"]["version"])
s = CACHE["s"]
u = f"http://{quote(s['user'], safe='')}:{quote(s['password'], safe='')}@{s['host']}:{s['port']}"
return {"http": u, "https": u}
Hàm quote với safe rỗng mã hóa mọi ký tự đặc biệt trong user và mật khẩu. Mật khẩu Pw1#lab@2026 thành Pw1%23lab%402026 trong URL. Thiếu bước này, dấu # cắt URL và dấu @ làm thư viện hiểu sai tên máy. Bài định dạng proxy giải thích chuyện ký tự đặc biệt trong URL proxy.
Tham số raise_on_deleted_version bằng True để hvac báo lỗi rõ khi phiên bản mới nhất đã bị xóa, thay vì trả dữ liệu rỗng.
Thử lại khi proxy trả 407
def fetch(i):
for attempt in range(2):
px = get_proxy(force=attempt == 1)
r = requests.get("http://site.test:9583/p", proxies=px, timeout=5)
log.info("req %d qua %s -> %d (secret v%s)", i, px["http"], r.status_code, CACHE["ver"])
if r.status_code != 407:
return r.status_code
return r.status_code
Lần đầu dùng bí mật trong cache. Nếu proxy trả 407, lần hai buộc đọc lại từ Vault. Chỉ thử lại đúng một lần để không gửi hàng loạt request sai mật khẩu tới proxy, việc có thể làm nhà cung cấp khóa tài khoản.
Xử lý khi Vault không trả lời
Vault là một dịch vụ mạng và có thể tạm không trả lời. Ứng dụng có cache vẫn chạy tiếp với bí mật đã có cho tới khi cache hết hạn. Nên cho phép dùng cache cũ quá hạn trong một khoảng nhất định khi Vault lỗi, thay vì dừng crawler ngay.
Ngược lại, khi khởi động lần đầu mà không đọc được Vault, ứng dụng nên dừng với thông báo rõ. Chạy tiếp không có mật khẩu chỉ sinh ra hàng loạt 407 và có thể làm nhà cung cấp tạm khóa tài khoản.
Nếu máy chạy crawler đi Internet qua proxy công ty, thêm địa chỉ Vault vào NO_PROXY. Không thì request tới Vault có thể bị gửi qua proxy và thất bại. Bài no_proxy là gì có cách đặt.
Bảng thiết lập
Thiết lập |
Giá trị lab |
Lý do |
|---|---|---|
TTL cache |
300 giây |
Giảm số lần gọi Vault |
Đọc lại khi 407 |
Một lần |
Bắt kịp mật khẩu mới mà không dội proxy |
Policy ứng dụng |
read trên một đường dẫn |
Quyền tối thiểu |
Policy vận hành |
create, update |
Đổi được, không xem được |
Ghi log |
Số phiên bản, không ghi mật khẩu |
Chẩn đoán mà không lộ |
Chạy đối chứng, đọc log và kiểm output khi dùng Vault lưu proxy credentials
Lab chạy ba nhóm thử: kiểm quyền, chạy 150 request có xoay mật khẩu, và kiểm log.
Kiểm quyền
Thao tác |
Token |
Kết quả |
|---|---|---|
Ghi bí mật proxy/vn |
ops-writer |
Thành công, phiên bản 1 |
Ghi bí mật proxy/vn |
app-readonly |
403 Forbidden, permission denied |
Đọc proxy/us |
app-readonly |
403 Forbidden, permission denied |
Đọc proxy/vn không có token |
Rỗng |
403 Forbidden, permission denied |
Đọc proxy/vn |
app-readonly |
Thành công |
hvac chuyển mã 403 thành ngoại lệ Forbidden kèm thông báo và URL đã gọi. Mã ứng dụng nên bắt ngoại lệ này riêng, vì nó nghĩa là cấu hình quyền sai, không phải lỗi tạm thời. Thử lại không giúp gì.
Trên Vault thật, request thiếu token có thể nhận thông báo khác. Bảng trên phản ánh máy chủ mô phỏng.
150 request và một lần xoay mật khẩu

150 request, 2 lần gọi kho
Pha |
Số request |
Thành công 200 |
Lần gọi Vault cộng dồn |
Phiên bản bí mật cuối |
|---|---|---|---|---|
Pha 1, mật khẩu 1 |
100 |
100 |
1 |
1 |
Đổi mật khẩu ở Vault và ở proxy |
Không |
Không |
Không |
Ghi phiên bản 2 |
Pha 2, mật khẩu 2 |
50 |
50 |
2 |
2 |
Pha một gọi Vault đúng một lần cho 100 request nhờ cache. Giữa hai pha, người vận hành ghi mật khẩu mới vào Vault, proxy lab khởi động lại với mật khẩu mới.
Request đầu của pha hai dùng mật khẩu cũ trong cache, proxy trả 407. Hàm fetch đọc lại Vault, nhận phiên bản 2, gửi lại và nhận 200. Log có đúng một dòng 407. Tổng cộng 150 request chỉ gọi Vault hai lần, và ứng dụng tự bắt kịp mật khẩu mới mà không cần khởi động lại.
Vì sao 407 chỉ xảy ra một lần
Sau request lỗi đầu tiên, hàm get_proxy cập nhật cache bằng phiên bản 2. Bốn mươi chín request còn lại của pha hai đọc từ cache mới, đều đúng mật khẩu. Nếu ứng dụng có nhiều luồng cùng chạy, mỗi luồng có thể gặp một lần 407 trước khi cache chung được cập nhật, nên số dòng 407 tối đa bằng số luồng.
Với nhiều tiến trình riêng, mỗi tiến trình có cache riêng và tự đọc lại. Số lần gọi Vault khi xoay bằng số tiến trình, vẫn rất nhỏ so với số request.
Nhật ký phía Vault
Máy chủ mô phỏng ghi mọi lần đọc. Có bốn lần đọc: một lần đọc proxy/us bị từ chối, một lần đọc không token bị từ chối, và hai lần đọc proxy/vn thành công của cache. Nhật ký chỉ ghi đường dẫn và việc có token hay không, không ghi bí mật.
Vault thật có thiết bị kiểm toán ghi mọi request với dữ liệu nhạy cảm được băm. Đọc nhật ký này cho biết ứng dụng nào đọc bí mật nào, bao nhiêu lần. Số lần đọc tăng vọt là dấu hiệu cache hỏng hoặc token bị dùng ngoài ứng dụng.
Phát hiện quan trọng: bộ lọc log viết sai

Bộ lọc log viết sai
Bản đầu của bộ lọc log chỉ thay chuỗi trong thuộc tính msg của bản ghi log. Nhưng ứng dụng ghi log theo kiểu định dạng có tham số, nên msg chỉ là khuôn "req %d qua %s", còn URL proxy nằm trong args. Bộ lọc không thấy URL, không che gì.
Kết quả: tệp log bản đầu có 101 dòng chứa mật khẩu dạng Pw1%23lab%402026. Đây là mật khẩu thật của proxy ở dạng mã hóa URL, giải ngược ra ngay. Mọi công sức đặt mật khẩu vào Vault mất hết ở bước ghi log.
Bản sửa gọi getMessage để ghép khuôn với tham số trước, che mật khẩu trên chuỗi đã ghép, rồi xóa args. Chạy lại cả 150 request, tệp log có 151 dòng, không dòng nào chứa mật khẩu cũ hay mới. Dòng mẫu: req 0 qua http://vnuser:***@127.0.0.1:9581 -> 200 (secret v1).
Lưu bí mật trong Vault mà ghi URL proxy ra log là lộ ở chỗ khác. Kiểm log bằng cách tìm chính mật khẩu thử, như lab làm, là cách duy nhất để chắc bộ lọc chạy đúng.
Gỡ cấu hình thử, quản lý bí mật và checklist khi dùng Vault lưu proxy credentials

Checklist Vault proxy
Phần này đưa cấu hình lab sang thật và chỉ ra những chỗ dễ sai.
Token của ứng dụng lấy từ đâu
Lab ghi token trong mã cho gọn. Trên thật, ứng dụng nên đăng nhập Vault bằng phương thức hợp với môi trường: AppRole cho máy chủ thường, Kubernetes auth cho pod, cloud auth cho máy ảo đám mây. Token nhận được có thời hạn và chỉ mang policy chỉ đọc.
Đừng đổi vấn đề giấu mật khẩu proxy thành vấn đề giấu token Vault trong tệp cấu hình. Nếu phải lưu thông tin đăng nhập Vault trên đĩa, giới hạn quyền đọc tệp và dùng loại thông tin dùng một lần khi có thể.
Ứng dụng nhiều luồng dùng chung cache
Khi crawler chạy nhiều luồng, cache cần khóa để hai luồng không cùng gọi Vault khi cache hết hạn. Một khóa đơn giản quanh bước đọc là đủ: luồng đầu tiên đọc và cập nhật, các luồng sau thấy cache mới và dùng luôn. Không có khóa, khi xoay mật khẩu có thể có hàng chục lần gọi Vault cùng lúc.
Cache bao lâu
TTL cache là đánh đổi giữa số lần gọi Vault và thời gian bắt kịp mật khẩu mới. Với cơ chế đọc lại khi 407 như lab, TTL dài cũng không sao vì ứng dụng tự đọc lại khi mật khẩu sai. Năm tới mười lăm phút là mức hợp lý cho crawler.
Không ghi cache ra đĩa. Bản sao mật khẩu trong tệp tạm là một nơi lộ mới. Cũng đừng đưa đối tượng cache vào thông báo lỗi hay báo cáo gửi đi, vì nó chứa mật khẩu ở dạng rõ. Cache trong bộ nhớ chết theo tiến trình, đúng như mong muốn.
Thứ tự xoay mật khẩu
Khi đổi mật khẩu với nhà cung cấp, thứ tự an toàn là: ghi mật khẩu mới vào Vault, đổi mật khẩu ở nhà cung cấp, để ứng dụng tự đọc lại khi gặp 407. Nếu nhà cung cấp cho phép hai mật khẩu song song trong thời gian chuyển, càng ít lỗi hơn.
Làm ngược, đổi ở nhà cung cấp trước, thì trong khoảng chưa ghi vào Vault mọi ứng dụng đều nhận 407 và đọc lại Vault vẫn ra mật khẩu cũ. Bài sửa lỗi 407 có thêm nguyên nhân của mã này.
Vault Agent và sidecar
Thay vì ứng dụng tự gọi Vault, có thể chạy Vault Agent cạnh ứng dụng. Agent tự đăng nhập, tự gia hạn token và ghi bí mật ra tệp mẫu cho ứng dụng đọc. Cách này hợp với ứng dụng không muốn phụ thuộc thư viện Vault.
Đánh đổi là bí mật nằm trên đĩa dưới dạng tệp. Tệp phải được giới hạn quyền đọc và nằm trên ổ trong bộ nhớ nếu có thể. Với crawler Python, gọi trực tiếp bằng hvac như lab thường đơn giản hơn.
Giữ phiên bản bao nhiêu
Mặc định 10 phiên bản là đủ cho proxy. Phiên bản cũ có ích khi mật khẩu mới ghi sai, nhưng cũng là bản sao mật khẩu cũ còn nằm trong kho. Sau khi chắc mật khẩu cũ đã hết hiệu lực ở nhà cung cấp, có thể hủy các phiên bản cũ.
Kiểm log định kỳ, không chỉ một lần
Bộ lọc log đúng hôm nay có thể bị vô hiệu ngày mai khi có người thêm logger mới, đổi định dạng log hoặc bật mức gỡ lỗi của thư viện HTTP. Một bước kiểm tự động chạy sau mỗi lần triển khai là đủ: gửi vài request bằng mật khẩu thử, rồi tìm mật khẩu thử trong mọi tệp log.
Nếu tìm thấy, coi như lỗi chặn triển khai. Bước này rẻ và bắt đúng loại lỗi lab đã gặp. Kết hợp thêm quét log bằng rule bí mật proxy như Gitleaks để bắt cả trường hợp mật khẩu thật lọt vào.
Thư viện HTTP ở mức gỡ lỗi là nguồn lộ phổ biến khác. urllib3 ở mức DEBUG in dòng kết nối tới proxy, một số thư viện in cả header. Giữ các logger này ở mức WARNING khi chạy thật, và đặt bộ lọc ở handler gốc để bắt cả log từ thư viện.
Giới hạn suy luận của bài
Lab dùng máy chủ mô phỏng API KV v2, không phải Vault thật. Hình dạng request và phản hồi theo tài liệu ngày 29/10/2026, nhưng thông báo lỗi, xử lý token thiếu, thời hạn token, seal và kiểm toán chưa được kiểm trên Vault thật. Các phương thức đăng nhập AppRole hay Kubernetes chỉ mô tả theo tài liệu.
Phát hiện về bộ lọc log là kết quả thật của mã Python, không phụ thuộc Vault. Nó đúng cho mọi ứng dụng ghi log theo kiểu có tham số.
Checklist Vault lưu proxy credentials
- Một đường dẫn KV v2 cho mỗi nhóm proxy.
- Policy ứng dụng chỉ read trên đúng đường dẫn, nhớ chữ data.
- Policy vận hành chỉ create và update.
- Mã hóa user và mật khẩu bằng quote khi ghép URL.
- Cache trong bộ nhớ, đọc lại một lần khi 407.
- Ghi số phiên bản bí mật vào log, không ghi mật khẩu.
- Kiểm bộ lọc log bằng cách tìm chính mật khẩu thử trong tệp log.
- Xoay mật khẩu theo thứ tự Vault trước, nhà cung cấp sau.
Với crawler đọc proxy từ Vault, nên chọn nhà cung cấp cho đổi mật khẩu nhanh và hỗ trợ xác thực theo IP làm lớp dự phòng. ProxyVN có proxy dân cư tĩnh, datacenter, 4G và proxy xoay qua HTTP hoặc SOCKS5. Anh em có thể mua proxy tại trang chủ ProxyVN rồi ghi thông tin vào một đường dẫn KV v2 riêng cho từng nhóm.
Câu hỏi thường gặp về Vault lưu proxy credentials
Có cần Vault nếu chỉ có một máy chạy crawler?
Không bắt buộc. Một máy có thể dùng biến môi trường từ trình quản lý dịch vụ. Vault có ích khi nhiều máy, nhiều ứng dụng, nhiều người cùng cần mật khẩu proxy, và khi cần biết ai đọc lúc nào.
Vì sao không dùng KV v1?
KV v1 không giữ phiên bản. Khi ghi đè mật khẩu sai, không có bản cũ để khôi phục. KV v2 phù hợp hơn cho thông tin hay đổi như mật khẩu proxy.
Có nên lưu cả danh sách proxy xoay trong một khóa?
Được, nếu cả danh sách luôn dùng chung. Lưu dạng một trường chứa danh sách hoặc nhiều khóa đánh số. Giữ nguyên tắc mỗi nhóm một đường dẫn để cấp quyền riêng.
Proxy xác thực theo IP có cần Vault không?
Ít cần hơn, vì không có mật khẩu để giữ. Nhưng danh sách proxy, cổng và cấu hình vẫn có thể đặt trong Vault để quản lý một chỗ, chỉ là mức nhạy cảm thấp hơn.
hvac có tự cache không?
Không. Mỗi lần gọi read_secret_version là một request tới Vault. Cache là việc của ứng dụng, như lab làm.
Ứng dụng Node hay Go có làm tương tự được không?
Được. Vault có API HTTP, mọi ngôn ngữ đều gọi được, và có thư viện chính thức hoặc cộng đồng cho nhiều ngôn ngữ. Nguyên tắc cache, đọc lại khi 407 và che log giữ nguyên.
Token ứng dụng bị lộ thì làm gì?
Thu hồi token trên Vault, đổi mật khẩu proxy vì có thể đã bị đọc, kiểm nhật ký kiểm toán xem token đã đọc những gì.
Vault lưu proxy credentials và những điều cần nhớ
Vault lưu proxy credentials giữ mật khẩu proxy ở một chỗ, cấp quyền đọc theo đường dẫn và cho phép xoay mà không sửa máy. Lab cho thấy 150 request chỉ gọi kho bí mật hai lần, tự bắt kịp mật khẩu mới sau một lần 407, nhưng bộ lọc log viết sai đã làm lộ mật khẩu ở 101 dòng. Kiểm log bằng chính mật khẩu thử. Cần proxy dễ đổi mật khẩu khi triển khai Vault lưu proxy credentials, liên hệ Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam.