赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 表格存储
  4. 开发参考
  5. SDK参考
  6. Java SDK
  7. 表操作
  8. 创建加密表

创建加密表

  • 表操作
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

为了保证表数据安全,表格存储提供了数据落盘加密功能。创建数据表时您可以配置数据表加密。表格存储提供基于密钥管理服务(Key Management Service,简称KMS)密钥加密和基于自带密钥(Bring Your Own Key,简称BYOK)自定义密钥加密两种加密方式,请根据实际需要选择。

前提条件

  • 已通过表格存储控制台创建实例。具体操作,请参见创建实例。

  • 已初始化Client。具体操作,请参见初始化Tablestore Client。

基于KMS服务密钥加密

创建数据表并配置KMS服务密钥,只要开通KMS即可,无需创建KMS实例。创建数据表后,您可以通过DescribeTable接口查询数据表的加密配置。

以下示例用于创建数据表时使用基于KMS服务密钥加密表中数据。该表的主键为pk(String类型),属性列值只保留最新版本数据以及数据永不过期。

private static void createTable(SyncClient client) {
    //设置数据表名称。
    TableMeta tableMeta = new TableMeta("<TABLE_NAME>");
    //如果要配置表加密,需要对建表请求配置加密相关参数,支持KMS服务密钥或BYOK自定义密钥两种类型。此处为使用KMS服务密钥。
    SSESpecification sseKms = new SSESpecification(true, SSEKeyType.SSE_KMS_SERVICE);
    //为数据表添加主键列。
    tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("pk", PrimaryKeyType.STRING)); 
    //数据的过期时间,单位为秒,-1表示永不过期。带索引表的数据表数据生命周期必须设置为-1。
    int timeToLive = -1; 
    //保存的最大版本数,1表示每列上最多保存一个版本即保存最新的版本。带索引表的数据表最大版本数必须设置为1。
    int maxVersions = 1; 
    TableOptions tableOptions = new TableOptions(timeToLive, maxVersions);
    CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
    //设置预留读写吞吐量,容量型实例中的数据表只能设置为0,高性能实例中的数据表可以设置为非零值。
    request.setReservedThroughput(new ReservedThroughput(new CapacityUnit(0, 0))); 
    request.setSseSpecification(sseKms);
    client.createTable(request);
}

基于BYOK自定义密钥加密

  1. 已通过KMS控制台创建软件密钥。具体操作,请参见密钥管理快速入门。

  2. 创建自定义角色并配置权限。

    1. 创建自定义角色。具体操作,请参见创建可信实体为阿里云账号的RAM角色。

      配置角色名称为AliyunOTSAccessingKMS。

    2. 创建自定义权限策略,配置为KMS加解密权限。具体操作,请参见通过脚本编辑模式创建自定义权限策略。

      配置权限策略名称为otskmspolicytest。权限策略示例如下:

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "kms:Decrypt",
                      "kms:GenerateDataKey"
                  ],
                  "Resource": [
                      "*"
                  ]
              }
          ]
      }
    3. 为自定义角色(AliyunOTSAccessingKMS)授予KMS加解密权限策略(otskmspolicytest)。具体操作,请参见为RAM角色授权。

      授权完成后,记录角色的ARN,即需要扮演角色的ID。

      image..png

    4. 修改自定义角色的信任策略。具体操作,请参见修改RAM角色的信任策略。

      角色的信任策略示例如下:

      {
        "Statement": [
          {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
              "Service": [
                "ots.aliyuncs.com"
              ]
            }
          }
        ],
        "Version": "1"
      }
  3. 创建数据表时配置加密参数。

    创建数据表并配置BYOK密钥。创建数据表后,您可以通过DescribeTable接口查询数据表的加密配置。

    以下示例用于创建数据表时使用BYOK密钥加密表中数据。该表的主键为pk(String类型),属性列值只保留最新版本数据以及数据永不过期。

    private static void createTable(SyncClient client) {
        //设置数据表名称。
        TableMeta tableMeta = new TableMeta("<TABLE_NAME>");
        //如果要配置表加密,需要对建表请求配置加密相关参数,支持KMS服务密钥或BYOK自定义密钥两种类型。
        //设置为步骤1中通过KMS控制台创建的软件密钥ID。
        String keyId="key-hzz65****************";
        //设置为步骤2中记录的角色ARN信息。
        String roleArn="acs:ram::****************:role/aliyunotsaccessingkms";
        //此处使用BYOK自定义密钥。
        //keyId为KMS自定义服务密钥的ID。roleArn为角色ARN,您需要创建一个角色,然后获取roleArn作为参数填写到建表请求中。
        SSESpecification sseByok = new SSESpecification(true, SSEKeyType.SSE_BYOK, keyId, roleArn);
        //为数据表添加主键列。
        tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("pk", PrimaryKeyType.STRING)); 
        //数据的过期时间,单位为秒,-1表示永不过期。带索引表的数据表数据生命周期必须设置为-1。
        int timeToLive = -1; 
        ////保存的最大版本数,1表示每列上最多保存一个版本即保存最新的版本。带索引表的数据表最大版本数必须设置为1。
        int maxVersions = 1; 
        TableOptions tableOptions = new TableOptions(timeToLive, maxVersions);
        CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
        request.setReservedThroughput(new ReservedThroughput(new CapacityUnit(0, 0))); //设置预留读写吞吐量,容量型实例中的数据表只能设置为0,高性能实例中的数据表可以设置为非零值。
        request.setSseSpecification(sseByok);
        client.createTable(request);
    }
相关文章

创建数据表 2025-04-22 14:29

本文将通过参数说明和示例代码为您介绍如何使用 Java SDK 创建数据表。在创建数据表时,您需要指定数据表的结构信息和配置信息。CU 模式(原按量模式)下高性能型实例中的数据表还可以根据需要设置预留读写吞吐量。

创建加密表 2025-04-22 14:29

为了保证表数据安全,表格存储提供了数据落盘加密功能。创建数据表时您可以配置数据表加密。表格存储提供基于密钥管理服务(Key Management Service,简称KMS)密钥加密和基于自带密钥(Bring Your Own Key,简称BYOK)自定义密钥加密两种加密方式,请根据实际需要选择。

更新表配置 2025-04-22 14:29

本文将通过参数说明和示例代码为您介绍如何使用 Java SDK 更新表配置。在更新数据表时,您可以修改表的配置信息(例如数据生命周期、最大版本数、有效版本偏差等)和 Stream 配置。此外,您还可以为 CU 模式(原按量模式)下高性能型实例中数据表调整预留读写吞吐量。

列出表名称 2025-04-22 14:29

使用ListTable接口获取当前实例下已创建的所有表的表名。

查询表描述信息 2025-04-22 14:29

使用DescribeTable接口可以查询指定表的结构、预留读/写吞吐量详情等信息。

删除数据表 2025-04-22 14:29

使用DeleteTable接口删除当前实例下指定数据表。 注意事项 数据表删除后将无法恢复,请谨慎操作。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号