ASM提供了自定义外部授权服务,在服务间互相通信时加入鉴权流程,以确保只有得到授权的情况下,才能访问关键服务。本文以httpbin应用和sleep应用为例,介绍如何实现接入gRPC协议的外部授权服务。
前提条件
- 已创建ASM实例。具体操作,请参见创建ASM实例。
- 已创建ACK集群。具体操作,请参见创建Kubernetes托管版集群。
- 添加集群到ASM实例。具体操作,请参见添加集群到ASM实例。
外部授权流程
- 在ACK部署外部授权服务。
该服务需遵循Istio自定义鉴权服务接口规范,支持HTTP和gRPC协议。
- 在ACK部署示例应用,用于验证外部授权功能。
- 在ASM定义外部授权服务,关联步骤1创建的外部授权服务,使ASM可以使用该服务进行鉴权。
- 在ASM创建授权策略,配置需要外部鉴权的应用,并将鉴权指向步骤3配置的外部授权服务。

步骤一:部署外部授权服务
在集群中部署外部授服务。该服务需遵循Istio自定义鉴权服务接口规范,支持HTTP和gRPC协议,用于实现外部鉴权逻辑。本文使用的示例服务要求请求必须带有
x-ext-authz: allow
请求头,才能通过鉴权访问成功。
说明 本文提供了外部授权服务示例,您也可以参考本示例应用的代码,创建自己的外部授权服务,具体内容,请参见外部授权。
步骤二:部署示例应用
步骤三:管理外部授权服务
您需要将步骤一部署的服务声明到服务网格中,使服务网格可以使用该服务进行鉴权。
步骤四:创建授权策略
您需要创建授权策略来配置需要鉴权的请求操作。