全部產品
Search
文件中心

Tablestore:通過RAM使用者存取金鑰發起請求

更新時間:Dec 26, 2024

存取控制RAM可以協助您系統管理使用者身份和資源存取權限,使用RAM使用者訪問Tablestore資源比直接使用阿里雲帳號更加安全。本文介紹如何建立RAM使用者和AccessKey、為RAM使用者授權、配置系統內容變數,並通過範例程式碼示範如何使用RAM使用者的AccessKey發起請求。

建立RAM使用者

  1. 使用阿里雲帳號(主帳號)或Resource Access Management員登入RAM控制台

  2. 在左側導覽列,選擇身份管理 > 使用者

  3. 使用者頁面,單擊建立使用者

    image

  4. 建立使用者頁面的使用者帳號資訊地區,設定使用者基本資料。

    • 登入名稱稱:可包含英文字母、數字、半形句號(.)、短劃線(-)和底線(_),最多64個字元。

    • 顯示名稱:最多包含128個字元或漢字。

    • 標籤:單擊edit,輸入標籤鍵和標籤值。為RAM使用者綁定標籤,便於後續基於標籤系統管理使用者。

      說明

      通過單擊添加使用者,您可以大量建立多個RAM使用者。

  5. 訪問方式地區,選中使用永久AccessKey訪問,單擊確定

    說明

    如果需要使用RAM使用者登入和訪問阿里雲控制台,請選中控制台訪問

  6. 單擊操作列的複製,儲存RAM使用者資訊。您也可以單獨複製AccessKey ID和AccessKey Secret。

    重要

    RAM使用者的AccessKey Secret只在建立時顯示,頁面關閉後將無法查看,請及時儲存並妥善保管。

為RAM使用者授權

建立RAM使用者後,您需要為RAM使用者授予Tablestore的存取權限。

使用預設策略

AliyunOTSFullAccess為例授予RAM使用者訪問Tablestore的許可權。

重要

AliyunOTSFullAccess擁有Tablestore的完整存取,您也可以選擇以下方式進行授權。

  • 如果需要唯讀許可權,請授予RAM使用者AliyunOTSReadOnlyAccess許可權。

  • 如果需要唯寫許可權,請授予RAM使用者AliyunOTSWriteOnlyAccess許可權。

  1. 在左側導覽列,選擇身份管理 > 使用者

  2. 使用者頁面,找到目標RAM使用者。

  3. 單擊RAM使用者右側的添加許可權

    image

  4. 新增授權面板的權限原則地區,搜尋AliyunOTSFullAccess並選中。

  5. 單擊確認新增授權

使用自訂策略

  1. 建立自訂權限原則。

    1. 在左側導覽列,選擇許可權管理 > 權限原則

    2. 權限原則頁面,單擊建立權限原則

    3. 建立權限原則頁面,單擊指令碼編輯,並在輸入框中編寫指令碼,單擊確定

      說明

      以下樣本指令碼授予RAM使用者訪問單個執行個體的許可權,您可以根據需要自訂策略指令碼,例如表和API層級的許可權控制或基於情境(IP、訪問時間限制等)的許可權控制。關於RAM Policy的更多資訊,請參見自訂RAM Policy

      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "ots:*",
            "Resource": "acs:ots:*:*:instance/your_instance_name*"
          }
        ]
      }
    4. 建立權限原則對話方塊,填寫策略名稱稱,例如TestRAMPolicy,單擊確定

  2. 為RAM使用者授予自訂權限原則。

    1. 在左側導覽列,選擇身份管理 > 使用者

    2. 使用者頁面,找到目標RAM使用者。

    3. 單擊RAM使用者右側的添加許可權

    4. 新增授權面板的權限原則地區,搜尋並選中已建立的自訂權限原則。

    5. 單擊確認新增授權

配置環境變數

直接在代碼中儲存訪問憑證容易導致資訊泄露,建議您按以下操作將訪問憑證儲存在系統內容變數中。

Windows

以管理員身份運行命令提示字元,執行以下命令。

setx TABLESTORE_ACCESS_KEY_ID your_access_key_id /m
setx TABLESTORE_ACCESS_KEY_SECRET your_access_key_secret /m
macOS/Linux/Unix
export TABLESTORE_ACCESS_KEY_ID=your_access_key_id
export TABLESTORE_ACCESS_KEY_SECRET=your_access_key_secret

通過RAM使用者發起請求

準備工作

  1. Table Store控制台建立執行個體和資料表。

  2. 擷取執行個體名稱、執行個體訪問地址、地區ID。地區列表請參見地區

  3. 安裝Tablestore SDK。具體操作,請參見安裝Java SDK

範例程式碼

以下Java範例程式碼用於擷取執行個體下的所有資料表名稱。

import com.alicloud.openservices.tablestore.SyncClient;
import com.alicloud.openservices.tablestore.core.ResourceManager;
import com.alicloud.openservices.tablestore.core.auth.*;
import com.alicloud.openservices.tablestore.model.ListTableResponse;

public class Main {
    public static void main(String[] args) {
        // yourRegion 填寫您的執行個體所在地區,如 cn-hangzhou
        final String region = "yourRegion";
        // yourInstance 填寫您的執行個體名稱
        final String instanceName = "yourInstance";
        // yourEndpoint 填寫您的執行個體訪問地址
        final String endpoint = "yourEndpoint";
        // 擷取系統變數裡的 AccessKey ID 和 AccessKey Secret
        final String accessKeyId = System.getenv("TABLESTORE_ACCESS_KEY_ID");
        final String accessKeySecret = System.getenv("TABLESTORE_ACCESS_KEY_SECRET");

        // 構造 V4 簽名
        DefaultCredentials credentials = new DefaultCredentials(accessKeyId, accessKeySecret);
        V4Credentials credentialsV4 = V4Credentials.createByServiceCredentials(credentials, region);
        CredentialsProvider provider = new DefaultCredentialProvider(credentialsV4);

        // 初始化 Tablestore Client
        SyncClient client = new SyncClient(endpoint, provider, instanceName, null, new ResourceManager(null, null));

        // 列出執行個體下的資料表列表並列印到控制台
        ListTableResponse listTableResponse = client.listTable();
        listTableResponse.getTableNames().forEach(System.out::println);

        // 關閉 Tablestore Client
        client.shutdown();
    }
}

常見問題

問:如果未複製AccessKey資訊就關閉了頁面,或者遺失了AccessKey資訊該怎麼辦?

您可以建立用於輪轉的第二個AccessKey,驗證後再刪除原來的AccessKey。具體操作,請參見輪轉RAM使用者的AccessKey

問:如何讓RAM使用者能自主管理AccessKey?

您需要在RAM控制台設定頁面的全域安全地區啟用允許使用者管理AccessKey設定,設定後RAM使用者可以自行建立、禁用和刪除AccessKey。具體操作,請參見管理RAM使用者安全設定建立AccessKey