StandardHashiCorpVaultClientService

文档中心 › 组件索引 › StandardHashiCorpVaultClientService

StandardHashiCorpVaultClientService Controller Service

类型全限定名:cn.org.acal.lynxus.vault.hashicorp.StandardHashiCorpVaultClientService

所属 Bundle:cn.org.acal.lynxus:lynxus-hashicorp-vault-nar:2.11.8

描述

用于与 HashiCorp Vault 交互的Controller Service。

标签

hashicorpvaultclient

属性

下表中,加粗的属性为必填项;其余为可选项。表格同时标注默认值、是否支持表达式语言,以及是否为敏感属性(值会被加密)。

名称默认值可选值描述
Configuration Strategydirect-properties
  • 直接属性 — 使用在控制器服务中直接配置的属性(包括动态属性)来配置客户端
  • 属性文件 — 使用一个或多个 '.properties' 文件来配置客户端
指定配置属性的来源。
Vault URIHashiCorp Vault 服务器的 URI(例如 http://localhost:8200)。如果未在 Bootstrap HashiCorp Vault 配置文件中指定则必填。
支持表达式语言:是(仅使用环境/系统变量求值)
Vault 认证TOKEN
  • TOKEN
  • APPID
  • APPROLE
  • AWS_EC2
  • AZURE
  • CERT
  • CUBBYHOLE
  • KUBERNETES
Vault 身份验证方法,如 Spring Vault 环境配置文档(https://docs.spring.io/spring-vault/docs/2.3.x/reference/html/#vault.core.environment-vault-confi
SSL 上下文服务控制器服务 API:
SSLContextProvider
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
用于与 HashiCorp Vault 服务器进行 TLS 加密通信的 SSL 上下文提供程序
Vault 属性文件包含 HashiCorp Vault 配置属性的文件逗号分隔列表,如 Spring Vault 环境配置文档(https://docs.spring.io/spring-vault/docs/
连接超时5 secHashiCorp Vault 客户端的连接超时
读取超时15 secHashiCorp Vault 客户端的读取超时

动态属性

动态属性允许用户自定义属性的名称与值。

名称值描述
Spring Vault 配置属性名称属性值允许指定任何 Spring Vault 属性键。有关更多信息,请参阅附加详细信息。

状态管理

该组件不存储状态。

受限 (Restricted)

该组件不受限。

提供的 Service API

  • HashiCorpVaultClientService (cn.org.acal.lynxus-lynxus-hashicorp-vault-client-service-api-nar-2.11.8)

详细说明

StandardHashiCorpVaultClientService

配置

Bootstrap HashiCorp Vault 配置文件

ACAL Lynxus 自带的 ./conf/bootstrap-hashicorp-vault.conf 文件是配置该 Controller Service 的一种便捷方式,且与 HashiCorpVault 敏感属性提供器保持一致。由于该文件已经被用于配置 Vault 客户端以保护 Lynxus 配置文件中的敏感属性(参见管理员指南),它也是配置 Controller Service 的自然起点。

该属性文件的示例配置如下:

# 启用敏感属性提供器需要
# HashiCorp Vault 的
# HTTP 或
# HTTPS URI
vault.uri=https://127.0.0.1:8200

# 可选文件,支持
# Spring Vault 环境配置中描述的认证属性
# https://docs.spring.io/spring-vault/docs/2.3.x/reference/html/#vault.core.environment-vault-configuration
#
# 未指定该属性时,所有认证属性必须包含在
# bootstrap-hashicorp-vault.conf 中。
# 当两个文件中定义了相同的值时,
# bootstrap-hashicorp-vault.conf 中的属性优先。
# 未指定
# 'vault.authentication' 属性时,默认为令牌认证。
vault.authentication.properties.file=[full/path/to/vault-auth.properties]

# 可选的超时属性
vault.connection.timeout=5 secs
vault.read.timeout=15 secs

# 可选的
# TLS 属性
vault.ssl.enabledCipherSuites=
vault.ssl.enabledProtocols=TLSv1.3
vault.ssl.key-store=[path/to/keystore.p12]
vault.ssl.key-store-type=PKCS12
vault.ssl.key-store-password=[keystore password]
vault.ssl.trust-store=[path/to/truststore.p12]
vault.ssl.trust-store-type=PKCS12
vault.ssl.trust-store-password=[truststore password]

要在 StandardHashiCorpVaultClientService 中使用该文件,请指定以下属性:

  • Configuration Strategy - Properties Files
  • Vault Properties Files - ./conf/bootstrap-hashicorp-vault.conf

如果你的 bootstrap 配置中包含带有额外认证属性的 vault.authentication.properties.file,该文件也需要作为逗号分隔的值 添加到 Vault Properties Files 属性中。

使用直接属性配置客户端

不过,如果你想在 Controller Service 中直接指定或覆盖属性,可以把 Configuration Strategy 指定为 'Direct Properties'。如果你在复用某个 SSLContextService,或想参数化 Vault 配置属性,这会很有用。认证相关的属性也可以作为敏感的 动态属性添加,如下面的示例所示。

Vault 认证

在底层,该 Controller Service 使用 Spring Vault,并直接支持 Spring Vault 文档 中指定的属性键。以下是与 Vault 认证的一些常见示例。

令牌认证

最简单的认证方式使用轮换令牌,这在 Vault 中默认启用。要指定该机制,在 "Vault Authentication" 属性中选择 "TOKEN"(默认)。不过,由于令牌本质上应该轮换,最佳实践是使用 'Properties Files' Configuration Strategy,把令牌值保存在外部 属性文件中,并在 'Vault Properties Files' 属性中指明该文件名。这样,外部进程 就可以轮换文件中的令牌,而无需更新 Lynxus 配置。要获取变更后的令牌,必须禁用并重新启用该 Controller Service。

不过,出于测试目的,直接在 Controller Service 中指定令牌可能更方便。方法是添加一个名为 'vault.token' 的新敏感属性,并把令牌作为其值。

证书认证

证书认证必须先在 Vault 服务器中启用,才能从 Lynxus 使用;不过它使用与实际客户端连接相同的 TLS 设置,因此不需要额外的认证属性。虽然这些 TLS 设置可以在外部属性文件中提供,但我们演示改用 SSLContextService 来配置。

首先,创建一个 SSLContextService Controller Service,并为 Keystore 和 Truststore 配置 Filename、Password 和 Type。启用它,并在 Vault Controller Service 中把它指定为 SSL Context Service。然后,把 "Vault Authentication" 属性值指定为 "CERT" 即可。

其他认证方式

要配置其他认证方式,参见上面链接的 Spring Vault 文档。如果使用 'Properties Files' Configuration Strategy,所有相关属性应添加到 "Vault Properties Files" 属性引用的外部属性文件中;如果使用 'Direct Properties' Configuration Strategy,则添加为同名的 自定义属性。例如,对于 Azure 认证机制,需要添加 'vault.azure-msi.azure-path'、'vault.azure-msi.role' 和 'vault.azure-msi.identity-token-service' 的属性。