spiffe/go-spiffe

GitHub: spiffe/go-spiffe

该库为 Go 应用提供 SPIFFE 身份框架的支持,通过 Workload API 简化 X.509-SVID 证书的获取与 mTLS 通信。

Stars: 204 | Forks: 86

# go-spiffe (v2) 该库是一个便捷的 Go 库,用于处理 [SPIFFE](https://spiffe.io/)。 它利用了 [SPIFFE Workload API](https://github.com/spiffe/spiffe/blob/main/standards/SPIFFE_Workload_API.md),提供包括以下内容在内的高级功能: ## 文档 请参阅 [Go 包](https://pkg.go.dev/github.com/spiffe/go-spiffe/v2)文档。 ## 快速入门 前置条件: 1. 运行中的 [SPIRE](https://spiffe.io/spire/) 或其他 SPIFFE Workload API 实现。 2. `SPIFFE_ENDPOINT_SOCKET` 环境变量设置为 Workload API 的地址(例如 `unix:///tmp/agent.sock`)。或者,也可以通过编程方式 提供 socket 地址。 创建一个 mTLS server: ``` listener, err := spiffetls.Listen(ctx, "tcp", "127.0.0.1:8443", tlsconfig.AuthorizeAny()) ``` 连接 mTLS server: ``` conn, err := spiffetls.Dial(ctx, "tcp", "127.0.0.1:8443", tlsconfig.AuthorizeAny()) ``` client 和 server 从 [SPIFFE Workload API](https://github.com/spiffe/spiffe/blob/main/standards/SPIFFE_Workload_API.md) 获取 [X509-SVID](https://github.com/spiffe/spiffe/blob/main/standards/X509-SVID.md) 和 X.509 bundles。 X509-SVID 会由每个对等方出示,并根据 X.509 bundles 进行身份验证。双方都会持续更新从 Workload API 流式传输的 X509-SVID 和 X.509 bundles (例如密钥轮换)。 ## 示例 [examples](./examples) 目录包含了适用于各种场景的丰富示例。 ## 支持的 Go 版本 本库跟踪官方支持的最低 Go 版本(即 N-1)。该策略的唯一例外是,当依赖项受到安全漏洞影响而迫使提前升级时。预计此类情况非常罕见, 我们不会轻易采取此行动,并且在尽力在不违反此策略的情况下缓解 安全问题之前,不会进行升级。 ## 报告安全漏洞 如果您在 go-spiffe 中发现了漏洞或潜在漏洞,请通过 告知我们。我们将发送一封确认邮件以确认收到您的报告,并在我们确定该问题成立或不成立后,发送另一封邮件通知您。
标签:EVTX分析, 底层编程, 日志审计