本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
您可以為RAM用戶授予特定的權限,通過RAM用戶訪問密鑰長期訪問您的Tablestore資源。相較于阿里云賬號訪問密鑰,使用RAM用戶訪問密鑰訪問Tablestore資源更加安全。
步驟一:創建RAM用戶
使用阿里云賬號(主賬號)或RAM管理員登錄RAM控制臺。
在左側導航欄,選擇 。
在用戶頁面,單擊創建用戶。
在創建用戶頁面的用戶賬號信息區域,設置用戶基本信息。
登錄名稱:可包含英文字母、數字、半角句號(.)、短劃線(-)和下劃線(_),最多64個字符。
顯示名稱:最多包含128個字符或漢字。
標簽:單擊,然后輸入標簽鍵和標簽值。為RAM用戶綁定標簽,便于后續基于標簽的用戶管理。
說明單擊添加用戶,可以批量創建多個RAM用戶。
在訪問方式區域,選擇OpenAPI調用訪問,然后單擊確定。
根據界面提示,完成安全驗證。
單擊復制,保存訪問密鑰(AccessKey ID和AccessKey Secret)。
重要RAM用戶的AccessKey Secret只在創建時顯示,不支持查看,請妥善保管。
步驟二:為RAM用戶授予表格存儲的只讀權限
使用默認系統策略
授予RAM用戶AliyunOTSReadOnlyAccess權限。具體操作,請參見為RAM用戶授權。
如果需要管理表格存儲,例如創建實例等, 請授予RAM用戶AliyunOTSFullAccess權限。
如果需要只讀訪問表格存儲,例如讀取表中數據等,請授予RAM用戶AliyunOTSReadOnlyAccess權限。
如果需要只寫訪問表格存儲,例如創建數據表等,請授予RAM用戶AliyunOTSWriteOnlyAccess權限。
使用自定義策略
創建自定義權限策略。
在左側導航欄,選擇權限管理>權限策略。
在權限策略頁面,單擊創建權限策略。
在創建權限策略頁面,單擊腳本編輯,然后在策略文檔輸入框中錄入在ram-test-app實例中讀取數據的權限。具體配置示例如下。
警告以下示例僅供參考。您需要根據實際需求配置更細粒度的授權策略,防止出現權限過大的風險。更細粒度的授權策略配置,請參見自定義RAM Policy。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ots:BatchGet*", "ots:Describe*", "ots:Get*", "ots:List*", "ots:Consume*", "ots:Search", "ots:ComputeSplitPointsBySize" ], "Resource": [ "acs:ots:*:*:instance/ram-test-app*" ], "Condition": {} } ] }
策略配置完成后,單擊繼續編輯基本信息。
在基本信息區域,填寫策略名稱為RamTestPolicy,然后單擊確定。
為RAM用戶授予自定義權限策略。
在左側導航欄,選擇
。在用戶頁面,找到目標RAM用戶。
單擊RAM用戶右側的添加權限。
在添加權限頁面下的自定義策略頁簽,選擇已創建的自定義權限策略RamTestPolicy。
單擊確定。
步驟三:使用RAM用戶訪問密鑰請求Tablestore列出表名稱
請求Tablestore列出表名稱的Java示例代碼如下:
import com.alicloud.openservices.tablestore.SyncClient;
import com.alicloud.openservices.tablestore.core.ResourceManager;
import com.alicloud.openservices.tablestore.core.auth.CredentialsProviderFactory;
import com.alicloud.openservices.tablestore.core.auth.EnvironmentVariableCredentialsProvider;
import com.alicloud.openservices.tablestore.model.ListTableResponse;
public class RamAccessKeySample {
public static void main(String[] args) {
// yourInstance 填寫表格存儲實例名稱。
String instanceName = "yourInstance";
// yourEndpoint 填寫表格存儲實例的訪問地址。例如 https://yourInstance.cn-hangzhou.ots.aliyuncs.com。
String endPoint = "yourEndpoint";
// 強烈建議不要把訪問憑證保存到工程代碼里,否則可能導致訪問憑證泄露,威脅您賬號下所有資源的安全。
// 本代碼示例以從環境變量中獲取訪問憑證為例。運行本代碼示例之前,請先配置環境變量:TABLESTORE_ACCESS_KEY_ID和TABLESTORE_ACCESS_KEY_SECRET。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// 創建OTSClient實例
SyncClient client = new SyncClient(endPoint, credentialsProvider, instanceName, null, new ResourceManager(null, null));
//查詢表名稱
ListTableResponse listTableResponse = client.listTable();
listTableResponse.getTableNames().forEach(System.out::println);
// 關閉OTSClient
client.shutdown();
}
}