Go中使用应用层传输安全(ALTS)的gRPC认证概述。

ALTS认证
Go中使用应用层传输安全(ALTS)的gRPC认证概述。

概述
应用层传输安全(ALTS)是由 Google 开发的相互认证和传输加密系统。它用于保护 Google 基础设施内的 RPC 通信的安全。ALTS类似于相互TLS,但经过设计和优化以满足谷歌生产环境的需要。欲了解更多信息,请看ALTS白皮书。

gRPC中的ALTS有以下特点。

  1. 使用ALTS作为传输安全协议创建gRPC服务器和客户端。
  2. ALTS连接是端到端的保护,具有隐私性和完整性。
  3. 应用程序可以访问对等信息,如对等服务账户。
  4. 支持客户端授权和服务器授权。
  5. 启用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"})

  

posted @   风在何方  阅读(561)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示