ALTS 认证
使用应用层传输安全 (ALTS) 的 gRPC Go 认证概述。
ALTS 认证
使用应用层传输安全 (ALTS) 的 gRPC Go 认证概述。
概述
应用层传输安全 (ALTS) 是 Google 开发的一种相互认证和传输加密系统。它用于保护 Google 基础设施内的 RPC 通信安全。ALTS 类似于相互 TLS,但经过设计和优化以满足 Google 生产环境的需求。更多信息,请参阅ALTS 白皮书。
gRPC 中的 ALTS 具有以下特性
- 使用 ALTS 作为传输安全协议创建 gRPC 服务器和客户端。
- ALTS 连接提供端到端的隐私和完整性保护。
- 应用程序可以访问对等方信息,例如对等方服务帐户。
- 支持客户端授权和服务器授权。
- 启用 ALTS 只需少量代码更改。
gRPC 用户只需几行代码即可配置其应用程序使用 ALTS 作为传输安全协议。
请注意,如果应用程序运行在Compute Engine 或Google Kubernetes Engine (GKE) 上,ALTS 才能完全发挥作用。
使用 ALTS 传输安全协议的 gRPC 客户端
gRPC 客户端可以使用 ALTS 凭据连接到服务器,如下面的代码摘录所示
import (
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/alts"
)
altsTC := alts.NewClientCreds(alts.DefaultClientOptions())
conn, err := grpc.NewClient(serverAddr, grpc.WithTransportCredentials(altsTC))
使用 ALTS 传输安全协议的 gRPC 服务器
gRPC 服务器可以使用 ALTS 凭据允许客户端连接到它们,如下所示
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 客户端可以在建立连接之前设置预期的服务器服务帐户。然后,在握手结束时,服务器授权会确保服务器身份与客户端指定的某个服务帐户匹配。否则,连接将失败。
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.NewClient(serverAddr, grpc.WithTransportCredentials(altsTC))
客户端授权
成功连接后,对等方信息(例如,客户端的服务帐户)存储在AltsContext 中。gRPC 提供了一个用于客户端授权检查的实用程序库。假设服务器知道预期的客户端身份(例如,foo@iam.gserviceaccount.com
),它可以运行以下示例代码来授权传入的 RPC。
import (
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/alts"
)
err := alts.ClientAuthorizationCheck(ctx, []string{"foo@iam.gserviceaccount.com"})
上次修改时间:2024 年 5 月 21 日:更新 Go 文档以使用 NewClient 代替 Dial (#1295) (708f7a1)