如果藉助ECS執行個體RAM角色,則無需配置AccessKey(AK)即可訪問ACM,從而提高安全性。
遷移到MSE Nacos
ACM進入下線狀態,所有組態管理相關的需求由MSE中的Nacos承接(ACM獨享版,更好的安全和穩定性)。您需要在ACM控制台匯出配置,然後在MSE控制台匯入之前置出的配置即可完成遷移。具體操作,請參見將應用配置從ACM遷移到MSE Nacos。
背景資訊
以往,如果部署在ECS執行個體中的應用程式需要訪問ACM,必須將AccessKey以設定檔或其他形式儲存在ECS執行個體中,這在一定程度上增加了AccessKey管理的複雜性,並且降低了AccessKey的保密性。建立AccessKey的具體操作,請參見建立AccessKey。
現在,藉助ECS執行個體RAM角色,您可以將RAM角色和ECS執行個體關聯起來,然後將RAM角色名稱告知ACM SDK(1.0.8及以上版本),此後無需配置AccessKey即可訪問ACM。另外,藉助RAM(存取控制),您可以通過角色和授權策略實現不同執行個體對ACM具有不同存取權限的目的。例如,如果配置唯讀策略,關聯了該角色的ECS就只能讀取ACM的配置,而無法新增或修改ACM配置。
前提條件
您已成功建立ECS執行個體,且ECS執行個體的網路環境為Virtual Private Cloud。
步驟一:建立RAM角色並配置授權策略
- 雲帳號登入RAM控制台。
- 在左側導覽列,單擊RAM角色管理。
- 單擊建立RAM角色,選擇可信實體類型為阿里雲服務,單擊下一步。
- 選擇角色類型,輸入角色名稱和備忘,選擇受信服務為雲端服務器,然後單擊完成。
- 在RAM角色名稱列,找到剛建立的RAM角色。
- 在操作列單擊添加許可權。
- 在添加許可權對話方塊中,通過關鍵詞搜尋授權策略
AliyunACMFullAccess
,並單擊該授權策略將其添加至右側的已選授列表,然後單擊確定。說明 如果需要用到加解密配置功能,則還要添加AliyunKMSCryptoAdminAccess
授權策略。此時,該角色已具備ACM的所有操作許可權。
步驟二:為ECS執行個體授予該RAM角色
步驟三:將RAM角色名稱告知ACM SDK並訪問配置
將RAM角色名稱告知ACM SDK(版本1.0.8及以上)方法有兩種:通過JVM參數設定和通過代碼傳參設定。
說明 JVM參數設定方式優先順序高於代碼傳參方式。
通過JVM參數設定:
格式:
-Dram.role.name=$ramRoleName
樣本:
-Dram.role.name=ECS-RAM
通過代碼傳參設定:
import java.util.Properties; import com.alibaba.edas.acm.ConfigService; import com.alibaba.edas.acm.exception.ConfigException; // 範例程式碼,僅用於樣本測試public class ACMTest { public static void main(String[] args) { try { Properties properties = new Properties(); // endpoint可以從ACM控制台“命名空間詳情”或“範例程式碼”中擷取properties.put("endpoint", "$endpoint"); // namespace可以從ACM控制台“命名空間詳情”或“範例程式碼”中擷取properties.put("namespace", "$namespace"); // 剛剛建立並綁定到ECS執行個體的RAM角色名稱,如“ECS-RAM”properties.put("ramRoleName", "$ramRoleName"); ConfigService.init(properties); // 主動擷取配置String content = ConfigService.getConfig("${dataId}", "${group}", 6000); System.out.println(content); } catch (ConfigException e) { e.printStackTrace(); } } }