阿里雲許可權管理機制包括存取控制和臨時安全性權杖,可以根據需求使用不同許可權的RAM使用者來訪問Tablestore,也支援為使用者提供訪問的臨時授權。使用RAM和STS能極大地提高管理的靈活性和安全性。
背景資訊
RAM和STS解決的一個核心問題是如何在不暴露主帳號的AccessKey的情況下安全地授權其他人訪問。因為主帳號的AccessKey泄露會帶來極大的安全風險,其他人可以隨意操作該帳號下所有的資源、盜取重要訊息等。
RAM提供了一種長期有效許可權控制機制,通過分出不同許可權的RAM使用者,將不同的許可權分給不同的使用者,即使RAM使用者的AccessKey泄露也不會造成全域的資訊泄露。RAM使用者一般情況也是長期有效。因此RAM使用者的AccessKey也不能泄露。
相對於RAM提供的長效控制機制,STS提供的是一種臨時訪問授權,通過STS可以擷取臨時的AccessKey和Token,這些資訊可以直接發給臨時使用者用來訪問Tablestore。一般來說,從STS擷取的許可權會受到更加嚴格的限制,並且擁有時間限制,因此即使這些資訊泄露,對於系統的影響也很小。
配置RAM使用者權限
- 建立RAM使用者。具體操作,請參見建立RAM使用者。
- 為RAM使用者授權,根據實際配置RAM使用者的許可權。具體操作,請參見為RAM使用者授權。
- 如果需要管理Tablestore,例如建立執行個體等,請授予RAM使用者AliyunOTSFullAccess許可權。
- 如果需要唯讀訪問Tablestore,例如讀取表中資料等,請授予RAM使用者AliyunOTSReadOnlyAccess許可權。
- 如果需要唯寫訪問Tablestore,例如建立資料表等,請授予RAM使用者AliyunOTSWriteOnlyAccess許可權。
- 為RAM使用者佈建多因素認證。具體操作,請參見為RAM使用者啟用多因素認證。
配置臨時使用者權限
- 建立臨時角色及授權。
- 建立可信實體為阿里雲帳號的RAM角色。具體操作,請參見建立可信實體為阿里雲帳號的RAM角色。
建立名稱分別為RamTestAppReadOnly和RamTestAppWrite兩個角色,RamTestAppReadOnly用於讀取等操作,RamTestAppWrite用於上傳檔案的操作。
- 建立自訂策略。具體操作,請參見建立自訂權限原則。
说明 如果需要更精細的許可權控制,您可以自訂策略的許可權。更多資訊,請參見自訂許可權。建立名稱分別為ram-test-app-readonly和ram-test-app-write的兩個策略。
- ram-test-app-readonly策略
{ "Statement": [ { "Effect": "Allow", "Action": [ "ots:BatchGet*", "ots:Describe*", "ots:Get*", "ots:List*" ], "Resource": [ "acs:ots:*:*:instance/ram-test-app", "acs:ots:*:*:instance/ram-test-app/table/*" ] } ], "Version": "1" }
- ram-test-app-write策略
{ "Statement": [ { "Effect": "Allow", "Action": [ "ots:Create*", "ots:Insert*", "ots:Put*", "ots:Update*", "ots:Delete*", "ots:BatchWrite*" ], "Resource": [ "acs:ots:*:*:instance/ram-test-app", "acs:ots:*:*:instance/ram-test-app/table/*" ] } ], "Version": "1" }
- ram-test-app-readonly策略
- 為臨時角色授權。具體操作,請參見為RAM角色授權。
為ramtestappreadonly角色賦予ram-test-app-readonly(唯讀訪問Tablestore)策略,為ramtestappwrite角色賦予ram-test-app-write(唯寫Tablestore)策略。
授權完成後,記錄角色的ARN,即需要扮演角色的ID,如下圖所示。
- 建立可信實體為阿里雲帳號的RAM角色。具體操作,請參見建立可信實體為阿里雲帳號的RAM角色。
- 臨時授權訪問。
- 建立自訂策略。具體操作,請參見建立自訂權限原則。
说明 如果需要更精細的許可權控制,您可以自訂策略的許可權。更多資訊,請參見自訂許可權。建立名稱分別為AliyunSTSAssumeRolePolicy2016011401和AliyunSTSAssumeRolePolicy2016011402的兩個策略。其中Resource為角色的ARN資訊。
- AliyunSTSAssumeRolePolicy2016011401
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "acs:ram:198***237:role/ramtestappreadonly" } ] }
- AliyunSTSAssumeRolePolicy2016011402
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "acs:ram:198***237:role/ramtestappwrite" } ] }
- AliyunSTSAssumeRolePolicy2016011401
- 授權RAM使用者臨時角色。具體操作,請參見為RAM使用者授權。
將自訂策略AliyunSTSAssumeRolePolicy2016011401和AliyunSTSAssumeRolePolicy2016011402授權給名稱為ram_test_app的RAM使用者。
- 建立自訂策略。具體操作,請參見建立自訂權限原則。
- 從STS擷取的臨時訪問憑證。具體操作,請參見AssumeRole。
- 使用臨時授權讀寫資料。
您可以使用臨時授權調用不同語言的SDK訪問Tablestore。Java SDK請參考以下方式建立OTSClient對象,傳入從STS擷取的AccessKeyId、AccessKeySecret和SecurityToken等參數。
OTSClient client = new OTSClient(otsEndpoint, stsAccessKeyId, stsAccessKeySecret, instanceName, stsToken);