7.4. HashiCorp Vault
作为存储管理员,您可以在 HashiCorp Vault 中安全地存储密钥、密码和证书,以用于 Ceph 对象网关。HashiCorp Vault 为 Ceph 对象网关使用的服务器端加密提供安全密钥管理服务。
基本工作流:
- 客户端根据对象的密钥 ID 从 Vault 请求创建 secret key。
- 客户端将带有对象的密钥 ID 的对象上传到 Ceph 对象网关。
- 然后,Ceph 对象网关从 Vault 请求新创建的机密密钥。
- Vault 通过将机密密钥返回到 Ceph 对象网关来回复请求。
- 现在,Ceph 对象网关可以使用新的机密密钥加密对象。
- 在加密完成后,对象存储在 Ceph OSD 上。
红帽与我们的技术合作伙伴合作,将本文档作为为客户提供服务。但是,红帽不提供对这个产品的支持。如果您需要此产品的技术协助,请联系 Hashicorp 以获得支持。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 安装 Ceph 对象网关软件.
- 安装 HashiCorp Vault 软件.
7.4.1. Vault 的 secret 引擎 复制链接链接已复制到粘贴板!
HashiCorp Vault 提供多个机密引擎来生成、存储或加密数据。应用编程接口(API)向机密引擎发送数据调用,要求对该数据执行操作,机密引擎返回该操作请求的结果。
Ceph 对象网关支持两个 HashiCorp Vault secret 引擎:
- Key/Value 版本 2
- Transit
Key/Value 版本 2
Key/Value secret 引擎将随机 secret 存储在 Vault 中的磁盘上。使用 kv
引擎的版本 2,键可以具有可配置的版本数。默认版本数量为 10。删除版本不会删除底层数据,而是将数据标记为已删除,从而允许取消删除的版本。您可以使用 API 端点或 destroy
命令永久删除版本的数据。要删除密钥的所有版本和元数据,您可以使用 metadata
命令或 API 端点。键名称必须是字符串,在使用命令行界面时引擎会将非字符串值转换为字符串。要保留非字符串值,请提供 JSON 文件或使用 HTTP 应用编程接口(API)。
对于访问控制列表(ACL)策略,Key/Value secret 引擎可识别 创建
和更新
功能之间的区别。
Transit
Transit secret 引擎对传输中数据执行加密功能。Transit secret 引擎可以生成哈希值,可以是随机字节的来源,也可对数据进行签名和验证。在使用 Transit secret 引擎时,Vault 不会存储数据。Transit secret 引擎允许将同一密钥用于多个目的,从而支持密钥生成。此外,传输机密引擎支持密钥版本控制。Transit secret 引擎支持这些关键类型:
aes128-gcm96
- 带有 128 位 AES 密钥和 96 位非ce 的 AES-GCM;支持加密、解密、密钥派生和聚合加密
aes256-gcm96
- 带有 256 位 AES 密钥和 96 位非ce 的 AES-GCM;支持加密、解密、密钥生成和聚合加密(默认)
chacha20-poly1305
- ChaCha20-Poly1305,带有 256 位密钥;支持加密、解密、密钥加密和聚合加密
ed25519
- Ed25519; 支持签名、签名验证和密钥生成
ecdsa-p256
- 使用 curve P-256 的 ECDSA;支持签名和签名验证
ecdsa-p384
- 使用 curve P-384 的 ECDSA;支持签名和签名验证
ecdsa-p521
- 使用 curve P-521 的 ECDSA;支持签名和签名验证
rsa-2048
- 2048 位 RSA 密钥;支持加密、解密、签名和签名验证
rsa-3072
- 3072 位 RSA 密钥;支持加密、解密、签名和签名验证
rsa-4096
- 4096 位 RSA 密钥;支持加密、解密、签名和签名验证
7.4.2. Vault 的身份验证 复制链接链接已复制到粘贴板!
HashiCorp Vault 支持多种类型的身份验证机制。Ceph 对象网关目前支持 Vault 代理方法。Ceph 对象网关使用 rgw_crypt_vault_auth
和 rgw_crypt_vault_addr
选项来配置 HashiCorp Vault 的使用。
红帽支持使用 Vault 代理作为容器的身份验证方法,容器上不支持使用令牌身份验证。
Vault 代理
Vault 代理是在客户端节点上运行的守护进程,提供客户端缓存以及令牌续订。Vault 代理通常在 Ceph 对象网关节点上运行。运行 Vault 代理并刷新令牌文件。在此模式中使用 Vault 代理时,您可以使用文件系统权限限制谁有权使用令牌。此外,Vault 代理可以充当代理服务器,即 Vault 会在需要时添加令牌,并将其添加到传递给它的请求中,然后再将它们转发到实际服务器。Vault 代理仍然可以像在文件系统中存储令牌时一样处理令牌续订。需要保护 Ceph 对象网关用于连接 Vault 代理的网络,例如 Vault 代理仅侦听 localhost。
7.4.3. Vault 的命名空间 复制链接链接已复制到粘贴板!
将 HashiCorp Vault 用作企业服务,可为组织内的团队可以使用的隔离命名空间提供集中管理。这些隔离的命名空间环境称为 租户,组织内的团队可以利用这些租户将其策略、机密和身份与其他团队隔离。Vault 的命名空间功能帮助支持单一基础架构内的安全多租户。
其它资源
- 如需更多信息,请参阅 Vault 项目站点上的 Vault Enterprise 命名空间 文档。
7.4.4. 传递引擎兼容性支持 复制链接链接已复制到粘贴板!
旧版 Ceph 的兼容性支持将 Transit 引擎用作简单的密钥存储。您可以使用 Transit 引擎中的 compat
选项来配置兼容性支持。您可以使用以下命令禁用之前的支持:
示例
[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_secret_engine transit compat=0
[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_secret_engine transit compat=0
这是将来的版本的默认方法,您可以使用当前版本进行新的安装。
当前版本的正常默认设置为:
示例
[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_secret_engine transit compat=1
[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_secret_engine transit compat=1
这可实现新创建的对象的新引擎,仍允许将旧引擎用于旧对象。若要访问旧对象和新对象,Vault 令牌必须具有旧的和新传输策略。
您可以使用以下命令强制使用旧引擎:
示例
[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_secret_engine transit compat=2
[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_secret_engine transit compat=2
如果 Vault 以 export/encryption-key
结束,则默认选择此模式。
在配置了 client.rgw
选项后,您需要重启 Ceph 对象网关守护进程,使新值生效。
7.4.5. 为 Vault 创建令牌策略 复制链接链接已复制到粘贴板!
令牌策略指定所有 Vault 令牌的电源。一个令牌可以有多个策略。您应该在配置中使用所需的策略。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 安装 HashiCorp Vault 软件。
- 对 HashiCorp Vault 节点的根级别访问权限。
流程
创建令牌策略:
对于 Key/Value secret 引擎:
示例
vault policy write rgw-kv-policy -<<EOF path "secret/data/*" { capabilities = ["read"] } EOF
[root@vault ~]# vault policy write rgw-kv-policy -<<EOF path "secret/data/*" { capabilities = ["read"] } EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Transit 引擎:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您在旧版本的 Ceph 上使用 Transit secret 引擎,则令牌策略为:
示例
vault policy write old-rgw-transit-policy -<<EOF path "transit/export/encryption-key/*" { capabilities = ["read"] } EOF
[root@vault ~]# vault policy write old-rgw-transit-policy -<<EOF path "transit/export/encryption-key/*" { capabilities = ["read"] } EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您同时使用 SSE-KMS 和 SSE-S3,您应该为每个容器指向单独的容器。您可以使用单独的 Vault 实例,或者在通用传输点下单独挂载传输实例或不同的分支。如果您不使用单独的 Vault 实例,您可以使用 rgw_crypt_vault_prefix
和 rgw_crypt_sse_s3_vault_prefix
将 SSE-KMS 或 SSE-S3 指向 serparate 容器。当向 SSE-KMS 存储桶所有者授予 Vault 权限时,您不应该授予 SSE-S3 密钥的权限;只有 Ceph 应该有权访问 SSE-S3 密钥。
7.4.6. 将 Ceph 对象网关配置为使用带有 Vault 的 SSE-KMS 复制链接链接已复制到粘贴板!
要将 Ceph 对象网关配置为使用带有 SSE-KMS 的 HashiCorp Vault 进行密钥管理,则必须将其设置为加密密钥存储。目前,Ceph 对象网关支持两种不同的机密引擎,以及两种不同的身份验证方法。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 安装 Ceph 对象网关软件.
- Ceph 对象网关节点的根级别访问权限.
流程
使用
ceph config set client.rgw OPTION VALUE
命令启用 Vault 作为加密密钥存储:语法
ceph config set client.rgw rgw_crypt_s3_kms_backend vault
ceph config set client.rgw rgw_crypt_s3_kms_backend vault
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加以下选项和值:
语法
ceph config set client.rgw rgw_crypt_vault_auth agent ceph config set client.rgw rgw_crypt_vault_addr http://VAULT_SERVER:8100
ceph config set client.rgw rgw_crypt_vault_auth agent ceph config set client.rgw rgw_crypt_vault_addr http://VAULT_SERVER:8100
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 根据用例自定义策略。
获取 role-id:
语法
vault read auth/approle/role/rgw-ap/role-id -format=json | \ jq -r .data.role_id > PATH_TO_FILE
vault read auth/approle/role/rgw-ap/role-id -format=json | \ jq -r .data.role_id > PATH_TO_FILE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取 secret-id:
语法
vault read auth/approle/role/rgw-ap/role-id -format=json | \ jq -r .data.secret_id > PATH_TO_FILE
vault read auth/approle/role/rgw-ap/role-id -format=json | \ jq -r .data.secret_id > PATH_TO_FILE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 Vault 代理的配置:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 systemctl 运行持久性守护进程:
示例
/usr/local/bin/vault agent -config=/usr/local/etc/vault/rgw-agent.hcl
[root@host03 ~]# /usr/local/bin/vault agent -config=/usr/local/etc/vault/rgw-agent.hcl
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 当 Vault 代理运行时,令牌文件填充有效令牌。
选择 Vault 机密引擎,可以是 Key/Value 或 Transit。
如果使用 Key/Value,请添加以下行:
示例
[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_secret_engine kv
[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_secret_engine kv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果使用 Transit,请添加以下行:
示例
[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_secret_engine transit
[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_secret_engine transit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用
ceph config set client.rgw OPTION VALUE
命令将 Vault 命名空间设置为检索加密密钥:示例
[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_namespace testnamespace1
[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_namespace testnamespace1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过设置路径前缀来限制 Ceph 对象网关从 Vault 中检索加密密钥的位置:
示例
[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_prefix /v1/secret/data
[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_prefix /v1/secret/data
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于可导出的 Transit 键,请设置前缀路径,如下所示:
示例
[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_prefix /v1/transit/export/encryption-key
[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_prefix /v1/transit/export/encryption-key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 假设 Vault 服务器的域名是
vault-server
,Ceph 对象网关将从以下 URL 获取加密传输密钥:示例
http://vault-server:8200/v1/transit/export/encryption-key
http://vault-server:8200/v1/transit/export/encryption-key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
重新启动 Ceph 对象网关守护进程。
在存储集群中的单独节点上重启 Ceph 对象网关:
语法
systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
[root@host03 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在存储集群的所有节点上重启 Ceph 对象网关:
语法
ceph orch restart SERVICE_TYPE
ceph orch restart SERVICE_TYPE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host03 /]# ceph orch restart rgw
[ceph: root@host03 /]# ceph orch restart rgw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.4.7. 将 Ceph 对象网关配置为使用 Vault 的 SSE-S3 复制链接链接已复制到粘贴板!
要将 Ceph 对象网关配置为使用带有 SSE-S3 进行密钥管理的 HashiCorp Vault,必须设置为加密密钥存储。目前,Ceph 对象网关仅使用 代理 身份验证方法。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 安装 Ceph 对象网关软件.
- Ceph 对象网关节点的根级别访问权限.
流程
登录到 Cephadm shell
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用 Vault 作为 secret 引擎,以检索 SSE-S3 加密密钥:
语法
ceph config set client.rgw rgw_crypt_sse_s3_backend vault
ceph config set client.rgw rgw_crypt_sse_s3_backend vault
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要设置用于 SSE-S3 和 Vault 的验证方法,请配置以下设置:
语法
ceph config set client.rgw rgw_crypt_sse_s3_vault_auth agent ceph config set client.rgw rgw_crypt_sse_s3_vault_addr http://VAULT_AGENT:VAULT_AGENT_PORT
ceph config set client.rgw rgw_crypt_sse_s3_vault_auth agent ceph config set client.rgw rgw_crypt_sse_s3_vault_addr http://VAULT_AGENT:VAULT_AGENT_PORT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 ~]# ceph config set client.rgw rgw_crypt_sse_s3_vault_auth agent [ceph: root@host01 ~]# ceph config set client.rgw rgw_crypt_sse_s3_vault_addr http://vaultagent:8100
[ceph: root@host01 ~]# ceph config set client.rgw rgw_crypt_sse_s3_vault_auth agent [ceph: root@host01 ~]# ceph config set client.rgw rgw_crypt_sse_s3_vault_addr http://vaultagent:8100
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 根据您的用例自定义策略,以设置 Vault 代理。
获取 role-id:
语法
vault read auth/approle/role/rgw-ap/role-id -format=json | \ jq -r .rgw-ap-role-id > PATH_TO_FILE
vault read auth/approle/role/rgw-ap/role-id -format=json | \ jq -r .rgw-ap-role-id > PATH_TO_FILE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取 secret-id:
语法
vault read auth/approle/role/rgw-ap/role-id -format=json | \ jq -r .rgw-ap-secret-id > PATH_TO_FILE
vault read auth/approle/role/rgw-ap/role-id -format=json | \ jq -r .rgw-ap-secret-id > PATH_TO_FILE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 Vault 代理的配置:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 systemctl 运行持久性守护进程:
示例
/usr/local/bin/vault agent -config=/usr/local/etc/vault/rgw-agent.hcl
[root@host01 ~]# /usr/local/bin/vault agent -config=/usr/local/etc/vault/rgw-agent.hcl
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 当 Vault 代理运行时,令牌文件填充有效令牌。
将 Vault 机密引擎设置为用于检索加密密钥,可以是 Key/Value 或 Transit。
如果使用 Key/Value,请设置以下内容:
示例
[ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_secret_engine kv
[ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_secret_engine kv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果使用 Transit,请设置以下内容:
示例
[ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_secret_engine transit
[ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_secret_engine transit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
可选:配置 Ceph 对象网关以访问特定命名空间中的 Vault,以检索加密密钥:
示例
[ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_namespace company/testnamespace1
[ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_namespace company/testnamespace1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意Vault 命名空间允许团队在称为租户的隔离环境中运行。Vault 命名空间功能仅适用于 Vault Enterprise 版本。
可选:通过设置 URL 路径前缀来限制对 Vault secret 空间的特定子集的访问,其中 Ceph 对象网关从中检索加密密钥:
如果使用 Key/Value,请设置以下内容:
示例
[ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_prefix /v1/secret/data
[ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_prefix /v1/secret/data
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果使用 Transit,请设置以下内容:
示例
[ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_prefix /v1/transit
[ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_prefix /v1/transit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 假设 Vault 服务器的域名是
vaultserver
,Ceph 对象网关将从以下 URL 获取加密传输密钥:示例
http://vaultserver:8200/v1/transit
http://vaultserver:8200/v1/transit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
可选: 要使用自定义 SSL 认证与 Vault 进行身份验证,请配置以下设置:
语法
ceph config set client.rgw rgw_crypt_sse_s3_vault_verify_ssl true ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_cacert PATH_TO_CA_CERTIFICATE ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_clientcert PATH_TO_CLIENT_CERTIFICATE ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_clientkey PATH_TO_PRIVATE_KEY
ceph config set client.rgw rgw_crypt_sse_s3_vault_verify_ssl true ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_cacert PATH_TO_CA_CERTIFICATE ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_clientcert PATH_TO_CLIENT_CERTIFICATE ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_clientkey PATH_TO_PRIVATE_KEY
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_verify_ssl true [ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_cacert /etc/ceph/vault.ca [ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_clientcert /etc/ceph/vault.crt [ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_clientkey /etc/ceph/vault.key
[ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_verify_ssl true [ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_cacert /etc/ceph/vault.ca [ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_clientcert /etc/ceph/vault.crt [ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_clientkey /etc/ceph/vault.key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新启动 Ceph 对象网关守护进程。
在存储集群中的单独节点上重启 Ceph 对象网关:
语法
systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
[root@host01 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在存储集群的所有节点上重启 Ceph 对象网关:
语法
ceph orch restart SERVICE_TYPE
ceph orch restart SERVICE_TYPE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch restart rgw
[ceph: root@host01 /]# ceph orch restart rgw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.4.8. 使用 kv 引擎创建密钥 复制链接链接已复制到粘贴板!
配置 HashiCorp Vault Key/Value secret 引擎(kv
),以便您可以创建用于 Ceph 对象网关的密钥。secret 作为键值对存储在 kv
机密引擎中。
服务器端 encyption 的密钥长度必须为 256 位,并使用 base64
进行编码。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 安装 HashiCorp Vault 软件。
- 对 HashiCorp Vault 节点的根级别访问权限。
流程
启用 Key/Value 版本 2 secret 引擎:
示例
vault secrets enable -path secret kv-v2
vault secrets enable -path secret kv-v2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建新密钥:
语法
vault kv put secret/PROJECT_NAME/BUCKET_NAME key=$(openssl rand -base64 32)
vault kv put secret/PROJECT_NAME/BUCKET_NAME key=$(openssl rand -base64 32)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.4.9. 使用传输引擎创建密钥 复制链接链接已复制到粘贴板!
配置 HashiCorp Vault Transit 机密引擎(transit
),以便您可以创建用于 Ceph 对象网关的密钥。使用 Transit secret 引擎创建密钥必须可以导出,才能使用 Ceph 对象网关进行服务器端加密。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 安装 HashiCorp Vault 软件。
- 对 HashiCorp Vault 节点的根级别访问权限。
流程
启用 Transit secret 引擎:
vault secrets enable transit
[root@vault ~]# vault secrets enable transit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建新的可导出密钥:
语法
vault write -f transit/keys/BUCKET_NAME exportable=true
vault write -f transit/keys/BUCKET_NAME exportable=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
vault write -f transit/keys/mybucketkey exportable=true
[root@vault ~]# vault write -f transit/keys/mybucketkey exportable=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意默认情况下,上述命令会创建一个
aes256-gcm96
类型密钥。验证密钥的创建:
语法
vault read transit/export/encryption-key/BUCKET_NAME/VERSION_NUMBER
vault read transit/export/encryption-key/BUCKET_NAME/VERSION_NUMBER
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意需要提供完整密钥路径(包括密钥版本)。
7.4.10. 使用 AWS 和 Vault 上传对象 复制链接链接已复制到粘贴板!
在上传对象到 Ceph 对象网关时,Ceph 对象网关将从 Vault 获取密钥,然后将对象加密并存储在 bucket 中。发出下载对象的请求时,Ceph 对象网关将自动从 Vault 检索对应的密钥并解密对象。若要上传对象,Ceph 对象网关从 Vault 获取密钥,然后加密对象并将其存储在 bucket 中。Ceph 对象网关从 Vault 检索对应的密钥,并在有下载对象的请求时解密对象。
URL 使用基础地址(通过 rgw_crypt_vault_addr
选项和路径前缀设置)构建,该地址由 rgw_crypt_vault_prefix
选项设置。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 安装 Ceph 对象网关软件.
- 安装 HashiCorp Vault 软件。
- 访问 Ceph 对象网关客户端节点.
- 访问 Amazon Web Services(AWS)。
流程
使用 AWS 命令行客户端上传对象,并在请求中提供安全分割加密(SSE)密钥 ID:
对于 Key/Value secret 引擎:
示例(使用 SSE-KMS)
aws --endpoint=http://radosgw:8000 s3 cp plaintext.txt s3://mybucket/encrypted.txt --sse=aws:kms --sse-kms-key-id myproject/mybucketkey
[user@client ~]$ aws --endpoint=http://radosgw:8000 s3 cp plaintext.txt s3://mybucket/encrypted.txt --sse=aws:kms --sse-kms-key-id myproject/mybucketkey
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例(使用 SSE-S3)
aws s3api --endpoint http://rgw_host:8080 put-object --bucket my-bucket --key obj1 --body test_file_to_upload --server-side-encryption AES256
[user@client ~]$ aws s3api --endpoint http://rgw_host:8080 put-object --bucket my-bucket --key obj1 --body test_file_to_upload --server-side-encryption AES256
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在示例中,Ceph 对象网关会从
http://vault-server:8200/v1/secret/data/myproject/mybucketkey
获取 secret对于 Transit 引擎:
示例(使用 SSE-KMS)
aws --endpoint=http://radosgw:8000 s3 cp plaintext.txt s3://mybucket/encrypted.txt --sse=aws:kms --sse-kms-key-id mybucketkey
[user@client ~]$ aws --endpoint=http://radosgw:8000 s3 cp plaintext.txt s3://mybucket/encrypted.txt --sse=aws:kms --sse-kms-key-id mybucketkey
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例(使用 SSE-S3)
aws s3api --endpoint http://rgw_host:8080 put-object --bucket my-bucket --key obj1 --body test_file_to_upload --server-side-encryption AES256
[user@client ~]$ aws s3api --endpoint http://rgw_host:8080 put-object --bucket my-bucket --key obj1 --body test_file_to_upload --server-side-encryption AES256
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在示例中,Ceph 对象网关会从
http://vaultserver:8200/v1/transit/mybucketkey
获取 secret