模块:Mongoid::Tasks::Encryption

扩展方式:
加密
包含在:
加密
定义于:
lib/mongoid/tasks/ 加密.rb

Overview

该模块包含数据加密的辅助方法。

实例方法摘要折叠

实例方法详细信息

# create_data_key (client_name: nil, kms_provider_name: nil, key_alt_name: nil) ⇒哈希

使用客户端配置中的 auto_encryption_options 为给定KMS提供商创建数据加密密钥。

参数:

  • kms_provider_name ( string | nil ) (默认为: nil

    要使用的KMS提供商的名称。 如果未提供,则将使用客户端 auto_encryption_options 中的第一个提供商。

  • client_name ( string | nil ) (默认为: nil

    要从中获取 auto_encryption_options 的客户端的名称。 如果未提供,则使用默认客户端。

  • key_alt_name ( string | nil ) (默认为: nil

    密钥的备用名称。

返回:

  • (哈希)

    包含密钥ID (如 :key_id)、 KMS提供商名称(如 :kms_provider)和密钥保管库命名空间(如 :key_vault_namespace)的哈希。



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/mongoid/tasks/ 加密.rb', line 24

def create_data_key(client_name: nil, kms_provider_name: nil, key_alt_name: nil)
  kms_provider_name, kms_providers, key_vault_namespace = prepare_arguments(
    kms_provider_name,
    client_name
  )
  key_vault_client = Mongoid::客户端.访问.通过(database: key_vault_namespace.拆分('  ').first)
  client_encryption = mongo::ClientEncryption.new(
    key_vault_client,
    key_vault_namespace: key_vault_namespace,
    kms_providers: kms_providers
  )
  client_encryption_opts = {}.点击 do |opts|
    opts[:key_alt_names] = [key_alt_name] if key_alt_name
  end
  data_key_id = client_encryption.create_data_key(kms_provider_name, client_encryption_opts)
  {
    key_id: Base64.strict_encode 64(data_key_id.数据),
    kms_provider: kms_provider_name,
    key_vault_namespace: key_vault_namespace,
    key_alt_name: key_alt_name
  }.compact
end