更新时间:2024-03-04 GMT+08:00
分享

服务授权

服务授权用来实现对网格中服务的访问控制功能,即判断一个请求是否允许发送到当前的服务。服务授权通过负载选择器Selector选择目标负载。认证的规则通过JWTRule来描述,定义如何匹配JWT令牌上的认证信息。

创建服务授权

支持YAML创建服务授权。

  1. 登录UCS控制台,在左侧导航栏中单击“服务网格”。
  2. 单击服务网格名称,进入详情页。
  3. 在左侧导航栏,单击“服务安全”下的“服务授权”,进入服务授权详情页。
  4. 单击右上角“YAML创建”,弹出服务授权YAML创建界面。
  5. 设置如下:满足特定条件的请求访问才会被接受,其他不满足所设定条件的请求访问都会被拒绝。

    apiVersion: security.istio.io/v1beta1
    kind: AuthorizationPolicy                # 创建服务安全类别为服务授权
    metadata:
     name: forecast                          # 服务授权名
     namespace: weather                      # 在weather命名空间下创建
    spec:
     selector:
       matchLabels:
         app: forecast
         version: v2
     rules:
     - from:
       - source:
           principals: ["cluster.local/ns/weather/sa/frontend"]
       to:
       - operation:
           methods: ["PUT","POST"]
       when:
       - key: request.headers[group]
         values: ["admin"]

更新服务授权

  1. 登录UCS控制台,在左侧导航栏中单击“服务网格”。
  2. 单击服务网格名称,进入详情页。
  3. 在左侧导航栏,单击“服务安全”下的“服务授权”,进入服务授权详情页。
  4. 选定要更新的策略,单击操作列下的“YAML编辑”。
  5. 更新设置的条件,比如版本号。

    spec:
     selector:
       matchLabels:
         app: forecast
         version: v2
     rules:
     - from:
       - source:
           principals: ["cluster.local/ns/weather/sa/frontend"]
       to:
       - operation:
           methods: ["PUT","POST"]
       when:
       - key: request.headers[group]
         values: ["admin"]

删除服务授权

删除操作无法恢复,请谨慎操作。删除服务授权不会影响关联的服务本身运行。

  1. 登录UCS控制台,在左侧导航栏中单击“服务网格”。
  2. 单击服务网格名称,进入详情页。
  3. 在左侧导航栏,单击“服务安全”下的“服务授权”,进入服务授权详情页。
  4. 选定要删除的策略,单击操作列下的“删除”。
  5. 弹出“删除服务授权策略”对话框,单击“是”,删除服务授权完成。

案例

TCP 服务访问授权。

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: tcp-auth-policy
  namespace: weather
spec:
 selector:
   matchLabels:
     app: forecast
 action: ALLOW
 rules:
 - from:
   - source:
       ipBlocks: ["10.**.**.**/**"]
   to:
   - operation:
       ports: ["8090"]

相关文档