为HTTP流量设置授权策略

当您需要精细控制服务间的HTTP流量访问时,可以为HTTP流量设置授权策略,管理服务之间的交互权限,确保只有经过授权的请求才能访问特定服务,提高服务的安全性和可靠性。

前提条件

步骤一:配置空白授权策略

本文以配置一个基础的拒绝策略,拒绝对工作负载的所有请求为例,逐步授予对工作负载的其他访问权限。

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择网格安全中心 > 授权策略,然后单击使用YAML创建

  3. 创建页面,选择命名空间default,选择任意场景模版,将以下YAML模板粘贴到YAML区域,然后单击创建

    apiVersion: security.istio.io/v1beta1
    kind: AuthorizationPolicy
    metadata:
      name: allow-nothing
      namespace: default
    spec:
      {}

    创建完成后,在授权策略页面,可以看到allow-nothing授权策略。

  4. 在浏览器地址栏,输入http://{您的ASM网关地址}/productpage,访问Bookinfo应用。

    您可以看到页面返回RBAC: access denied,表示没有权限访问。关于如何获取网关IP,请参见获取入口网关地址

步骤二:配置Productpage服务的授权策略

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择网格安全中心 > 授权策略

  3. 任选以下方式,创建可以访问Productpage自身服务的授权策略。

    方式一:使用YAML创建授权策略

    1. 授权策略页面,单击使用YAML创建

    2. 创建页面,选择命名空间default,选择任意场景模版,将以下YAML模板粘贴到YAML区域,单击创建

      apiVersion: security.istio.io/v1beta1
      kind: AuthorizationPolicy
      metadata:
        name: "productpage-viewer"
        namespace: default
      spec:
        selector:
          matchLabels:
            app: productpage
        action: ALLOW
        rules:
        - to:
          - operation:
              methods: ["GET"]

    方式二:通过图形化界面创建授权策略

    1. 授权策略页面,单击创建

    2. 创建页面,配置如下信息,单击创建

      配置项

      说明

      名称

      设置为productpage-viewer

      策略类型

      选择允许

      命名空间

      工作负载生效页签,设置命名空间default

      生效范围

      选择Service

      工作负载

      选择productpage

      请求匹配规则

      添加请求目标区域,打开HTTP方法(Methods)开关,设置值为GET

    创建完成后,在授权策略页面,可以看到productpage-viewer授权策略。

  4. 在浏览器地址栏,输入http://{您的ASM网关地址}/productpage,访问Bookinfo应用。

    如下图所示,由于上一步设置了允许GET请求访问,所以能够正常访问Productpage页面,但无法访问Details和Reviews服务。访问Productpage页面

步骤三:配置Details服务的授权策略

通过配置Details服务的授权策略,允许接收来自Productpage的serviceAccount发出的请求。

  1. 获取Productpage的serviceAccount参数值。

    1. 登录容器服务管理控制台,在左侧导航栏选择集群

    2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载 > 无状态

    3. 无状态页面的操作列,单击productpage-v1对应的更多 > 查看Yaml,获取serviceAccount参数值。

      如下图所示,serviceAccount参数值为bookinfo-productpage获取Productpage的serviceAccount

  2. 创建授权策略。

    1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

    2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择网格安全中心 > 授权策略

    3. 任选以下方式创建授权策略。

      方式一:通过YAML创建授权策略

      1. 授权策略页面,单击使用YAML创建

      2. 创建页面,选择命名空间default,选择任意场景模版,将如下YAML模板粘贴到YAML区域,单击创建

        kind: AuthorizationPolicy
        apiVersion: security.istio.io/v1beta1
        metadata:
          name: details-viewer
          namespace: default
        spec:
          action: ALLOW
          rules:
            - to:
                - operation:
                    methods:
                      - GET
            - from:
                - source:
                    principals:
                      - cluster.local/ns/default/sa/bookinfo-productpage # bookinfo-productpage为serviceAccount的参数值,由上一步获取。
          selector:
            matchLabels:
              app: details

      方式二:通过图形化界面创建授权策略

      1. 授权策略页面,单击创建

      2. 创建页面,配置如下信息,单击创建

        配置项

        说明

        名称

        设置为details-viewer

        策略类型

        选择允许

        命名空间

        工作负载生效页签,设置命名空间default

        生效范围

        选择Service

        工作负载

        选择details

        请求匹配规则

        1. 添加请求来源区域,打开请求身份(Principals)开关,设置值为cluster.local/ns/default/sa/bookinfo-productpage

          说明

          bookinfo-productpageserviceAccount的参数值,由步骤1获取。

        2. 添加请求目标区域,打开HTTP方法(Methods)开关,设置值为GET

      创建完成后,在授权策略页面,可以看到details-viewer授权策略。

  3. 在浏览器地址栏,输入http://{您的ASM网关地址}/productpage,访问Bookinfo应用。

    如下图所示,可以正常访问左侧的Details服务,但无法访问右侧的Reviews服务。Details服务

步骤四:配置Reviews服务的授权策略

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择网格安全中心 > 授权策略

  3. 任选以下方式创建授权策略。

    方式一:使用YAML创建授权策略

    1. 授权策略页面,单击使用YAML创建

    2. 创建页面,选择命名空间default,选择任意场景模版,将以下YAML模板粘贴到YAML区域,单击创建

      kind: AuthorizationPolicy
      apiVersion: security.istio.io/v1beta1
      metadata:
        name: reviews-viewer
        namespace: default
      spec:
        action: ALLOW
        rules:
          - to:
              - operation:
                  methods:
                    - GET
          - from:
              - source:
                  principals:
                    - cluster.local/ns/default/sa/bookinfo-productpage
        selector:
          matchLabels:
            app: reviews

    方式二:使用图形化界面创建授权策略。

    1. 授权策略页面,单击创建

    2. 创建页面,配置如下信息,单击创建

      配置项

      说明

      名称

      设置为reviews-viewer

      策略类型

      选择允许

      命名空间

      工作负载生效页签,设置命名空间default

      生效范围

      选择Service

      工作负载

      选择reviews

      请求匹配规则

      1. 添加请求来源区域,打开请求身份(Principals)开关,设置值为cluster.local/ns/default/sa/bookinfo-productpage

        说明

        bookinfo-productpageserviceAccount的参数值,由步骤1获取。

      2. 添加请求目标区域,打开HTTP方法(Methods)开关,设置值为GET

    创建完成后,在授权策略页面,可以看到reviews-viewer授权策略。

  4. 在浏览器地址栏,输入http://{您的ASM网关地址}/productpage,访问Bookinfo应用。

    如下图所示,左侧的Details服务和右侧的Reviews服务均可正常访问。Reviews服务

相关文档