日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

創建加密表

本文將通過參數說明和示例代碼為您介紹如何使用 Go SDK 創建加密數據表,實現數據加密存儲功能。表格存儲提供兩種加密方式:基于密鑰管理服務(Key Management Service,簡稱 KMS)的密鑰加密和基于自帶密鑰(Bring Your Own Key,簡稱 BYOK)的自定義密鑰加密。

前提條件

接口和參數

接口和具體參數信息,請參見創建數據表

基于 KMS 服務密鑰加密

首次使用基于KMS密鑰的方式創建數據表時,表格存儲會自動創建一個KMS服務密鑰,通過服務密鑰來加密數據,并在讀取數據時自動解密。您無需購買KMS實例即可使用該功能。

以下示例用于創建數據表時基于 KMS 服務密鑰加密數據。

func CreateTable(client *tablestore.TableStoreClient, tableName string) {
    createTableRequest := new(tablestore.CreateTableRequest)

    tableMeta := new(tablestore.TableMeta)
    //設置數據表名稱。
    tableMeta.TableName = tableName
    //為數據表添加主鍵列。主鍵為pk(String類型)。
    tableMeta.AddPrimaryKeyColumn("pk", tablestore.PrimaryKeyType_STRING)

    tableOption := new(tablestore.TableOption)
    //數據的過期時間,-1表示永不過期。
    tableOption.TimeToAlive = -1
    //最大版本數,屬性列值最多保留1個版本,即保存最新的版本。
    tableOption.MaxVersion = 1

    //設置預留讀寫吞吐量,容量型實例下的數據表只能設置為0,高性能型實例下的數據表可以設置為非零值。
    reservedThroughput := new(tablestore.ReservedThroughput)
    reservedThroughput.Readcap = 0
    reservedThroughput.Writecap = 0

    //打開服務器端加密功能,使用KMS的服務主密鑰。
    sseSpec := new(tablestore.SSESpecification)
    sseSpec.SetEnable(true)
    sseSpec.SetKeyType(tablestore.SSE_KMS_SERVICE)

    createTableRequest.TableMeta = tableMeta
    createTableRequest.TableOption = tableOption
    createTableRequest.ReservedThroughput = reservedThroughput
    createTableRequest.SSESpecification = sseSpec
    _, err := client.CreateTable(createTableRequest)
    if err != nil {
        fmt.Println("Failed to create table with error:", err)
    } else {
	fmt.Println("Create table finished")
    }
}

基于 BYOK 自定義密鑰加密

  1. 已開通 KMS 服務。具體操作,請參見購買和啟用 KMS 實例

  2. 已通過 KMS 控制臺創建軟件密鑰。具體操作,請參見密鑰管理快速入門

  3. 創建自定義角色并配置權限。

    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

    4. 修改自定義角色的信任策略。具體操作,請參見修改 RAM 角色的信任策略

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

      {
        "Statement": [
          {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
              "Service": [
                "ots.aliyuncs.com"
              ]
            }
          }
        ],
        "Version": "1"
      }
  4. 創建數據表并配置 BYOK 密鑰加密數據。

    func CreateTable(client *tablestore.TableStoreClient, tableName string) {
        createTableRequest := new(tablestore.CreateTableRequest)
    
        tableMeta := new(tablestore.TableMeta)
        //設置數據表名稱。
        tableMeta.TableName = tableName
        //為數據表添加主鍵列。主鍵為pk(String類型)。
        tableMeta.AddPrimaryKeyColumn("pk", tablestore.PrimaryKeyType_STRING)
    
        tableOption := new(tablestore.TableOption)
        //數據的過期時間,-1表示永不過期。
        tableOption.TimeToAlive = -1
        //最大版本數,屬性列值最多保留1個版本,即保存最新的版本。
        tableOption.MaxVersion = 1
    
        //設置預留讀寫吞吐量,容量型實例下的數據表只能設置為0,高性能型實例下的數據表可以設置為非零值。
        reservedThroughput := new(tablestore.ReservedThroughput)
        reservedThroughput.Readcap = 0
        reservedThroughput.Writecap = 0
    
        //打開服務器端加密功能,使用KMS的用戶主密鑰。
        sseSpec := new(tablestore.SSESpecification)
        sseSpec.SetEnable(true)
        sseSpec.SetKeyType(tablestore.SSE_BYOK)
        //keyIdKMS自定義服務密鑰的ID,設置為步驟2中通過KMS控制臺創建的軟件密鑰ID。
        sseSpec.SetKeyId("key-hzz65****************")
        //roleArn為角色ARN,設置為步驟3中記錄的角色ARN信息。
        sseSpec.SetRoleArn("acs:ram::****************:role/aliyunotsaccessingkms")
    
        createTableRequest.TableMeta = tableMeta
        createTableRequest.TableOption = tableOption
        createTableRequest.ReservedThroughput = reservedThroughput
        createTableRequest.SSESpecification = sseSpec
        _, err := client.CreateTable(createTableRequest)
        if err != nil {
            fmt.Println("Failed to create table with error:", err)
        } else {
    	fmt.Println("Create table finished")
        }
    }

相關文檔

  • 密鑰管理服務 KMS(Key Management Service)是您的一站式密鑰管理和數據加密服務平臺、一站式憑據安全管理平臺,提供簡單、可靠、安全、合規的數據加密保護和憑據管理能力。更多信息,請參見密鑰管理服務

  • 創建加密表后,您可以通過 DescribeTable 接口查詢數據表的加密配置。