Chuyển đến nội dung chính

第 17 課:轉換與標記化 - 資料保護

Transform Secrets Engine(企業)— 格式保留加密 (FPE)、屏蔽、標記化。 PCI DSS 合規性、PII 保護。比較運輸與轉換。

<定義> <線性漸變 id="bg-2276" x1="0%" y1="0%" x2="100%" y2="100%">

<矩形寬度=“1200”高度=“340”rx=“12”填滿=“url(#bg-2276)”/>

<圓cx =“1070”cy =“150”r =“23”填入=“#fb923c”不透明度=“0.05”/> <圓cx =“750”cy =“80”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“750”cy =“108”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“750”cy =“136”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“750”cy =“164”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“778”cy =“80”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“778”cy =“108”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“778”cy =“136”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“778”cy =“164”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“806”cy =“80”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“806”cy =“108”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“806”cy =“136”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“806”cy =“164”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“834”cy =“80”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“834”cy =“108”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“834”cy =“136”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“834”cy =“164”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“862”cy =“80”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“862”cy =“108”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“862”cy =“136”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“862”cy =“164”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“890”cy =“80”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“890”cy =“108”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“890”cy =“136”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <圓cx =“890”cy =“164”r =“1.5”填入=“#fb923c”不透明度=“0.15”/> <多邊形點=「939.6410161513776,85 939.6410161513776,125 905,145 870.3589838486224,125 870.35898389838486224,125 870.35898389838486224,125 870.358983. 905,65" 填色 = "無" 筆畫 = "#fb923c" 筆畫寬度 = "1" 不透明度 = = "0.12"/>

<矩形x =“60”y =“50”寬度=“4”高度=“60”rx =“2”填滿=“#fb923c”/> <矩形x =“80”y =“50”寬度=“121”高度=“28”rx =“14”填滿=“#fb923c”不透明度=“0.15”/> 🔒 DevSecOps — 第 17 堂課

第 17 課:轉換與標記化 - 資料 保護

HashiCorp Vault 從基礎到進階

第 4 部分:進階機密引擎

xdev.asia

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 開發自訂外掛程式。