#kms #google-cloud #security #api-bindings #crypto

secret-keeper-cloudkms

CloudKMS SecretKeeper,为 https://crates.io/crates/secret-keeper 提供的 Google Cloud KMS 集成

7 个版本

0.3.7 2020 年 7 月 24 日
0.3.6 2020 年 7 月 18 日
0.3.1 2020 年 6 月 30 日

#19 in #kms

每月 31 次下载
encrypt-rs 中使用

Apache-2.0 OR MIT

125KB
2.5K SLoC

Google Cloud KMS 的 SecretKeeper 实现

CloudKMS SecretKeeper URI 的格式为 cloudkms://PROJECT/LOCATION/KEYRING/KEY,其中

  • PROJECT 是 Google Cloud KMS 项目
  • LOCATION 是云位置;使用 'global' 表示所有数据中心/区域
  • KEYRING - 您的密钥库名称
  • KEY - 您的密钥名称

您必须设置环境变量 GOOGLE_APPLICATION_CREDENTIALS 为凭证 json 文件的路径(例如,用于服务帐户)。

先决条件

  • 一个 Google Cloud 账户,您的项目已启用 Cloud KMS API
  • 一个授权用户或服务帐户,已启用以下角色
    • Cloud KMS CryptoKey Encrypter/Decrypter
  • 环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为授权帐户的 json 凭证文件路径。
  • 已安装 Google Cloud SDK 工具(以下示例需要 gcloud

创建密钥库和密钥(如果需要)

您可以使用现有的密钥库和密钥,或者创建一个新的。您需要知道可用区的名称,或者使用 global 表示所有区域。

  • 要创建名为 my_keyring 的密钥库,
gcloud kms keyrings create "my_keyring" --location global
  • 要创建密钥 my_key,该密钥位于 my_keyring 密钥库中,
gcloud kms keys create my_key --keyring my_keyring --location global \
    --purpose encryption-decryption

使用此保管库

保管库 URI 的格式为 cloudkms:/PROJECT/LOCATION/KEYRING/KEY,因此,我们新密钥库和密钥的 URI 为 cloudkms:/PROJECT/global/my_keyring/key

您可以使用 examples/encrypt-rs 命令行程序进行测试。要将 FILE 加密到 FILE.ENC,请使用

  encrypt enc -o FILE.ENC -k cloudkms:/PROJECT/global/my_keyring/my_key FILE

要解密,请使用

  encrypt dec -o FILE.DUP -k cloudkms:/PROJECT/global/my_keyring/my_key FILE.ENC

使用默认参数,这将使用LZ4XChaCha20-Poly1305压缩密钥对文件进行加密,使用新生成的256位密钥,在Google CloudKMS上使用my_keyring/my_key加密该密钥,并将加密后的密钥存储在FILE.ENC的头部。

依赖项

~60MB
~1M SLoC