全部產品
Search
文件中心

ApsaraMQ for RocketMQ:使用者身份識別

更新時間:Dec 27, 2024

為提高資料安全性,雲訊息佇列 RocketMQ 版服務端會在用戶端接入時對用戶端進行身分識別驗證,僅通過驗證的用戶端才能串連服務端進行訊息收發。同時雲訊息佇列 RocketMQ 版支援ACL身份識別,您可以按需為指定ACL使用者賦予具體的Topic或Group的發布訂閱許可權,實現用戶端許可權的精細化控制。

使用限制

若執行個體未開通使用者身份識別功能,則需要提交工單申請開通,申請通過後控制台才會出現存取控制的操作入口。

功能原理

雲訊息佇列 RocketMQ 版的存取控制支援兩種類型:智能身份識別和ACL身份識別,執行個體需要至少選擇其中一種存取控制類型,用於控制用戶端接入服務端時的認證方式。具體操作,請參見存取控制操作

  • 智能身份識別:執行個體預設的認證方式。用戶端通過使用者名稱密碼進行認證,只有通過認證的用戶端才能接入雲訊息佇列 RocketMQ 版服務端進行訊息收發。

  • ACL身份識別:提供更精確的許可權控制。除了用戶端身份進行識別外,還支援對執行個體下的具體Topic和Group資源進行許可權控制。

  • 雙認證方式:如果同時選擇了兩種認證方式,系統會根據用戶端填寫的使用者名稱密碼自動匹配。預設使用者名匹配智能身份識別,自訂使用者名稱匹配ACL身份識別。

智能身份識別認證流程(執行個體預設配置)

  • 智能身份識別方式下,VPC訪問支援免身份識別,系統會根據VPC存取點智能識別使用者身份,無需設定使用者名稱密碼。

  • 若使用公網訪問,或關閉免身份識別功能,則用戶端接入時,必須在用戶端代碼中設定使用者名稱密碼。

  • 系統會為每個執行個體初始化產生一個唯一的預設使用者名密碼,智能身份識別方式下,用戶端中需要設定的使用者名稱密碼即為待訪問執行個體的預設使用者名密碼。擷取方式,請參見擷取執行個體的預設使用者名密碼

  • 執行個體預設的使用者名稱具備訪問該執行個體下所有Topic和Group的訊息發送和訂閱許可權,即用戶端使用系統預設使用者名密碼通過認證後,可使用執行個體下的所有Topic和Group進行訊息收發。

ACL身份識別認證流程

  • ACL身份識別是基於ACL使用者進行許可權控制,您需要自訂建立一個ACL使用者,再為其授予指定資源的許可權。具體操作,請參見建立ACL使用者為ACL使用者授權

  • 使用ACL身份識別時,用戶端代碼中必須設定ACL使用者名稱密碼進行身份認證。認證通過後,用戶端僅對授予了相關許可權的資源有操作許可權。

    例如給user1授予了Topic A的訊息發布許可權,則用戶端使用user1的使用者名稱密碼通過了身份認證後,只能向Topic A發送訊息,不能訂閱Topic A的訊息。

  • 若ACL使用者建立後未進行授權,則該使用者預設沒有任何訊息發布和訂閱的許可權。

存取控制操作

  1. 登入雲訊息佇列 RocketMQ 版控制台,在左側導覽列單擊執行個體列表

  2. 在頂部功能表列選擇地區,如華東1(杭州),然後在執行個體列表中,單擊目標執行個體名稱。

  3. 在左側導覽列單擊访问控制,然後在存取控制類型後單擊編輯

  4. 在彈出的提示框中勾選智能身份识别ACL身份识别至少一種存取控制類型,然後單擊确定

智能身份識別

重要
  • 僅當存取控制類型勾選智能身份识别時,控制台才顯示智能身份識別相關操作入口。

  • 修改系統預設使用者名密碼、禁用使用者名稱會導致使用預設使用者名密碼進行認證的用戶端無法訪問雲訊息佇列 RocketMQ 版執行個體,請謹慎操作。

設定內網免身份識別

  1. 在左側導覽列访问控制,單擊智能身份识别頁簽。

  2. 内网免身份识别選擇開啟或關閉開關。

    • 內網免身份識別開啟時(預設狀態):通過VPC訪問的用戶端無需設定使用者名稱密碼,系統通過用戶端訪問存取點智能識別使用者身份;公網訪問時,用戶端需要設定使用者名稱密碼以進行身分識別驗證。

    • 內網免身份識別關閉時:VPC訪問和公網訪問情境下,用戶端都需要設定使用者名稱密碼。

擷取執行個體的預設使用者名密碼

當執行個體的存取控制類型為智能身份識別時,公網訪問或VPC訪問關閉內網免身份識別情境下,用戶端訊息收發代碼中需要填寫執行個體的預設使用者名密碼。

  1. 访问控制頁面單擊智能身份识别頁簽。

  2. 在使用者名稱列表中查看執行個體的預設使用者名並複製執行個體密碼。

ACL身份識別

使用ACL身份識別進行存取控制時,您需要建立ACL使用者,並且為ACL使用者授予指定資源的許可權,新建立的ACL使用者預設沒有任何資源的許可權。

用戶端在進行串連時,需要設定已建立並授權的ACL使用者和密碼,用於服務端對用戶端進行身份認證,認證通過後,用戶端只可以使用ACL許可權範圍內的資源進行訊息收發。

重要
  • 僅當存取控制類型勾選ACL身份识别時,控制台才顯示ACL用户ACL权限相關操作入口。

  • 禁用或刪除ACL使用者名稱會導致使用該ACL使用者名稱密碼進行認證的用戶端無法訪問雲訊息佇列 RocketMQ 版執行個體,請謹慎操作。

單ACL使用者操作

  1. 建立ACL使用者

    1. 在左側導覽列單擊访问控制,然後單擊ACL用户頁簽。

    2. ACL用户頁面單擊新增使用者,在彈出的面板中輸入相關參數完成建立。

  2. 為ACL使用者授權

    1. 访问控制頁面單擊ACL权限頁簽,然後單擊添加权限

    2. 添加权限面板填寫相關參數,然後單擊确定

    ACL使用者授權參數

    參數

    說明

    樣本

    用户名

    在下拉框中選擇已建立的ACL使用者,表示需要為哪個ACL使用者授權。

    user_mq

    资源类型

    • TOPIC:為使用者授予Topic層級許可權。

    • GROUP:為使用者授予Group資源許可權。

    TOPIC

    资源名

    指定授予許可權的資源範圍,根據資源類型輸入Topic名稱或Group名稱。該參數支援以下設定方式

    • 輸入指定資源名稱,表示只對該使用者授予這一個Topic或Group的操作許可權。

    • 輸入*表示進行全部資源匹配,表示授予該ACL使用者執行個體下所有Topic或Group的操作許可權。

    • 輸入字元加*進行後模糊比對,將匹配上的資源的操作許可權授予該ACL使用者。

    normal_topic

    操作类型

    表示需要對指定資源進行哪些操作。當資源類型為GROUP時,操作类型僅支援读取

    • 写入:表示被授予許可權的ACL使用者擁有指定Topic的訊息發送許可權。

    • 读取:表示被授予許可權的ACL使用者擁有指定Topic或Group的訊息訂閱許可權。

    写入

    IP白名单

    設定允許訪問資源的用戶端IP地址或IP位址區段,多個IP地址或位址區段之間以英文分號(;)或者逗號(,)隔開。

    若不設定,則表示不對用戶端IP地址進行限制。

    192.168.xx.xx

    决策

    • 允许:表示對上述操作類型中的許可權允許執行。

    • 拒绝:表示對上述操作類型中的許可權拒絕執行。

    說明

    當某個資源同時被授予了允許和拒絕的權限原則,則優先拒絕的策略生效。

    允许

    如表中樣本值所示,用戶端在接入服務端時,可使用ACL使用者名稱 user_mq 及其密碼進行身份認證。若用戶端的IP地址為白名單中的 192.168.xx.xx,則允許其接入並進行訊息收發。

    該用戶端接入後,只能向名為 normal_topic 的Topic中發送訊息,不能操作執行個體下的其他Topic或Group資源。

批量ACL使用者操作

  1. 建立多個ACL使用者,可以通過匯出/匯入模板的方式快速大量建立。

    1. 访问控制頁面單擊ACL用户頁簽。

    2. ACL用户頁面單擊导出文件导入文件

      1. 若ACL使用者列表為空白,需先建立一個ACL使用者,然後匯出模板。

      2. 在模板中填寫需要大量建立的ACL使用者資訊,再匯入模板完成大量建立。

      3. 匯入模板時,可選擇是否覆蓋已存在的使用者:

        • 覆蓋關閉:若待匯入的ACL使用者已存在,則匯入失敗。

        • 覆蓋開啟:若待匯入的ACL使用者已存在,系統將更新該使用者資訊。

      模板欄位說明如下:

      模板參數

      說明

      取值規範

      Username

      待建立ACL的使用者名稱。

      • 必須以字母開頭。

      • 只能包含字母、數字、底線(_)和短劃線(-)。

      • 長度限制為3~64個字元。

      Password

      待建立ACL的使用者密碼。

      長度限制為3~64個字元。

      AccountStatus

      使用者名稱密碼的可用狀態。

      • ENABLE:可用狀態

      • DISABLE:禁用狀態

      模板內容樣本如下:

      Username

      Password

      AccountStatus

      user1

      xxx

      ENABLE

      user2

      xxx

      DISABLE

      user3

      xxx

      ENABLE

  2. 批量為ACL使用者授權,可以通過匯出/匯入模板方式快速大量建立。

    1. 访问控制頁面單擊ACL权限頁簽。

    2. ACL权限頁面單擊导出文件导入文件

      1. 若當前執行個體下的ACL許可權列表為空白,需先建立一個ACL許可權,然後匯出模板。

      2. 在模板中填寫需要大量建立的ACL許可權資訊,再通過匯入模板完成大量建立。

      3. 匯入模板時,可選擇是否覆蓋已存在的ACL許可權。系統以使用者名稱+資源類型+資源名為依據判斷是否是同一條ACL許可權記錄:

        • 覆蓋關閉:若待匯入的ACL許可權已存在,則匯入失敗,系統不會修改已有的ACL許可權資料。

        • 覆蓋開啟:若待匯入的ACL許可權已存在,系統將更新該ACL許可權資訊。

      模板欄位說明如下:具體參數取值規範,請參見上文ACL使用者授權參數

      模板參數

      說明

      Username

      待授權的ACL使用者名稱。

      填寫的ACL使用者名稱必須為已建立的ACL使用者。

      ResourceType

      待授權的資源類型。

      ResourceName

      待授權的資源名稱。

      Actions

      表示需要對指定資源進行哪些操作。

      • PUB:寫入,即訊息發送許可權。

      • SUB:讀取,即訊息訂閱許可權。

      • PUB|SUB:同時擁有訊息發送和訂閱許可權。僅在資源類型為Topic時生效。

      SourceIps

      設定允許訪問資源的用戶端IP地址或IP位址區段

      Decision

      授與權限決策。

      • Allow:表示允許使用相關許可權。

      • Deny:表示拒絕使用相關許可權。

      模板內容樣本如下:

      Username

      ResourceType

      ResourceName

      Actions

      SourceIps

      Decision

      user1

      TOPIC

      topic_normal

      PUB

      0.0.0.0/0

      Allow

      user2

      TOPIC

      *

      PUB|SUB

      0.0.0.0/0

      Allow

      user3

      GROUP

      Group_a

      SUB

      192.168.xx.xx

      Deny

擷取ACL使用者名稱密碼

使用ACL身份識別進行存取控制時,不管是VPC訪問還是公網訪問,都需要用戶端設定ACL使用者名稱和密碼,以便服務端對用戶端身份進行認證。

  1. 在左側導覽列單擊访问控制,然後單擊ACL用户頁簽。

  2. ACL用户頁面的使用者列表中查看已建立的ACL使用者並複製密碼。