Fortanix SDKMS
本教程演示如何设置一个使用 Fortanix SDKMS 作为持久且安全的密钥存储的 KES 服务器。
Fortanix SDKMS
-
创建应用程序
注册一个可以对 Fortanix SDKMS 实例进行身份验证和通信的新应用程序。
-
在 Fortanix SDKMS UI 中转到“应用程序”部分。
-
为应用程序指定一个描述性名称,例如
KES
-
选择
REST API
作为集成方式 -
选择
API 密钥
作为身份验证方法
-
-
分配组
分配的组用作应用程序的默认组。除非在 KES 配置文件中指定了显式组 ID,否则新创建的密钥将属于此组。
-
创建应用程序并复制应用程序的 API 密钥。
此密钥是 KES 用于与 Fortanix SDKMS 通信的访问凭据。
KES 服务器设置
KES 服务器需要 TLS 私钥和证书。
KES 服务器默认安全,只能在 TLS 下运行。本教程出于简单起见使用了自签名证书。
-
为 KES 服务器生成 TLS 私钥和证书
以下命令生成新的 TLS 私钥
server.key
和自签名 X.509 证书server.cert
,该证书为 IP127.0.0.1
和 DNS 名称localhost
(作为 SAN)颁发。自定义命令以匹配您的设置。kes tool identity new --server --key server.key --cert server.cert --ip "127.0.0.1" --dns localhost
任何其他 X.509 证书生成工具也适用。例如,您可以使用
openssl
openssl ecparam -genkey -name prime256v1 | openssl ec -out server.key openssl req -new -x509 -days 30 -key server.key -out server.cert \ -subj "/C=/ST=/L=/O=/CN=localhost" -addext "subjectAltName = IP:127.0.0.1"
-
创建私钥和证书
kes tool identity new --key=app.key --cert=app.cert app
您可以随时计算
app
标识。kes tool identity of app.cert
-
创建配置文件
创建名为
server-config.yml
的配置文件address: 0.0.0.0:7373 admin: identity: disabled # We disable the admin identity since we don't need it in this guide tls: key : server.key cert: server.cert policy: my-app: allow: - /v1/key/create/my-app* - /v1/key/generate/my-app* - /v1/key/decrypt/my-app* identities: - ${APP_IDENTITY} keystore: fortanix: sdkms: endpoint: "<your-fortanix-sdkms-endpoint>" # Use your Fortanix instance endpoint. credentials: key: "<your-api-key>" # Insert the application's API key
-
在新窗口/选项卡中启动 KES 服务器
export APP_IDENTITY=$(kes tool identity of app.cert) kes server --config=server-config.yml --auth=off
该命令使用--auth=off
,因为我们的root.cert
和app.cert
证书是自签名的。 -
在另一个选项卡中,连接到服务器
export KES_CLIENT_CERT=app.cert export KES_CLIENT_KEY=app.key kes key create -k my-app-key
-k
是必需的,因为我们使用自签名证书。 -
从先前创建的
my-app-key
派生和解密数据密钥kes key derive -k my-app-key { plaintext : ... ciphertext: ... }
kes key decrypt -k my-app-key <base64-ciphertext>
将 KES 与 MinIO 服务器一起使用
MinIO 服务器需要 KES 才能启用服务器端数据加密。
有关将新的 KES 服务器与 MinIO 服务器一起使用所需的额外步骤,请参阅MinIO 指令指南的 KES。
配置参考
以下部分描述了密钥加密服务 (KES) 配置设置,以使用 Fortanix SDKMS 作为根 KMS 来存储外部密钥,例如用于 MinIO 服务器上的服务器端加密的密钥。