iT邦幫忙

2026 iThome 鐵人賽

0
Security

身分驗證你我他 ─ 使用 HashiCorp Vault 與 Terraform 打造 Secret 與 Identity 實驗室系列 第 18 篇

Day 18. Identity Entity 與 Alias:Vault 如何識別「你是誰」

  • 分享至 

  • xImage
  •  

在 Day 15、16,我們介紹了 Vault 的 AppRole Authentication,了解應用程式如何透過 role_id 與 secret_id 取得 Token。

但這裡有個值得思考的問題:
如果同一個使用者透過不同的 Authentication Method 登入,Vault 怎麼知道他們其實是同一個人?

例如:

  • 使用者透過 Userpass 登入 Vault。
  • 同一個使用者透過 LDAP 登入 Vault。
  • 同一個使用者透過 SSO 登入 Vault。

Authentication 與 Identity 有什麼不同?

Authentication Method 旨在驗證如何登入 Vault,而 Identity Entity 定義你在 Vault 中是誰。
至於 Identity Alias 將不同登入身分(Auth method) 對應到同一個 Entity,而 Identity Group 將多個 Entity 組織起來,統一管理權限。
舉個例子來說,不管你今天是使用PIN、PassKey、SSO還是帳號密碼登入,這些方法們指向地都應該是同一個Identity。

建立 Entity 與 Alias

這次我們以 HashiCorp Vault 其中一種 Auth Method - userpass 來進行示範。
(Userpass 允許使用者透過內部管理的帳號與密碼登入 Vault)

啟用userpass

vault auth enable userpass

建立測試使用者

grantli@xxx:~$ vault write auth/userpass/users/grant \
  password="DemoPassword123!" \
  policies="default"
Success! Data written to: auth/userpass/users/grant

建立 Entity

vault write identity/entity \
  name="grant-entity" \
  metadata=department="IT"

接著,從輸出中找到 userpass/ 的 accessor,例如:

grantli@xxx:~$ vault auth list -format=json
{
  "userpass/": {
    "uuid": "dc1ba448-8859-fb61-c41b-c5b272616c8f",
    "type": "userpass",
    "description": "",
    "accessor": "auth_userpass_80ba3c4b",
    "config": {
      "default_lease_ttl": 0,
      "max_lease_ttl": 0,
      "force_no_cache": false,
      "token_type": "default-service"
    },
    "options": null,
    "local": false,
    "seal_wrap": false,
    "external_entropy_access": false,
    "plugin_version": "",
    "running_plugin_version": "v2.0.4+builtin.vault",
    "running_sha256": "",
    "deprecation_status": "supported"
  }
}

建立 Entity Alias

grantli@xxx:~$ vault write identity/entity-alias \
  name="grant" \
  canonical_id="2001db5a-8b19-0a3d-eca6-43a8aef316b8" \
  mount_accessor="auth_userpass_80ba3c4b"
Success! Data written to: identity/entity-alias

使用 Alias 登入

接著! 我們便可以使用Alias登入

grantli@xxx:~$ vault login -method=userpass \
  username=grant \
  password="DemoPassword123!"
Success! You are now authenticated. The token information displayed below
is already stored in the token helper. You do NOT need to run "vault login"
again. Future Vault requests will automatically use this token.

Key                    Value
---                    -----
token                  hvs.CAESIAmEM4C8k5YJNT9GTTbbTPJUVrXOiAqplwDAY5063vdOGh4KHGh2cy5ZeWxPNlI4ZFBxcnBrbDRUdzhZd1A4aFI
token_accessor         vOQ1F3SYBNqPj8yfGx6pitT6
token_duration         768h
token_renewable        true
token_policies         ["default"]
identity_policies      []
policies               ["default"]
token_meta_username    grant

執行 look up 後就可以看到 entity 已經對應至 userpass

grantli@azgranttest01:~$ vault token lookup
Key                 Value
---                 -----
accessor            vOQ1F3SYBNqPj8yfGx6pitT6
creation_time       1794237896
creation_ttl        768h
display_name        userpass-grant
entity_id           2001db5a-8b19-0a3d-eca6-43a8aef316b8
expire_time         2026-12-11T15:24:56.22350364Z
explicit_max_ttl    0s
id                  hvs.CAESIAmEM4C8k5YJNT9GTTbbTPJUVrXOiAqplwDAY5063vdOGh4KHGh2cy5ZeWxPNlI4ZFBxcnBrbDRUdzhZd1A4aFI
issue_time          2026-11-09T15:24:56.223506174Z
meta                map[username:grant]
num_uses            0
orphan              true
path                auth/userpass/login/grant
policies            [default]
renewable           true
ttl                 767h58m38s
type                service

上一篇
Day 17. Azure Auth Method:使用 Azure Identity 登入 Vault
系列文
身分驗證你我他 ─ 使用 HashiCorp Vault 與 Terraform 打造 Secret 與 Identity 實驗室 共 18 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言