
# 前置准备
使用透明加密特性前，需确认GaussDB是否已对接所选的外部密钥管理服务，然后在密钥管理服务中创建密钥并获取数据库所需的身份认证及密钥服务信息，最后配置数据库透明加密相关的GUC参数并重启数据库。本节将基于当前支持的主要密钥类型说明前置准备流程。
#### 华为云密钥管理服务
GaussDB已对接华为云提供的在线密钥管理服务，需在华为云密钥管理服务中创建主密钥，并获取数据库所需的身份认证与密钥服务信息。对于该类密钥服务场景，GaussDB支持AKSK与账号密码两种认证方式，参数配置方式如下：
1. AKSK认证场景
   ```
   gs_guc set -Z coordinator -Z datanode -N all -I all -c "enable_tde=on"
   gs_guc set -Z coordinator -Z datanode -N all -I all -c "tde_key_info='\
     keyType=huawei_kms,\
     mkid=$主密钥ID, \
     kmsUrl=$KMS服务器地址,\
     authType=aksk,\
     kmsProjectId=$项目ID, \
     kmsCaCert=$KMS证书文件路径'"
   gs_ssh -c "gs_guc encrypt -M tde -K '$AK,$SK' "
   ```
   
2. 账号与密码认证场景
   ```
   gs_guc set -Z coordinator -Z datanode -N all -I all -c "enable_tde=on"
   gs_guc set -Z coordinator -Z datanode -N all -I all -c "tde_key_info='\
     keyType=huawei_kms,\
     mkid=$主密钥ID, \
     iamUrl=$IAM服务器地址,\
     iamUser=$IAM用户名,\
     iamDomain=$账号名,\
     kmsUrl=$KMS服务器地址,\
     kmsProject=$项目,\
     iamCaCert=$IAM证书文件路径, \
     kmsCaCert=$KMS证书文件路径'"
   gs_ssh -c "gs_guc encrypt -M tde -K '$IAM用户密码' "
   ```
   
 
#### 鲲鹏TEE内生密钥管理服务
GaussDB已对接鲲鹏TEE内生密钥管理服务，需确保数据库各节点已预置TrustZone特性套件，支持iTrustee的机密OS的CCOS版本，并且保证OS的root用户能够正常使用iTrustee提供的密钥管理工具。同时，管理员需使用密钥管理工具在某个节点上创建密钥加密密钥（KEK），并在其它节点上完成密钥导入，以保证全部节点KEK一致性。该场景参数配置方式如下：
```
gs_guc set -Z coordinator -Z datanode -N all -I all -c "enable_tde=on"
gs_guc set -Z coordinator -Z datanode -N all -I all -c "tde_key_info='\
  keyType=sdf_kms,\
  library_path=$绝对路径或加密库相对$GAUSSHOME/lib的路径\
  kek_index=$密钥加密密钥（KEK）的ID,\
  dkey_algo=$主密钥用于加密数据密钥的算法,\
  mac_algo=$主密钥用于对数据密钥进行完整性校验的算法'"
```
![](https://support.huaweicloud.com/bestpractice-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
- 上述参数中：dkey_algo的取值范围为：SGD_SM4_CBC；mac_algo的取值范围为：SGD_SM4_MAC。
- TrustZone特性套件、iTrustee机密CCOS版本以及密钥管理工具的配置使用可参考[鲲鹏社区产品文档](https://www.hikunpeng.com/document/detail/zh/kunpengcctrustzone/overview/kunpengcctrustzone.html)。
 
