五月婷婷丁香性爱|j久久一级免费片|久久美女福利视频|中文观看在线观看|加勒比四区三区二|亚洲裸女视频网站|超碰97AV在线69网站免费观看|有码在线免费视频|久久青青日本视频|亚洲国产AAAA

如何使用憑據(jù)管理服務(wù)解決AK&SK泄露問題

憑據(jù)管理,即云憑據(jù)管理服務(wù)(Cloud Secret Management Service,CSMS),是一種安全、可靠、簡單易用的憑據(jù)托管服務(wù)。用戶或應(yīng)用程序通過憑據(jù)管理服務(wù),創(chuàng)建、檢索、更新、刪除憑據(jù),輕松實現(xiàn)對敏感憑據(jù)的全生命周期的統(tǒng)一管理,有效避免程序硬編碼或明文配置等問題導(dǎo)致的敏感信息泄露以及權(quán)限失控帶來的業(yè)務(wù)風險。

應(yīng)用場景

保存AK&SK,防止泄露。

應(yīng)用原理

通過統(tǒng)一身份認證服務(wù)(Identity and Access Management,IAM )對彈性云服務(wù)器(Elastic Cloud Server,ECS)的委托獲取臨時訪問密鑰來保護AK&SK。

訪問憑證按照時效性可分為永久憑證和臨時憑證,相較于永久性訪問憑證,例如用戶名和密碼,臨時訪問密鑰因為有效期短且刷新頻率高,所以安全性更高。因此,您可以為ECS實例授予IAM委托,使ECS實例內(nèi)的應(yīng)用程序可以使用臨時AK&SK+SecurityToken訪問CSMS,不需要保存臨時訪問密鑰,每次需要時動態(tài)獲取,也可以緩存在內(nèi)存里定時更新。

操作流程

圖1 ECS委托操作流程

約束限制

管理員帳號或擁有ECS權(quán)限的IAM用戶才能為ECS實例配置委托。

操作步驟

IAM創(chuàng)建ECS委托。

a.登錄管理控制臺。

b.單擊頁面左側(cè),選擇“管理與監(jiān)督 > 統(tǒng)一身份認證服務(wù)”,默認進入“用戶”界面。

c.在左側(cè)導(dǎo)航樹中,選擇“委托”,進入“委托”頁面。

d.單擊右上角的“創(chuàng)建委托”。

e.在彈出的“創(chuàng)建委托”對話框中,填寫對應(yīng)參數(shù)。參數(shù)說明如表 創(chuàng)建委托參數(shù)說明所示。

圖2 創(chuàng)建委托

表1 創(chuàng)建委托參數(shù)說明

參數(shù)名稱
參數(shù)說明

委托名稱

填寫自定義的委托名稱。下文以“ECS_TO_CSMS”為例。

委托類型

選擇“云服務(wù)”。

云服務(wù)

選擇“彈性云服務(wù)器 ECS 裸金屬服務(wù)器 BMS”。

持續(xù)時間

選擇持續(xù)時間,可選擇“永久”、“一天”、“自定義”。

描述

(可選)填寫委托信息。

f.單擊“下一步”,進入“授權(quán)”頁面。

g.單擊頁面右上角“新建策略”,若已存在需使用的策略忽略此步驟。

1、在“新建策略”頁面配置參數(shù),參數(shù)詳情如表 新建策略參數(shù)說明所示。

圖3 新建策略

表2 新建策略參數(shù)說明

參數(shù)名稱
參數(shù)說明

策略名稱

輸入策略名稱。

策略配置方式

選擇“可視化視圖”。

策略內(nèi)容

  1. 允許:選擇“允許”。
  2. 云服務(wù):選擇“憑據(jù)管理服務(wù)CSMS”。
  3. 操作:選擇您的讀寫權(quán)限。
  4. 選擇資源(可選):選擇訪問的資源范圍。
  5. 特定資源:訪問特定的憑據(jù)。
  6. 說明:
  7. 可以選擇“通過資源路徑指定”訪問特定的憑據(jù),通過“添加資源路徑”加入可以訪問的憑據(jù)名稱。
  8. 所有資源:訪問所有憑據(jù)。
  9. 請求條件(可選):單擊“添加條件”,選擇條件鍵、運算符,填寫相應(yīng)的值。


策略描述

(可選)輸入策略描述。

為委托選擇策略。勾選策略后,單擊“下一步”。

選擇授權(quán)范圍方案,單擊“確定”。

所有資源:授權(quán)后,IAM用戶可以根據(jù)權(quán)限使用帳號中所有資源,包括企業(yè)項目、區(qū)域項目和全局服務(wù)資源。

指定企業(yè)項目資源:授權(quán)后,用戶根據(jù)權(quán)限使用已選企業(yè)項目中的資源。

指定區(qū)域項目資源:授權(quán)后,用戶根據(jù)權(quán)限使用已選區(qū)域項目中的資源。

2、將委托(如ECS_TO_CSMS)賦予ECS實例。

若ECS實例未創(chuàng)建,請參考自定義購買彈性云服務(wù)器。在步驟三:高級配置中,“委托”選擇新建的委托(如ECS_TO_CSMS)。

若ECS實例已創(chuàng)建,請按照如下流程:

單擊頁面左側(cè),選擇“管理與監(jiān)督 > 統(tǒng)一身份認證服務(wù)”,進入“彈性云服務(wù)器”界面。

單擊需要配置委托的ECS實例的“名稱”,進入“基本信息”界面。

在“管理信息”中,單擊選擇委托(如ECS_TO_CSMS)。

圖4 選擇委托

3、運行在ECS實例上的應(yīng)用程序調(diào)用獲取委托臨時憑證的API,即可獲得用于訪問CSMS的臨時AK&SK+SecrityToken。

a.獲取臨時AK&SK(Security Key 目錄下 ),詳情請參見元數(shù)據(jù)獲取。

URI

/openstack/latest/securitykey

方法

支持 GET 請求

返回數(shù)據(jù)內(nèi)容:

{

"credential":{

"access": "LDHZK30XXXXXXXXXXXXV",

"secret":"gyqcdzVXXXXXXXXXXXXXXXXXXXXXXXMl6",

"securitytoken": "El9FI2C65qXXXXXXXXXXXXXXXXXXXXXnkcaoV",

"expires_at": "2022-07-14T12:09:24.147000Z"

        }

}

說明:提取返回數(shù)據(jù)中的“access”、“secret”、“securitytoken”用于訪問CSMS。

ECS會為您自動輪換臨時憑證,從而確保每次申請的臨時憑證安全、有效。

b.使用臨時AK&SK+SecurityToken訪問CSMS。

查詢憑證列表示例如下,詳情請參見憑據(jù)管理服務(wù)。

package com.huaweicloud.sdk.test;

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.csms.v1.region.CsmsRegion;
import com.huaweicloud.sdk.csms.v1.*;
import com.huaweicloud.sdk.csms.v1.model.*;

public class ListSecretsSolution {

public static void main(String[] args) {
String ak = "<YOUR AK>";
String sk = "<YOUR SK>";
String securitytoken = "<YOUR SecurityToken>";

ICredential auth = new BasicCredentials()
.withAk(ak)
.withSk(sk)
.withSecurityToken(securitytoken);

CsmsClient client = CsmsClient.newBuilder()
.withCredential(auth)
.withRegion(CsmsRegion.valueOf("cn-north-1"))
.build();
ListSecretsRequest request = new ListSecretsRequest();
try {
ListSecretsResponse response = client.listSecrets(request);
System.out.println(response.toString());
} catch (ConnectionException e) {
e.getMessage();
} catch (RequestTimeoutException e) {
e.getMessage();
} catch (ServiceResponseException e) {
e.getMessage();
System.out.println(e.getHttpStatusCode());
System.out.println(e.getErrorCode());
System.out.println(e.getErrorMsg());
}
}
}