本文向您介紹如何通過STS Token配置的方式實現風險識別產品的跨賬號使用。
STS Token應用場景
STS Token可以支持跨賬號使用風險識別產品,一個典型的場景是:同一個客戶的A賬號購買了風險識別流量包,而在正式使用時,其期望通過B賬號發起請求,此時可以通過角色扮演調用。這樣做的好處是滿足了跨賬號調用的同時,保護了A賬號的AK信息。
STS Token配置方式
以上述場景為例,首先需要客戶登錄已購買的A賬號,并對B賬號進行權限配置,才能實現跨賬號調用。
1. 登錄已購買的賬號A。
2. 新建角色
選擇可信實體類型為阿里云賬號,設置角色名稱、并填寫B賬號為信任的云賬號。
3. 為角色授權
在角色創建成功頁面,點擊為角色授權。添加權限值:AliyunYundunSAFFullAccess。
4. 獲取角色ARN
點擊角色名,進入角色詳情展示頁,復制右側ARN信息。ARN信息在B賬號調用時需要使用,請妥善保管。
至此,B賬號已經可以通過主賬號調用風險識別產品了。若需要授權B賬號的子賬號進行調用,則還需要開通子賬號的STS調用權限,授權策略為:AliyunSTSAssumeRoleAccess。
STS Token調用代碼Demo
1. 獲取STS調用信息
public static AssumeRoleResponse.Credentials getSTSToken() throws Exception {
String stsRegionId = "cn-shanghai";
// 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
// 強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
// 本示例通過從環境變量中讀取B賬號的RAM用戶AccessKey,來實現API訪問的身份驗證。運行本示例代碼前,請確認配置這兩個環境變量:ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_CLOUD_ACCESS_KEY_SECRET.
String bAccessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String bAccessSecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
IClientProfile profile = DefaultProfile.getProfile(stsRegionId, bAccessId, bAccessSecret);
IAcsClient client = new DefaultAcsClient(profile);
AssumeRoleRequest request = new AssumeRoleRequest();
// 指定請求方法
request.setSysMethod(com.aliyuncs.http.MethodType.POST);
request.setAcceptFormat(FormatType.JSON);
// 獲取方式詳細見步驟1.3
request.setRoleArn("{your_role_ARN}");
// A賬號的主賬號ID
request.setRoleSessionName("{account_A_main_user_id}");
AssumeRoleResponse httpResponse = client.getAcsResponse(request);
return httpResponse.getCredentials();
}
2. 通過STS Token方式調用
AssumeRoleResponse.Credentials credentials = getSTSToken();
IClientProfile profile = DefaultProfile.getProfile("cn-shanghai", credentials.getAccessKeyId(), credentials.getAccessKeySecret(), credentials.getSecurityToken());
文檔內容是否對您有幫助?