云服务器内容精选

  • GS_COLUMN_KEYS_ARGS GS_COLUMN_KEYS_ARGS系统表记录密态等值特性中,客户端加密主密钥相关元数据信息,每条记录对应客户端加密主密钥的一个键值对信息。 表1 GS_COLUMN_KEYS_ARGS字段 名称 类型 描述 oid oid 行标识符(隐含字段)。 column_key_id oid 列加密密钥(cek)oid。 function_name name 值为encryption。 key name 列加密密钥(cek)的元数据信息对应的名称。 value bytea 列加密密钥(cek)的元数据信息名称的值。 父主题: 密态等值查询
  • GS_ENCRYPTED_PROC GS_ENCRYPTED_PROC系统表提供了密态函数/存储过程函数参数、返回值的原始数据类型,加密列等信息。 表1 GS_ENCRYPTED_PROC字段 名称 类型 描述 oid oid 行标识符(隐含字段)。 func_id oid function的oid,对应系统表PG_PROC中的oid行标识符。 prorettype_orig integer 返回值的原始数据类型。 last_change timestamp without time zone 密态函数上次修改的时间。 proargcachedcol oidvector 函数INPUT参数对应的加密列的oid,对应系统表GS_ENCRYPTED_COLUMNS中的oid行标识符。 proallargtypes_orig oid[] 所有函数参数的原始数据类型。 父主题: 密态等值查询
  • GS_CLIENT_GLOBAL_KEYS_ARGS GS_CLIENT_GLOBAL_KEYS_ARGS系统表记录密态等值特性中客户端加密主密钥相关元数据信息,每条记录对应客户端加密主密钥的一个键值对信息。 表1 GS_CLIENT_GLOBAL_KEYS_ARGS字段 名称 类型 描述 oid oid 行标识符(隐含字段)。 global_key_id oid 客户端加密主密钥(cmk)oid。 function_name name 值为encryption。 key name 客户端加密主密钥(cmk)的元数据信息对应的名称。 value bytea 客户端加密主密钥(cmk)的元数据信息名称的值。 父主题: 密态等值查询
  • GS_COLUMN_KEYS_ARGS GS_COLUMN_KEYS_ARGS系统表记录密态等值特性中,客户端加密主密钥相关元数据信息,每条记录对应客户端加密主密钥的一个键值对信息。 表1 GS_COLUMN_KEYS_ARGS字段 名称 类型 描述 oid oid 行标识符(隐含字段)。 column_key_id oid 列加密密钥(cek)oid。 function_name name 值为encryption。 key name 列加密密钥(cek)的元数据信息对应的名称。 value bytea 列加密密钥(cek)的元数据信息名称的值。 父主题: 密态等值查询
  • GS_CLIENT_GLOBAL_KEYS GS_CLIENT_GLOBAL_KEYS系统表记录密态等值特性中客户端加密主密钥相关信息,每条记录对应一个客户端加密主密钥。 表1 GS_CLIENT_GLOBAL_KEYS字段 名称 类型 描述 oid oid 行标识符(隐含字段)。 global_key_name name 客户端加密主密钥(cmk)名称。 key_namespace oid 包含此客户端加密主密钥(cmk)的命名空间OID。 key_owner oid 客户端加密主密钥(cmk)的所有者。 key_acl aclitem[] 创建该密钥时所拥有的访问权限。 create_date timestamp without time zone 创建密钥的时间。 父主题: 密态等值查询
  • GS_COLUMN_KEYS GS_COLUMN_KEYS系统表记录密态等值特性中列加密密钥相关信息,每条记录对应一个列加密密钥。 表1 GS_COLUMN_KEYS字段 名称 类型 描述 oid oid 行标识符(隐含字段)。 column_key_name name 列加密密钥(cek)名称。 column_key_distributed_id oid 根据加密密钥(cek)全称 域名 hash值得到的id。 global_key_id oid 外键。客户端加密主密钥(cmk)的OID。 key_namespace oid 包含此列加密密钥(cek)的命名空间OID。 key_owner oid 列加密密钥(cek)的所有者。 create_date timestamp without time zone 创建列加密密钥的时间。 key_acl aclitem[] 创建该列加密密钥时所拥有的访问权限。 父主题: 密态等值查询
  • GS_COLUMN_KEYS GS_COLUMN_KEYS系统表记录密态等值特性中列加密密钥相关信息,每条记录对应一个列加密密钥。 表1 GS_COLUMN_KEYS字段 名称 类型 描述 oid oid 行标识符(隐含字段)。 column_key_name name 列加密密钥(cek)名称。 column_key_distributed_id oid 根据加密密钥(cek)全称域名哈希值得到的id。 global_key_id oid 外键。客户端加密主密钥(cmk)的OID。 key_namespace oid 包含此列加密密钥(cek)的命名空间OID。 key_owner oid 列加密密钥(cek)的所有者。 create_date timestamp without time zone 创建列加密密钥的时间。 key_acl aclitem[] 创建该列加密密钥时所拥有的访问权限。 父主题: 密态等值查询
  • GS_ENCRYPTED_PROC GS_ENCRYPTED_PROC系统表提供了密态函数/存储过程函数参数、返回值的原始数据类型,加密列等信息。 表1 GS_ENCRYPTED_PROC字段 名称 类型 描述 oid oid 行标识符(隐含字段)。 func_id oid function的oid,对应系统表PG_PROC中的oid行标识符。 prorettype_orig integer 返回值的原始数据类型。 last_change timestamp without time zone 密态函数信息上次修改的时间。 proargcachedcol oidvector 函数INPUT参数对应的加密列的oid,对应系统表GS_ENCRYPTED_COLUMNS中的oid行标识符。 proallargtypes_orig oid[] 所有函数参数的原始数据类型。 父主题: 密态等值查询
  • GS_CLIENT_GLOBAL_KEYS GS_CLIENT_GLOBAL_KEYS系统表记录密态等值特性中客户端加密主密钥相关信息,每条记录对应一个客户端加密主密钥。 表1 GS_CLIENT_GLOBAL_KEYS字段 名称 类型 描述 oid oid 行标识符(隐含字段)。 global_key_name name 客户端加密主密钥(cmk)名称。 key_namespace oid 包含此客户端加密主密钥(cmk)的命名空间OID。 key_owner oid 客户端加密主密钥(cmk)的所有者。 key_acl aclitem[] 创建该密钥时所拥有的访问权限。 create_date timestamp without time zone 创建密钥的时间。 父主题: 密态等值查询
  • 外部密钥服务的身份验证 当数据库驱动访问华为云密钥管理服务时,为避免攻击者伪装为密钥服务,在数据库驱动与密钥服务建立https连接的过程中,可通过CA证书验证密钥服务器的合法性。为此,需提前配置CA证书,如果未配置,将不会验证密钥服务的身份。本节介绍如何下载与配置CA证书。 配置方法 在key_info参数的中,增加证书相关参数即可。 使用gsql时 gaussdb=# \key_info keyType=huawei_kms,iamUrl=https://iam.example.com/v3/auth/tokens,iamUser={ IAM 用户名},iamPassword={IAM用户密码},iamDomain={账号名},kmsProject={项目},iamCaCert=/路径/IAM的CA证书文件,kmsCaCert=/路径/KMS的CA证书文件 gaussdb=# \key_info keyType=huawei_kms,kmsProjectId={项目ID},ak={AK},sk={SK},kmsCaCert=/路径/KMS的CA证书文件 使用JDBC时 conn.setProperty("key_info", "keyType=huawei_kms," + "iamUrl=https://iam.example.com/v3/auth/tokens," + "iamUser={IAM用户名}," + "iamPassword={IAM用户密码}," + "iamDomain={账号名}," + "kmsProject={项目}," + "iamCaCert=/路径/IAM的CA证书文件," + "kmsCaCert=/路径/KMS的CA证书文件"); conn.setProperty("key_info", "keyType=huawei_kms, kmsProjectId={项目ID}, ak={AK}, sk={SK}, kmsCaCert=/路径/KMS的CA证书文件"); 获取证书 大部分浏览器均会自动下载网站对应的CA证书,并提供证书导出功能。虽然,诸如https://www.ssleye.com/ssltool/certs_down.html等很多网站也提供自动下载CA证书的功能,但可能因本地环境中存在代理或网关,导致CA证书无法正常使用。所以,建议借助浏览器下载CA证书。下载方式如下: 由于使用restful接口访问密钥服务,当在浏览器输入接口对应的url时,可忽略下述2中的失败页面,因为即使在失败的情况下,浏览器也早已提前自动下载CA证书。 输入域名:打开浏览器,在华为云场景中,分别输入IAM服务器地址和KMS服务器地址,地址获取方式参见:生成主密钥阶段。 查找证书:在每次输入域名后,找到SSL连接相关信息,单击后会发现证书,继续单击可查看证书内容。 导出证书:在证书查看页面,可能会看到证书分为很多级,仅需要域名的上一级证书即可,选择该证书并单击导出,便可直接生成证书文件,即需要的证书文件。 上传证书:将导出的证书上传至应用端,并配置到上述参数中即可。
  • 前向兼容 在上文中,支持通过key_info设置访问外部密钥管理的参数: 使用gsql时,通过元命令\key_info xxx设置。 使用JDBC时,通过连接参数conn.setProperty(“key_info”, “xxx”)设置 为保持前向兼容,还支持通过环境变量等方式设置访问主密钥的参数。 第一次配置使用密态数据库时,可忽略下述方法。如果以前使用下述方法配置密态数据库,建议改用’key_info’配置 使用系统级环境变量配置的方式如下: export HUAWEI_KMS_INFO='iamUrl=https://iam.{项目}.myhuaweicloud.com/v3/auth/tokens,iamUser={IAM用户名},iamPassword={IAM用户密码},iamDomain={账号名},kmsProject={项目}' # 该方法中操作系统日志可能会记录环境变量中的敏感信息,使用过程中注意及时清理。 还可通过标准库接口设置进程级环境变量,不同语言设置方法如下: C/C++ setenv("HIS_KMS_INFO", "xxx"); GO os.Setenv("HIS_KMS_INFO", "xxx");
  • 前向兼容 在上文中,支持通过key_info设置访问外部密钥管理的参数: 使用gsql时,通过元命令\key_info xxx设置。 使用JDBC时,通过连接参数conn.setProperty(“key_info”, “xxx”)设置。 为保持前向兼容,还支持通过环境变量等方式设置访问主密钥的参数。 第一次配置使用密态数据库时,可忽略下述方法。如果以前使用下述方法配置密态数据库,建议改用’key_info’配置。 使用系统级环境变量配置的方式如下: export HUAWEI_KMS_INFO='iamUrl=https://iam.{项目}.myhuaweicloud.com/v3/auth/tokens,iamUser={IAM用户名},iamPassword={IAM用户密码},iamDomain={账号名},kmsProject={项目}' # 该方法中操作系统日志可能会记录环境变量中的敏感信息,使用过程中注意及时清理。 还可通过标准库接口设置进程级环境变量,不同语言设置方法如下: C/C++ setenv("HIS_KMS_INFO", "xxx"); GO os.Setenv("HIS_KMS_INFO", "xxx");
  • 外部密钥服务的身份验证 当数据库驱动访问华为云密钥管理服务时,为避免攻击者伪装为密钥服务,在数据库驱动与密钥服务建立https连接的过程中,可通过CA证书验证密钥服务器的合法性。为此,需提前配置CA证书,如果未配置,将不会验证密钥服务的身份。本节介绍如何下载与配置CA证书。 配置方法 在key_info参数的中,增加证书相关参数即可。 使用gsql时 gaussdb=# \key_info keyType=huawei_kms,iamUrl=https://iam.example.com/v3/auth/tokens,iamUser={IAM用户名},iamPassword={IAM用户密码},iamDomain={账号名},kmsProject={项目},iamCaCert=/路径/IAM的CA证书文件,kmsCaCert=/路径/KMS的CA证书文件 gaussdb=# \key_info keyType=huawei_kms,kmsProjectId={项目ID},ak={AK},sk={SK},kmsCaCert=/路径/KMS的CA证书文件 使用JDBC时 conn.setProperty("key_info", "keyType=huawei_kms," + "iamUrl=https://iam.{example.com/v3/auth/tokens," + "iamUser={IAM用户名}," + "iamPassword={IAM用户密码}," + "iamDomain={账号名}," + "kmsProject={项目}," + "iamCaCert=/路径/IAM的CA证书文件," + "kmsCaCert=/路径/KMS的CA证书文件"); conn.setProperty("key_info", "keyType=huawei_kms, kmsProjectId={项目ID}, ak={AK}, sk={SK}, kmsCaCert=/路径/KMS的CA证书文件");
  • 配置阶段 配置访问外部密钥的参数 华为云场景 通过环境变量配置如下信息: export HUAWEI_KMS_INFO='iamUrl=https://iam.{项目}.myhuaweicloud.com/v3/auth/tokens, iamUser={IAM用户名}, iamPassword={IAM用户密钥}, iamDomain={账号名}, kmsProject={项目}' 在华为云控制台中,点击右上角用户名,并进入“我的凭证”,可看到下图所示页面,该页面可获取上述所需参数:项目、IAM用户名、账号名。另外,请记住本页面的项目ID,在后续执行DDL阶段中创建主密钥语法时,需使用该项目ID。 图1 华为云参数获取页面 # 示例 export HUAWEI_KMS_INFO='iamUrl=https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens, iamUser=test_user, iamPassword=**********, iamDomain=test_account, kmsProject=cn-north-4'
  • 生成主密钥阶段 首次使用密态数据库需要执行准备阶段步骤,后续跳过该阶段即可。 密态数据库支持使用不同的外部密钥来管理主密钥,根据场景选择其中一种即可。 华为云场景 用户需先在打开华为云官网,注册账号,登录账号。 在华为云中搜索“ 统一身份认证 服务”,进入该服务,如图所示选择“用户”功能,并创建一个IAM用户,为IAM用户设置IAM密码,并为新的IAM用户设置使用“ 数据加密 服务”的权限。 接下来,请重新回到登录页面,登录方式选择为“IAM用户”,使用新创建的IAM用户进行登录。后续操作均由该IAM用户完成。 在华为云中搜索“数据加密服务”,进入该服务,如下图所示,选择“密钥管理”功能,并通过“创建密钥”按钮创建密钥,密钥创建成功后,可看到每个密钥都具有1个密钥ID。请记住该密钥ID,在后续执行DDL阶段中创建主密钥语法时,需使用该密钥ID。 本步生成的密钥即密态数据库中使用的主密钥,该密钥将由华为云密钥管理服务存储。以后执行与加解密相关的SQL语句时,数据库驱动会通过华为云的restful接口自动访问该密钥。