ALTS 身份验证
使用应用程序层传输安全 (ALTS) 在 Java 中进行 gRPC 身份验证的概述。
ALTS 身份验证
使用应用程序层传输安全 (ALTS) 在 Java 中进行 gRPC 身份验证的概述。
概述
应用程序层传输安全 (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 io.grpc.alts.AltsChannelBuilder;
import io.grpc.ManagedChannel;
ManagedChannel managedChannel =
AltsChannelBuilder.forTarget(serverAddress).build();
带有 ALTS 传输安全协议的 gRPC 服务器
gRPC 服务器可以使用 ALTS 凭据允许客户端连接到它们,如下所示
import io.grpc.alts.AltsServerBuilder;
import io.grpc.Server;
Server server = AltsServerBuilder.forPort(<port>)
.addService(new MyServiceImpl()).build().start();
服务器授权
gRPC 使用 ALTS 内置了服务器授权支持。使用 ALTS 的 gRPC 客户端可以在建立连接之前设置预期的服务器服务帐户。然后,在握手结束时,服务器授权保证服务器标识与客户端指定的其中一个服务帐户匹配。否则,连接将失败。
import io.grpc.alts.AltsChannelBuilder;
import io.grpc.ManagedChannel;
ManagedChannel channel =
AltsChannelBuilder.forTarget(serverAddress)
.addTargetServiceAccount("expected_server_service_account1")
.addTargetServiceAccount("expected_server_service_account2")
.build();
客户端授权
在成功连接时,对等信息(例如,客户端的服务帐户)存储在 AltsContext 中。gRPC 提供了一个用于客户端授权检查的实用程序库。假设服务器知道预期的客户端标识(例如,[email protected]
),它可以运行以下示例代码来授权传入的 RPC。
import io.grpc.alts.AuthorizationUtil;
import io.grpc.ServerCall;
import io.grpc.Status;
ServerCall<?, ?> call;
Status status = AuthorizationUtil.clientAuthorizationCheck(
call, Lists.newArrayList("[email protected]"));
上次修改时间:2021 年 8 月 11 日:从描述中修剪尾随空格 (#822) (88d84d6)