静止数据加密<一个class="headerlink" href="#data-at-rest-encryption" title="¶”>¶
MongoDB在Percona Server中的静态数雷竞技下载官网据加密操作符从1.1.0版本开始支持。
请注意
静止数据指以文件、数据库记录等形式存储的非活动数据。
默认开启静态数据加密。操作员通过使用存储在Secret中的加密密钥或从HashiCorp Vault密钥存储中获取加密密钥来实现它。
使用加密密钥<一个class="headerlink" href="#using-encryption-key-secret" title="¶”>¶
的
secrets.encryptionKey输入部署/ cr.yaml文件应该指定加密密钥的名称Secret:秘密:…encryptionKey:my-cluster-name-mongodb-encryption-key如果加密密钥Secret不存在,则由操作符自动创建。如果您想自己创建,请考虑这一点<一个href="https://docs.mongodb.com/manual/tutorial/configure-encryption/">密钥必须是一个32个字符的字符串,以base64编码。
的
replsets.configuration,replsets.nonvoting.configuration,sharding.configsvrReplSet.configuration密钥应该包括以下两个MongoDB加密特定的选项:…配置:|…安全:enableEncryption:真encryptionCipherMode:“AES256-CBC”…的
enableEncryption选项应设置为真正的(默认值)。的security.encryptionCipherMode选项应指定用于解密的正确密码模式:eitherAES256-CBC(默认值)或AES256-GCM。
不要忘记应用修改cr.yaml配置文件照常:
美元kubectl部署- f部署/ cr.yaml
使用HashiCorp Vault存储加密密钥<一个class="headerlink" href="#using-hashicorp-vault-storage-for-encryption-keys" title="¶”>¶
从版本1.13开始,Operator支持使用<一个href="https://www.vaultproject.io/">HashiCorp库加密密钥存储-一种通用、安全、可靠的方式来存储和分发秘密,而不依赖于操作系统、平台或云提供商。
警告
Vault集成处于技术预览状态,还不推荐用于生产环境。
操作员将使用保险库,如果部署/ cr.yaml配置文件包含如下内容:
- 一个
secrets.vaultkey等于一个特别创建的Secret的名称, 配置为mongod和配置服务器提供一些特定于vault的选项。
Operator本身既不安装Vault,也不配置Vault;这两个操作都应该手动完成,如下部分所述。
安装库<一个class="headerlink" href="#installing-vault" title="¶”>¶
下面的步骤将在Kubernetes上使用<一个href="https://helm.sh/">Helm 3包管理器。其他Vault安装方法也可以工作,所以这里的说明不是强制性的,只是用于说明目的。阅读更多关于安装Vault 's<一个href="https://www.vaultproject.io/docs/platform/k8s">文档。
添加头盔回购和安装:
美元舵回购添加hashicorphttps://helm.releases.hashicorp.com“hashicorp”有被添加来你的存储库美元舵安装库hashicorp /库安装完成后,应先对Vault进行初始化启封。使用以下命令初始化Vault:
美元kubectl执行-豆荚/ vault-0--库操作符初始化-key-shares=1关口=1格式=json>/ tmp / vault-init美元unsealKey=$ (金桥- r“.unseal_keys_b64[]”</ tmp / vault-init)要解锁Vault,执行以下命令每个豆荚跳马:
美元kubectl执行-豆荚/ vault-0--库操作符开封”unsealKey美元”
配置库<一个class="headerlink" href="#configuring-vault" title="¶”>¶
首先,您应该启用Vault中的秘密。为此你需要一个<一个href="https://www.vaultproject.io/docs/concepts/tokens">穹窿令牌。雷竞技下载官网Percona Server for MongoDB可以使用任何常规令牌,允许秘密挂载点内的所有操作。在下面的例子中,我们将使用根标记以确保满足权限要求,但实际上在根权限中不需要。我们不建议在生产系统上使用根令牌。
美元猫/ tmp / vault-init|金桥- r“.root_token”输出将显示令牌:
s.VgQvaXl8xGFO1RUxAPbPbsfN现在用这个令牌登录Vault,启用键值秘密引擎:
美元kubectl执行-vault-0--/bin/sh美元库登录s.VgQvaXl8xGFO1RUxAPbPbsfN预期的输出
成功!您现在已通过身份验证。下面显示的令牌信息已经存储在令牌助手中。您不需要再次运行“保险库登录”。未来的Vault请求将自动使用此令牌。关键值--- ----- token s.VgQvaXl8xGFO1RUxAPbPbsfN token_accessor iMGp477aReYkPBWrR42Z3L6R token_duration∞token_renewable false token_policies ["root"] identity_policies [] policies ["root"] '现在使用以下命令启用键值秘密引擎:
美元库秘密启用路径秘密kv-v2预期的输出
成功!开启kv-v2 secrets引擎:secret/请注意
你也可以启用审计,这不是强制性的,但很有用:
美元库审计启用文件file_path=/库/ vault-audit.log预期的输出
成功!启用文件审计设备:file/现在使用Vault根令牌生成Secret
kubectl命令(不要忘记用真正的根令牌替换示例中的令牌),并将必要的选项添加到配置钥匙在你的部署/ cr.yaml:生成的秘密:
美元kubectl创建秘密通用的vault-secret——从字面=令牌=“s.VgQvaXl8xGFO1RUxAPbPbsfN”现在修改你的
部署/ cr.yaml:首先设置
secrets.encryptionKey键到在前一步中创建的Secret的名称。然后将特定于vault的选项添加到replsets.configuration,replsets.nonvoting.configuration,sharding.configsvrReplSet.configuration键,使用以下模板:…配置:|…安全:enableEncryption:真库:serverName:库端口:8200tokenFile: /etc/mongodb-vault /令牌Secret: Secret /data/dc/<集群名称>/<路径>disableTLSForTesting:真…生成Secret,使用到您的路径
ca.crt证书而不是<路径到CA>占位符(见<一个href="//m.doggingzone.com/doc/kubernetes-operator-for-psmongodb/TLS.html">运营商TLS指南,如有需要):kubectl创建秘密通用的vault-secret——从字面=令牌=“s.VgQvaXl8xGFO1RUxAPbPbsfN”——从文件=ca.crt=<路径来CA > / ca.crt现在修改你的
部署/ cr.yaml:首先设置
secrets.encryptionKey键到在前一步中创建的Secret的名称。然后将特定于vault的选项添加到replsets.configuration,replsets.nonvoting.configuration,sharding.configsvrReplSet.configuration键,使用以下模板:…配置:|…安全:enableEncryption:真库:serverName:库端口:8200tokenFile: /etc/mongodb-vault /令牌Secret: Secret /data/dc/<集群名称>/<路径>serverCAFile: /etc/mongodb-vault / ca.crt…在添加选项时,需要对模板进行如下修改
<集群名称>占位符与您的实际集群名称,*替换<路径>占位符和rs0添加选项时replsets.configuration和replsets.nonvoting.configuration, *替换<路径>占位符和cfg添加选项时sharding.configsvrReplSet.configuration。最后,应用你修改过的
cr.yaml像往常一样:美元kubectl部署- f部署/ cr.yaml要验证是否正确配置了所有内容,请使用以下日志过滤命令(替换为
<集群名称>和<名称>使用实际集群名称和名称空间的占位符):美元kubectl日志<集群名称> -rs0-0- cmongod- n<名称>|grep-我"加密密钥DB已成功初始化"
可以找到有关如何安装和配置Vault的更多详细信息<一个href="https://learn.hashicorp.com/vault?track=getting-started-k8s">在官方文件中。