<矩形寬度=“1200”高度=“340”rx=“12”填滿=“url(#bg-2276)”/>
<矩形x =“60”y =“50”寬度=“4”高度=“60”rx =“2”填滿=“#fb923c”/>
<矩形x =“80”y =“50”寬度=“121”高度=“28”rx =“14”填滿=“#fb923c”不透明度=“0.15”/>
1.轉換秘密引擎概論
Transform Secrets Engine(企業版)提供先進的資料保護機制,允許敏感資料受到保護,同時保留原始格式 - 與 Transit Engine 不同,Transit Engine 以完全不同的格式傳回密文。
三種類型的變換
<表> <標題>
類型描述可逆用例 <正文> FPE格式保留加密是信用卡、SSN — 保持原始格式 屏蔽用字元屏蔽資料否顯示「****1234」 令牌化用隨機令牌替換是(查找)PCI DSS,取消範圍環境2.格式保留加密(FPE)
FPE 對資料進行加密,但保留原始格式。例如,16 位信用卡號被編碼為 16 位其他數字。這使得遺留系統無需更改架構即可繼續運作。
設定 FPE
# 啟用轉換秘密引擎
vault secrets enable transform
# Tạo 字母表 (tập ký tự cho phép)
# 內建:內建/數字、內建/字母數字下、內建/字母數字上
# Tạo 模板 cho 信用卡
vault write transform/template/credit-card-tmpl \
類型=正規表示式 \
模式='(\d{4})-(\d{4})-(\d{4})-(\d{4})' \
字母=內建/數字 \
編碼格式='$1-$2-$3-$4' \
解碼格式='$1-$2-$3-$4'
# Tạo 變換
vault write transform/transformations/fpe/credit-card \
範本=信用卡-tmpl \
Tweak_source=內部\
allowed_roles=付款
#陶角色
vault write transform/role/payments \
轉換=信用卡
使用 FPE
# 編碼(加密) vault write transform/encode/payments \ 值=“4111-1111-1111-1111”\ 轉型=信用卡 # 編碼值:7492-8372-1938-4726解碼(解密)
vault write transform/decode/payments
值=“7492-8372-1938-4726”
轉型=信用卡解碼值:4111-1111-1111-1111
批次操作
vault write transform/encode/payments
批次輸入='[ {"value": "4111-1111-1111-1111", "transformation": "信用卡"}, {“值”:“5500-0000-0000-0004”,“轉換”:“信用卡”} ]'
FPE cho SSN/CCCD
# 範本 cho SSN (xxx-xx-xxxx)
vault write transform/template/ssn-tmpl \
類型=正規表示式 \
模式='(\d{3})-(\d{2})-(\d{4})' \
字母=內建/數字
# 模板 cho CCCD Việt Nam (12 chữ số)
vault write transform/template/cccd-tmpl \
類型=正規表示式 \
模式='(\d{12})' \
字母=內建/數字
vault write transform/transformations/fpe/cccd \
模板=cccd-tmpl \
Tweak_source=內部\
allowed_roles=患者數據
3.遮蔽
用替換字元屏蔽資料 - 無法反轉。適合在 UI、日誌、報告上顯示。
# Tạo 遮罩轉換
vault write transform/transformations/masking/card-mask \
範本=信用卡-tmpl \
masking_character="#" \
allowed_roles=顯示
vault write transform/role/display \
轉換=卡片掩碼
# 面膜
vault write transform/encode/display \
值=“4111-1111-1111-1111”\
變換=卡片掩碼
# 編碼值:####-####-####-1111
4.代幣化
令牌化使用隨機令牌替換敏感數據,並將映射儲存在單獨的儲存中。代幣與原始資料沒有數學關係→比FPE更安全。
令牌化與 FPE
<表> <標題>
標準FPE標記化 <正文> 保留原始格式是可選 可逆是(透過密鑰)是(透過查找儲存) 需要外部儲存否是(內部或外部) PCI DSS 取消範圍否(仍需要密鑰管理)是(沒有密鑰的環境) 效能快速(加密操作)較慢(儲存查找)# Tạo 標記化儲存(內部)
vault write transform/stores/internal-store \
類型=內部
# Tạo 標記化轉換
vault write transform/transformations/tokenization/card-token \
allowed_roles=標記化角色 \
商店=內部商店\
最大生存時間=8760h
vault write transform/role/tokenize-role \
轉換=卡令牌
# 標記化
vault write transform/encode/tokenize-role \
值=“4111111111111111”\
轉換=卡令牌
# 編碼值:Q4hx8AZDhk3jfn9876XYZ123...
# 去代幣化
vault write transform/decode/tokenize-role \
值=“Q4hx8AZDhk3jfn9876XYZ123...”\
轉換=卡令牌
# 解碼值:4111111111111111
# Kiểm tra 代幣元數據
vault write transform/tokeninfo/tokenize-role \
值=“Q4hx8AZDhk3jfn9876XYZ123...”\
轉換=卡令牌
5。 Transit 與 Transform — 何時使用哪一個?
<表> <標題> 條件傳送轉換 <正文> 許可證社區企業 輸出格式Base64密文保留原始格式(FPE)或令牌 架構變更需要更改列類型無需更改 主要用例靜態加密PCI DSS、PII 保護 批量性能非常好良好(FPE),一般(通證化) 密鑰輪換是(重新包裝)是實際範例
中轉:加密資料庫中的電子郵件、地址、醫療資料→長密文,需要解密才能使用
轉換 FPE:對信用卡號進行編碼 → 舊版計費系統仍可處理 16 位數格式
轉變令牌化:將信用卡替換為令牌→完全脫離 PCI 範圍的開發/測試環境
轉換屏蔽:在 UI 上顯示 ****1234 → 無法恢復原始資料
6。與資料庫視圖整合
-- PostgreSQL 視圖 Vault 轉換
-- 應用程式 Vault API 並解碼 khi cần
-- 表 gốc lưu 標記化數據
建立表訂單(
id 串行主鍵,
客戶名稱文本,
card_token TEXT, -- 標記化值
card_last4 TEXT, -- 屏蔽值cho顯示
金額 DECIMAL(10,2),
建立時間為 TIMESTAMPTZ 預設值 NOW()
);
-- 申請流程:
-- 1. 用戶nhập卡號
-- 2. App gửi đến Vault Transform → nhận token + masked
-- 3. Lưu token vào card_token, masked vào card_last4
-- 4. Khi cần 充值 → 應用程式 gửi 代幣 đến Vault → nhận 卡號 gốc
-- 5. 儲值卡透過明文存儲
7.摘要
FPE — 保留格式的編碼,與舊系統相容
屏蔽 - 屏蔽數據,不可逆,用於 UI/日誌
令牌化 - 替換為隨機令牌,取消環境範圍
Transit — 基本加密,社群版
轉型 — 進階資料保護,企業
下一篇文章將探討 KMIP、Consul、Nomad Secrets Engines 以及如何為 Vault 開發自訂外掛程式。