HashiCorp Vault Go 客户端库使用指南

HashiCorp Vault Go 客户端库使用指南

vault-client-go HashiCorp Vault Go Client Library generated from OpenAPI spec. vault-client-go 项目地址: https://gitcode.com/gh_mirrors/va/vault-client-go

1. 项目的目录结构及介绍

vault-client-go 是一个由 HashiCorp 开发的 Go 语言客户端库,用于与 Vault 服务器进行交互。项目目录结构如下:

  • api_auth.go:包含认证相关的 API 方法。
  • api_helpers.go:包含一些帮助函数,用于处理 API 请求和响应。
  • api_identity.go:包含身份验证相关的 API 方法。
  • api_secrets.go:包含密钥管理相关的 API 方法。
  • api_system.go:包含系统级别的 API 方法。
  • client.go:包含客户端配置和初始化相关的代码。
  • client_configuration.go:包含客户端配置选项。
  • client_option.go:包含客户端的选项设置。
  • client_requests.go:包含客户端请求的构建和发送。
  • errors.go:包含错误处理相关的代码。
  • replication_consistency.go:包含复制一致性相关的代码。
  • request_modifiers.go:包含请求修改器,用于自定义请求。
  • request_option.go:包含请求选项的设置。
  • response.go:包含响应处理相关的代码。
  • user_agent.go:包含用户代理字符串相关的代码。
  • Makefile:包含构建项目的 makefile 文件。
  • README.md:项目说明文件。
  • go.mod:Go 依赖管理文件。
  • go.sum:Go 依赖校验文件。
  • openapi.json:OpenAPI 规范文件。

每个文件和目录都包含了项目运行所必需的代码和资源。

2. 项目的启动文件介绍

vault-client-go 的启动通常从 main.go 文件开始,以下是启动文件的简单介绍:

package main

import (
    "context"
    "log"
    "time"
    "github.com/hashicorp/vault-client-go"
    "github.com/hashicorp/vault-client-go/schema"
)

func main() {
    ctx := context.Background()
    // 初始化客户端
    client, err := vault.New(vault.WithAddress("http://127.0.0.1:8200"), vault.WithRequestTimeout(30*time.Second))
    if err != nil {
        log.Fatal(err)
    }
    // 使用 root token 进行认证(不推荐用于生产环境)
    if err := client.SetToken("my-token"); err != nil {
        log.Fatal(err)
    }
    // 写入密钥
    if _, err := client.Secrets.KvV2Write(ctx, "foo", schema.KvV2WriteRequest{Data: map[string]any{"password1": "abc123", "password2": "correct horse battery staple"}}, vault.WithMountPath("secret")); err != nil {
        log.Fatal(err)
    }
    log.Println("secret written successfully")
    // 读取密钥
    s, err := client.Secrets.KvV2Read(ctx, "foo", vault.WithMountPath("secret"))
    if err != nil {
        log.Fatal(err)
    }
    log.Println("secret retrieved:", s.Data.Data)
}

这段代码展示了如何创建一个 Vault 客户端实例,使用 root token 进行认证,以及如何写入和读取一个密钥。

3. 项目的配置文件介绍

vault-client-go 的配置主要通过代码进行设置,但也可以使用环境变量来加载配置。以下是一个配置文件的示例,它可以通过环境变量来设置客户端的配置:

// 设置环境变量
os.Setenv("VAULT_ADDRESS", "http://127.0.0.1:8200")
os.Setenv("VAULT_TOKEN", "my-token")
os.Setenv("VAULT_MOUNT_PATH", "secret")

// 在代码中读取环境变量
address := os.Getenv("VAULT_ADDRESS")
token := os.Getenv("VAULT_TOKEN")
mountPath := os.Getenv("VAULT_MOUNT_PATH")

// 使用环境变量中的值来配置客户端
client, err := vault.New(vault.WithAddress(address), vault.WithRequestTimeout(30*time.Second))
if err != nil {
    log.Fatal(err)
}

if err := client.SetToken(token); err != nil {
    log.Fatal(err)
}

通过这种方式,你可以在不修改代码的情况下,通过改变环境变量来调整客户端的行为,使得配置更加灵活。

vault-client-go HashiCorp Vault Go Client Library generated from OpenAPI spec. vault-client-go 项目地址: https://gitcode.com/gh_mirrors/va/vault-client-go

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

岑尤琪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值