全部產品
Search
文件中心

Microservices Engine:註冊中心細粒度鑒權

更新時間:Sep 04, 2024

MSE Nacos註冊中心能夠按照執行個體、命名空間、Group、ServiceName設定存取權限,降低某個執行個體被惡意使用者非法擷取、修改的風險。本文介紹如何在MSE上為Nacos註冊中心配置細粒度鑒權。

前提條件

使用說明

本文檔內容涉及圖中引擎直連鏈路的存取權限的開啟和配置,授權成功後,Nacos Client可以通過RAM使用者訪問MSE的Nacos。

投影片1.JPG

說明

關於引擎管控鏈路的訪問鑒權配置和使用,即為RAM使用者授予使用MSE控制台許可權的具體操作,請參見註冊配置中心授權

步驟一:建立細粒度權限原則

  1. 使用Resource Access Management員登入RAM控制台

  2. 在左側導覽列,選擇許可權管理 > 權限原則

  3. 權限原則頁面,單擊建立權限原則

  4. 建立權限原則頁面,單擊指令碼編輯頁簽。

  5. 輸入權限原則內容,然後單擊繼續編輯基本資料

    • 註冊中心細粒度鑒權所涉及的許可權操作(Action)如下表:

      許可權操作名稱(Action)

      說明

      mse:QueryNacosNaming

      微服務引擎MSE Nacos的讀取服務許可權,表示可以通過SDK擷取和監聽服務。

      mse:UpdateNacosNaming

      微服務引擎MSE Nacos的更新服務許可權,表示可以通過SDK發布和修改服務。

    • 註冊中心細粒度鑒權所涉及的操作對象(Resource)需滿足以下規則:

      acs:mse:*:*:instance/{instance_id}/{namespaceId}/{group}/naming/{serviceName}

      您也可以參考下文的常用樣本,修改策略內容。

    • 關於權限原則文法結構的詳情,請參見權限原則文法和結構

  6. 輸入權限原則名稱備忘

  7. 檢查並最佳化權限原則內容。

    • 基礎權限原則最佳化

      系統會對您添加的權限原則語句自動進行基礎最佳化。基礎權限原則最佳化會完成以下任務:

      • 刪除不必要的條件。

      • 刪除不必要的數組。

    • 可選:進階權限原則最佳化

      您可以將滑鼠懸浮在可選:進階策略最佳化上,單擊執行,對權限原則內容進行進階最佳化。進階權限原則最佳化功能會完成以下任務:

      • 拆分不相容操作的資源或條件。

      • 收縮資源到更小範圍。

      • 去重或合并語句。

  8. 單擊確定

步驟二:授予RAM使用者或RAM角色許可權

授予RAM使用者權限

  1. 使用Resource Access Management員登入RAM控制台

  2. 在左側導覽列,選擇身份管理 > 使用者

  3. 使用者頁面,單擊目標RAM使用者操作列的添加許可權

    image

    您也可以選中多個RAM使用者,單擊使用者列表下方的添加許可權,為RAM使用者大量授權。

  4. 新增授權面板,選擇權限原則自訂策略。在文字框中輸入步驟一已建立的權限原則名稱,單擊搜尋到的權限原則名稱,然後單擊確認新增授權

  5. 新增授權面板,確認授權成功後,單擊關閉

授予RAM角色許可權

  1. 使用Resource Access Management員登入RAM控制台

  2. 在左側導覽列,選擇身份管理 > 角色

  3. 角色頁面,單擊目標RAM角色操作列的新增授權

    image

    您也可以選中多個RAM角色,單擊角色列表下方的新增授權,為RAM角色大量授權。

  4. 新增授權面板,選擇權限原則自訂策略。在文字框中輸入步驟一已建立的權限原則名稱,單擊搜尋到的權限原則名稱,然後單擊確認新增授權

  5. 新增授權面板,確認授權成功後,單擊關閉

常用樣本

  • 授予使用者某些執行個體的唯讀服務的許可權。

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "mse:QueryNacosNaming"
                ],
                "Resource": [
                    "acs:mse:*:*:instance/${instanceId1}",
                    "acs:mse:*:*:instance/${instanceId2}"
                ],
                "Effect": "Allow"
            }
        ]
    }
  • 授予使用者某些執行個體讀取和修改服務的許可權。

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "mse:QueryNacosNaming",
                    "mse:UpdateNacosNaming"
                ],
                "Resource": [
                    "acs:mse:*:*:instance/${instanceId1}",
                    "acs:mse:*:*:instance/${instanceId2}"
                ],
                "Effect": "Allow"
            }
        ]
    }
  • 授予使用者只能讀取某個執行個體中的某個命名空間服務的許可權。

    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "mse:QueryNacosNaming",
                "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}"
            }
        ],
        "Version": "1"
    }
  • 授予使用者能讀取和修改某個執行個體中某個命名空間下的${group}服務的許可權。

    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "mse:QueryNacosNaming",
                    "mse:UpdateNacosNaming"
                ],
                "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}"
            }
        ],
        "Version": "1"
    }
  • 授予使用者只能讀取某個${group}下的${serviceName}服務的許可權。

    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "mse:QueryNacosNaming",
                "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}/naming/${serviceName}"
            }
        ],
        "Version": "1"
    }
  • 授予使用者能讀取和修改某個${group}下的${serviceName}服務的許可權。

    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "mse:QueryNacosNaming",
                    "mse:UpdateNacosNaming"
                ],
                "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}/naming/${serviceName}"
            }
        ],
        "Version": "1"
    }