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分析, 底层编程, 日志审计