<矩形寬度=“1200”高度=“340”rx=“12”填滿=“url(#bg-7946)”/>
<矩形x =“60”y =“50”寬度=“4”高度=“60”rx =“2”填滿=“#2dd4bf”/>
<矩形x =“80”y =“50”寬度=“121”高度=“28”rx =“14”填滿=“#2dd4bf”不透明度=“0.15”/>
1.身分秘密引擎
身分秘密引擎是 Vault 的內部元件,自動啟用且無法停用。它管理身份 - 將多個身份驗證方法身份組合到一個統一的視圖中。
待解決的問題
使用者可以透過多種不同的身份驗證方法進行身份驗證:
使用 CLI 時透過 LDAP 登入
使用 Web UI 時使用 OIDC 登入
使用AppRole的使用者服務帳號
保險櫃需要一種方法來識別這是同一個人並一致地應用策略。
身分架構
<前><代碼>┌────────────────────────────────────────────────┐ │ 實體 │ │ (Đại diện cho 1 người/machine duy nhất) │ │ │ │ ┌────────┐ ┌──────────┐ ┌────────┐ │ │ │ 別名 1 │ │ 別名 2 │ │ 別名 3 │ │ │ │ (LDAP) │ │ (OIDC) │ │(AppRole) │ │ └──────────┘ └──────────┘ └────────┘ │ │ │ │ 政策:[團隊領導,開發管理員] │ │ 元資料:{團隊:平台,等級:進階} │ │ │ │ 團體:[平台團隊,全工程師] │ └──────────────────────────────────────────────────┘
2.實體與別名
建立實體
# Tạo 實體 thủ công
vault write identity/entity \
名稱=“約翰多伊”\
政策=「團隊領導」\
元資料='{“團隊”:“平台”,“employee_id”:“EMP001”,“電子郵件”:“[email protected]”}'
# 實體
vault read identity/entity/name/john-doe
# Liệt kê 實體
vault list identity/entity/name
建立別名
# Lấy mount 存取器 cho auth 方法 vault auth list -format=json | jq -r '."ldap/".accessor' # auth_ldap_abc123vault auth list -format=json | jq -r '."oidc/".accessor'
auth_oidc_def456
Tạo 別名 cho LDAP
vault write identity/entity-alias
名稱=“約翰·多伊”
canonical_id="<實體 ID>"
mount_accessor =“auth_ldap_abc123”Tạo 別名 cho OIDC
vault write identity/entity-alias
名稱=“[email protected]”
canonical_id="<實體 ID>"
mount_accessor =“auth_oidc_def456”
現在,當 john.doe 使用 LDAP 或 OIDC 登入時,Vault 會將其識別為相同實體並應用實體策略 + 群組策略。
策略中的實體元資料
# 策略範本用於實體元數據
路徑「秘密/資料/團隊/{{identity.entity.metadata.team}}/*」{
功能 = [「建立」、「讀取」、「更新」、「刪除」、「清單」]
}
# Dựa trên 實體名稱
路徑「秘密/資料/使用者/{{identity.entity.name}}/*」{
功能 = [「建立」、「讀取」、「更新」、「刪除」、「清單」]
}
3.群組
內部群組
內部群組在 Vault 內完全管理:
# Tạo 內部組
vault write identity/group \
名稱=“平台團隊”\
類型=“內部”\
策略 =“平台管理,kv 平台”\
member_entity_ids =「實體ID-1,實體ID-2,實體ID-3」\
元資料='{“部門”:“工程”,“cost_center”:“CC001”}'
# 他們是團體成員
vault write identity/group/name/platform-team \
member_entity_ids =“實體ID-1,實體ID-2,實體ID-3,實體ID-4”
# 嵌套群組(子群組)
vault write identity/group \
名稱=“所有工程師”\
類型=“內部”\
政策=“工程師基地”\
member_group_ids="<平台團隊 ID>,<後端團隊 ID>,<前端團隊 ID>"
外部群組
外部群組從 LDAP/OIDC 群組對應到保險箱策略:
# Tạo 外部群組
vault write identity/group \
名稱=“ldap-devops”\
類型=“外部”\
政策=“devops-admin,kv-devops”
# 透過組別別名映射 đến LDAP 群組
vault write identity/group-alias \
name="CN=DevOps,OU=組,DC=公司,DC=com" \
mount_accessor =“auth_ldap_abc123”\
canonical_id="<外部組 ID>"
# 圖 đến OIDC 集團
vault write identity/group-alias \
名稱=“devops”\
mount_accessor =“auth_oidc_def456”\
canonical_id="<外部組 ID>"
4.身分識別令牌(OIDC 提供者)
Vault 可以充當 OIDC 提供者 - 根據身分實體發行 OIDC 代幣:
# Tạo 賦值(ai được phát 標記)
vault write identity/oidc/assignment/dev-team \
Entity_ids=“實體ID-1,實體ID-2”\
group_ids =“群組ID-1”
# Tạo key cho 簽名
vault write identity/oidc/key/app-key \
演算法=“RS256”\
allowed_client_ids =“*”\
旋轉週期=“24小時”
# Tạo OIDC 用戶端
vault write identity/oidc/client/my-webapp \
redirect_uris="https://myapp.company.com/callback" \
分配=“開發團隊”\
鍵=“應用程式鍵”\
id_token_ttl =“30m”\
access_token_ttl =“1小時”
# Tạo OIDC 提供者
vault write identity/oidc/provider/company \
發行人=“https://vault.company.com" \
allowed_client_ids="<客戶端 ID>" \
scopes_supported="openid、電子郵件、個人資料、群組"
5.多重驗證(MFA)
Vault 支援 MFA 新增第二層身份驗證。 MFA 有兩種類型:
<表> <標題>
類型描述需要時 <正文> 登入 MFA登入時的 MFA 請求所有登入請求 升級 MFA針對敏感操作的 MFA 請求特定路徑/操作TOTP MFA
# Tạo TOTP MFA 方法
vault write identity/mfa/method/totp \
method_name="company-totp" \
發行者=“VaultCompany”\
週期=30 \
鍵大小=20 \
數字=6 \
算法=“SHA1”\
qr_大小=200
# Lấy MFA 方法 ID
vault read identity/mfa/method/totp
# Tạo 登入 MFA 強制執行
vault write identity/mfa/login-enforcement/require-totp \
mfa_method_ids="" \
auth_method_types =“使用者密碼,ldap”\
Identity_group_ids="<管理員群組 ID>"
MFA TOTP 自行註冊(Vault 1.21)
Vault 1.21 中的新功能可讓使用者自行註冊 MFA TOTP:
# 管理員:啟用自助註冊
vault write identity/mfa/method/totp \
method_name="self-totp" \
發行者=“CompanyVault”\
允許_self_enrollment = true
# 使用者:登入 rồi 註冊 TOTP
# 1. 登入
vault login -method=userpass username=john.doe
# 2. 產生 TOTP 秘密(trả về QR 碼 URL)
vault write identity/mfa/method/totp/admin-generate \
method_id="" \
Entity_id="<我的實體ID>"
# 3.Quét QR code bằng app (Google Authenticator, Authy)
# 4. 登入 lần tiếp theo sẽ yêu cầu TOTP 代碼
Duo MFA
# Cấu hình Duo MFA
vault write identity/mfa/method/duo \
method_name="company-duo" \
Secret_key="<雙組秘密金鑰>" \
integration_key="" \
api_hostname="api-xxxxxxxx.duosecurity.com" \
Push_info="保管庫登入"
# 執行cho管理群組
vault write identity/mfa/login-enforcement/admin-duo \
mfa_method_ids="" \
Identity_group_ids="<管理員群組 ID>"
6. MFA 登入流程
┌──────────┐ 1. 登入 ┌────────────┐
│ 使用者 │ ──────────────────▶ │ 保險庫 │
│ │ │ │
│ │ 2. 需要MFA │ │
│ │ (request_id) │ │
│ │ ◀──────────────────── │ │
│ │ │ │
│ │ 3.提交MFA代碼 │ │
│ │ + request_id │ │
│ │ ──────────────────▶ │ │
│ │ │ │
│ │ 4. Vault 代幣 │ │
│ │ ◀──────────────────── │ │
└──────────┘ └──────────────┘
# 步驟 1:登入(trả về mfa_request_id nếu MFA required)
vault login -method=userpass username=john.doe
# 輸入方法「company-totp」的 MFA 代碼:
# 第 2 步:輸入 TOTP 代碼
#123456# API流程
# 登入 → nhận mfa_request_id
curl -s --request POST \
--data '{"密碼": "p@ss"}' \
${VAULT_ADDR}/v1/auth/userpass/login/john.doe
# 驗證 MFA
curl -s --request POST \
--數據'{
"mfa_request_id": "...",
“mfa_payload”:{
“”:[“123456”]
}
}' \
${VAULT_ADDR}/v1/sys/mfa/validate
7.摘要
身分引擎 - 將多個身分驗證身分合併到一個實體中
實體 + 別名 - 跨 LDAP、OIDC、AppRole 映射使用者
群組 - 內部(保管庫管理)與外部(LDAP/OIDC 組)
身分令牌 - 作為 OIDC 提供者的 Vault
MFA — TOTP、Duo、登入 MFA 和升級 MFA
TOTP 自行註冊 (1.21) — 使用者自行註冊 MFA
下一節將介紹進階 Secrets 引擎 - SSH、TOTP、Transform、KMIP 和自訂外掛程式。