HashiCorp Boundary 中的凭证库(Credential Library)详解
什么是凭证库
在HashiCorp Boundary中,凭证库(Credential Library)是一个关键资源,它负责从凭证存储(Credential Store)中提供相同类型和相同访问级别的凭证。简单来说,它就像是一个专门管理特定类型凭证的"图书馆",可以集中管理和分发凭证。
凭证库的核心属性
每个凭证库都有以下基本配置属性:
- 名称(name):可选属性,如果设置,必须在父凭证存储中保持唯一
- 描述(description):可选属性,用于标识凭证库的用户自定义描述
Vault通用凭证库
Boundary支持与HashiCorp Vault集成的通用凭证库,具有以下额外属性:
- Vault路径(vault-path):必需属性,指定从Vault请求凭证的路径
- 凭证类型(credential-type):可选属性,指定该库颁发的凭证类型,默认为"unspecified"
- 凭证映射覆盖(credential-mapping-override):可选属性,可覆盖从Vault检索的凭证字段属性
- HTTP方法(vault-http-method):可选属性,指定请求Vault凭证时使用的HTTP方法(GET或POST)
- HTTP请求体(vault-http-request-body):可选属性,仅在HTTP方法为POST时有效,指定发送给Vault的请求体
Vault SSH证书凭证库(企业版功能)
从Boundary 0.12.0开始,支持使用Vault的SSH密钥引擎配置SSH凭证注入。SSH证书认证通过数字签名扩展了基于密钥的认证,用户的真实性由受信任的证书颁发机构(CA)签名的证书确定。
SSH证书凭证库的重要属性
- Vault路径(vault-path):必需属性,指定从Vault请求凭证的路径
- 用户名(username):必需属性,用于SSH证书的用户名,支持模板化
- 密钥类型(key_type):可选属性,指定生成的SSH私钥类型(ed25519/ecdsa/rsa)
- 密钥位数(key_bits):可选属性,根据密钥类型指定位数
- 有效期(ttl):可选属性,指定SSH证书的有效期
- 密钥ID(key_id):可选属性,指定创建的SSH证书的密钥ID
- 关键选项(critical_options):可选属性,指定证书应签名的关键选项
- 扩展(extensions):可选属性,指定证书应签名的扩展
- 额外有效主体(additional_valid_principals):可选属性,指定除用户名外证书应签名的其他有效主体
重要提示:证书是为整个会话颁发的,如果ttl值小于目标的session_max_seconds值,后续连接可能会失败。建议确保ttl值等于或大于目标的session_max_seconds值,或者将目标的session_connection_limit设置为1。
凭证库参数模板化
Boundary 0.11.1引入了凭证库参数模板化功能,允许在调用Vault时提供关于Boundary用户或账户的信息。这在需要根据用户信息动态选择Vault角色或生成特定证书时特别有用。
支持的模板参数
-
用户相关:
{{.User.Id}}
:用户ID{{.User.Name}}
:用户名{{.User.FullName}}
:用户全名{{.User.Email}}
:用户邮箱
-
账户相关:
{{.Account.Id}}
:账户ID{{.Account.Name}}
:账户名{{.Account.LoginName}}
:账户登录名{{.Account.Subject}}
:账户主题{{.Account.Email}}
:账户邮箱
实用模板函数
-
truncateFrom:从指定子字符串开始截断字符串
- 示例:
{{truncateFrom .Account.Email "@"}}
可将"foo@example.com"转为"foo"
- 示例:
-
coalesce:从列表中选择第一个非空值
- 示例:
{{coalesce .Account.Name .Account.LoginName}}
可优先使用账户名,若为空则使用登录名
- 示例:
最佳实践建议
- 命名规范:为凭证库设置清晰、有意义的名称,便于管理和维护
- 描述详细:充分利用description字段记录凭证库的用途和注意事项
- 安全考虑:
- 对于SSH证书,合理设置ttl值以确保会话安全
- 谨慎使用critical_options和extensions,避免授予过多权限
- 模板使用:利用模板化功能实现动态凭证管理,但要注意模板的安全性
- 监控与轮换:建立凭证使用监控和定期轮换机制
通过合理配置凭证库,Boundary可以实现安全、灵活的凭证管理,为基础设施访问提供强有力的安全保障。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考