首页 > 其他分享 >Go中使用应用层传输安全(ALTS)的gRPC认证概述。

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

时间:2022-09-29 20:23:43浏览次数:53  
标签:gRPC alts grpc org Go 服务器 ALTS

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凭证连接到服务器,如下面的代码摘录所示。

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凭证来允许客户端连接到它们,如下图所示。

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.Dial(serverAddr, grpc.WithTransportCredentials(altsTC))

  

客户端授权
在一个成功的连接中,对等信息(如客户的服务账户)被存储在AltsContext中。gRPC提供了一个用于客户授权检查的实用库。假设服务器知道预期的客户身份(例如,[email protected]),它可以运行下面的示例代码来授权进入的RPC。

 

import (
  "google.golang.org/grpc"
  "google.golang.org/grpc/credentials/alts"
)

err := alts.ClientAuthorizationCheck(ctx, []string{"[email protected]"})

  

标签:gRPC,alts,grpc,org,Go,服务器,ALTS
From: https://www.cnblogs.com/ben-zhou/p/16742919.html

相关文章

  • Django InspectDB 缺少mysql/mariadb的注释问题。
    我的是3.13.1。修改2处文件。1.django\core\management\commands\inspectdb.py2.django\db\backends\mysql\introspection.py1.inspectdb.py@@-213,6+213,8@@clas......
  • Django项目中的数据库引擎的修改注意点以及级联删除的设置
    2022-09-29问题描述:在“setting.py”的配置文件中修改数据库引擎中,将系统默认的"sqlite3"后缀改为了“sql”。出现问题。原因分析:  问题查看: 修改后:  ----......
  • grpc 核心概念、架构和生命周期
    介绍关键的gRPC概念,概述gRPC架构和RPC生命周期。不熟悉gRPC?请先阅读《gRPC简介》。关于特定语言的细节,请参见您所选择的语言的快速入门、教程和参考文档。 纵观全局服......
  • grpc介绍
     本页向您介绍gRPC和协议缓冲区。gRPC可以使用协议缓冲区作为其接口定义语言(IDL)和底层消息交换格式。如果你是gRPC和/或协议缓冲区的新手,请阅读这个!如果你只是想先深入......
  • Go 使用 zap 日志库
    1.前言zap是我个人比较喜欢的日志库,是uber开源的,有较好的性能。很多开源Go项目都使用它作为日志组件。2.安装使用安装goget-ugo.uber.org/zap快速入门logg......
  • Mongodb图形化工具Mongo Management Studio的初步使用记录
    工具官网下载地址:https://mms.litixsoft.de/ 使用免费版:  创建连接(可以测试下是否能连接) 可连接 点开数据库,点击对应集合 可以看到当前集合的存储数据......
  • MongoDB 4.4 数据库参数详细说明(二) - 一般参数
    1.connPoolMaxShardedConnsPerHost**作用:**设置用于与分片通信的legacy连接池的最大大小。池的大小不会阻止创建其他连接,但是会阻止连接池保留超出此限制的连接。**默认:**2......
  • MongoDB4.4新特性-不再一起发布相关工具
    从4.4版本开始,mongoexport等相关工具不再随着数据库安装包一起发布了,将单独作为一个安装包发布​​MongoDBDatabaseToolsproject:​​(https://docs.mongodb.com/databas......
  • 【Go学习】golang os/exec 执行外部命令
    exec包执行外部命令,它将os.StartProcess进行包装使得它更容易映射到stdin和stdout,并且利用pipe连接i/o.funcLookPath(filestring)(string,error)//LookPath在环境变量......
  • Golang 中的 WaitGroups 指南
    Golang中的WaitGroups指南这个强大功能的简要说明Photoby谢苗鲍里索夫on不飞溅Goroutines是很好用的工具,但是它们有一个问题。在这篇文章中,我们将调查这个问......