全部产品
Search
文档中心

表格存储:使用RAM用户密钥发起请求

更新时间:Sep 25, 2024

您可以为RAM用户授予特定的权限,通过RAM用户访问密钥长期访问您的Tablestore资源。相较于阿里云账号访问密钥,使用RAM用户访问密钥访问Tablestore资源更加安全。

步骤一:创建RAM用户

  1. 使用阿里云账号(主账号)或RAM管理员登录RAM控制台

  2. 在左侧导航栏,选择身份管理 > 用户

  3. 用户页面,单击创建用户

  4. 创建用户页面的用户账号信息区域,设置用户基本信息。

    • 登录名称:可包含英文字母、数字、半角句号(.)、短划线(-)和下划线(_),最多64个字符。

    • 显示名称:最多包含128个字符或汉字。

    • 标签:单击edit,然后输入标签键和标签值。为RAM用户绑定标签,便于后续基于标签的用户管理。

    说明

    单击添加用户,可以批量创建多个RAM用户。

  5. 访问方式区域,选择OpenAPI调用访问,然后单击确定

  6. 根据界面提示,完成安全验证。

  7. 单击复制,保存访问密钥(AccessKey ID和AccessKey Secret)。

    重要

    RAM用户的AccessKey Secret只在创建时显示,不支持查看,请妥善保管。

步骤二:为RAM用户授予表格存储的只读权限

使用默认系统策略

授予RAM用户AliyunOTSReadOnlyAccess权限。具体操作,请参见为RAM用户授权

说明
  • 如果需要管理表格存储,例如创建实例等, 请授予RAM用户AliyunOTSFullAccess权限。

  • 如果需要只读访问表格存储,例如读取表中数据等,请授予RAM用户AliyunOTSReadOnlyAccess权限。

  • 如果需要只写访问表格存储,例如创建数据表等,请授予RAM用户AliyunOTSWriteOnlyAccess权限。

使用自定义策略

  1. 创建自定义权限策略。

    1. 在左侧导航栏,选择权限管理>权限策略

    2. 权限策略页面,单击创建权限策略

    3. 创建权限策略页面,单击脚本编辑,然后在策略文档输入框中录入在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": {}
          }
        ]
      }     
    4. 策略配置完成后,单击继续编辑基本信息

    5. 基本信息区域,填写策略名称RamTestPolicy,然后单击确定

  2. 为RAM用户授予自定义权限策略。

    1. 在左侧导航栏,选择身份管理 > 用户

    2. 用户页面,找到目标RAM用户。

    3. 单击RAM用户右侧的添加权限

    4. 添加权限页面下的自定义策略页签,选择已创建的自定义权限策略RamTestPolicy

    5. 单击确定

步骤三:使用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();
    }
}