Go中使用应用层传输安全(ALTS)的gRPC认证概述。
ALTS认证
Go中使用应用层传输安全(ALTS)的gRPC认证概述。
概述
应用层传输安全(ALTS)是由 Google 开发的相互认证和传输加密系统。它用于保护 Google 基础设施内的 RPC 通信的安全。ALTS类似于相互TLS,但经过设计和优化以满足谷歌生产环境的需要。欲了解更多信息,请看ALTS白皮书。
gRPC中的ALTS有以下特点。
- 使用ALTS作为传输安全协议创建gRPC服务器和客户端。
- ALTS连接是端到端的保护,具有隐私性和完整性。
- 应用程序可以访问对等信息,如对等服务账户。
- 支持客户端授权和服务器授权。
- 启用ALTS所需的代码改动极少。
gRPC用户可以配置他们的应用程序,以使用ALTS作为传输安全协议,只需几行代码。
请注意,如果应用程序在谷歌云平台上运行,ALTS是完全有效的。ALTS可以通过一个可插拔的ALTS握手服务在任何平台上运行。
带有ALTS传输安全协议的gRPC客户端
gRPC客户端可以使用ALTS凭证连接到服务器,如下面的代码摘录所示。
1 2 3 4 5 6 7 | import ( "google.golang.org/grpc" "google.golang.org/grpc/credentials/alts" ) altsTC := alts.NewClientCreds(alts.DefaultClientOptions()) conn, err := grpc.Dial(serverAddr, grpc.WithTransportCredentials(altsTC)) |
带有ALTS传输安全协议的gRPC服务器
gRPC服务器可以使用ALTS凭证来允许客户端连接到它们,如下图所示。
1 2 3 4 5 6 7 | import ( "google.golang.org/grpc" "google.golang.org/grpc/credentials/alts" ) altsTC := alts.NewServerCreds(alts.DefaultServerOptions()) server := grpc.NewServer(grpc.Creds(altsTC)) |
服务器授权
gRPC有内置的使用ALTS的服务器授权支持。使用ALTS的gRPC客户端可以在建立连接之前设置预期的服务器服务账户。然后,在握手结束时,服务器授权保证服务器的身份与客户指定的服务账户之一相匹配。否则,连接会失败。
1 2 3 4 5 6 7 8 9 | import ( "google.golang.org/grpc" "google.golang.org/grpc/credentials/alts" ) clientOpts := alts.DefaultClientOptions() clientOpts.TargetServiceAccounts = []string{expectedServerSA} altsTC := alts.NewClientCreds(clientOpts) conn, err := grpc.Dial(serverAddr, grpc.WithTransportCredentials(altsTC)) |
客户端授权
在一个成功的连接中,对等信息(如客户的服务账户)被存储在AltsContext中。gRPC提供了一个用于客户授权检查的实用库。假设服务器知道预期的客户身份(例如,foo@iam.gserviceaccount.com),它可以运行下面的示例代码来授权进入的RPC。
1 2 3 4 5 6 | import ( "google.golang.org/grpc" "google.golang.org/grpc/credentials/alts" ) err := alts.ClientAuthorizationCheck(ctx, []string{ "foo@iam.gserviceaccount.com" }) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)