全部產品
Search
文件中心

Alibaba Cloud Service Mesh:為HTTP流量設定授權策略

更新時間:Jun 30, 2024

當您需要精細控制服務間的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. 登入Container Service管理主控台,在左側導覽列選擇叢集

    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服務

相關文檔