HashiCorp Boundary 中的凭证库(Credential Library)详解

HashiCorp Boundary 中的凭证库(Credential Library)详解

boundary Boundary enables identity-based access management for dynamic infrastructure. boundary 项目地址: https://gitcode.com/gh_mirrors/bo/boundary

什么是凭证库

在HashiCorp Boundary中,凭证库(Credential Library)是一个关键资源,它负责从凭证存储(Credential Store)中提供相同类型和相同访问级别的凭证。简单来说,它就像是一个专门管理特定类型凭证的"图书馆",可以集中管理和分发凭证。

凭证库的核心属性

每个凭证库都有以下基本配置属性:

  1. 名称(name):可选属性,如果设置,必须在父凭证存储中保持唯一
  2. 描述(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}}:账户邮箱

实用模板函数

  1. truncateFrom:从指定子字符串开始截断字符串

    • 示例:{{truncateFrom .Account.Email "@"}}可将"foo@example.com"转为"foo"
  2. coalesce:从列表中选择第一个非空值

    • 示例:{{coalesce .Account.Name .Account.LoginName}}可优先使用账户名,若为空则使用登录名

最佳实践建议

  1. 命名规范:为凭证库设置清晰、有意义的名称,便于管理和维护
  2. 描述详细:充分利用description字段记录凭证库的用途和注意事项
  3. 安全考虑
    • 对于SSH证书,合理设置ttl值以确保会话安全
    • 谨慎使用critical_options和extensions,避免授予过多权限
  4. 模板使用:利用模板化功能实现动态凭证管理,但要注意模板的安全性
  5. 监控与轮换:建立凭证使用监控和定期轮换机制

通过合理配置凭证库,Boundary可以实现安全、灵活的凭证管理,为基础设施访问提供强有力的安全保障。

boundary Boundary enables identity-based access management for dynamic infrastructure. boundary 项目地址: https://gitcode.com/gh_mirrors/bo/boundary

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘俭渝Erik

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值