クラス: Mongo::Crypt::Handle Private

継承:
オブジェクト
  • オブジェクト
すべて表示
定義:
lib/mongo/crypt/handle.rb

Overview

このクラスは、プライベート API の一部です。 このクラスは将来削除または変更される可能性があるため、可能な限り使用しないでください。

mongocrypt_t オブジェクトをラップする libmongocrypt ライブラリへのハンドル。クライアントはそのオブジェクトにオプションを設定したり、暗号化と復号化などの操作を実行したりできます。

インスタンス属性の概要を折りたたむ

インスタンス メソッドの概要を折りたたむ

コンストラクターの詳細

#initialize(kms_providers, kms_tls_options, options = {}) ⇒ Handle

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

新しいハンドル オブジェクトを作成し、オプションで初期化します

パラメーター:

  • kms_providers ( Crypt::KMS::Credentials ) —

    KMS プロバイダーの認証情報。

  • kms_tls_options (ハッシュ) —

    KMS プロバイダーに接続するための TLS オプション。 ハッシュのキーは、K SM プロバイダー名である必要があります。値は、TLS 接続オプションのハッシュである必要があります。 オプションは、Mongo::Client の TLS 接続オプションと同じです。

  • options (ハッシュ) (デフォルトは{}です) —

    オプションのハッシュ。

オプション ハッシュ( options ):

  • :schema_map (ハッシュ | nil ) —

    自動暗号化ドキュメントを保存するコレクションのJSON schemaを表すハッシュ。 このオプションは :schema_map_path と相互に排他的です。

  • :schema_map_path ( string | nil ) —

    ファイルへのパスには、自動暗号化ドキュメントを保存するコレクションのJSON schemaが含まれます。 このオプションは :schema_map と相互に排他的です。

  • :encrypted_fields_map (ハッシュ | nil ) —

    は、コレクション名前空間を暗号化されたフィールドにマッピングします。

    • 注: コレクションが encryptedFieldsMap と schemaMap の両方に存在する場合、エラーが発生します。
  • :bypass_query_analysis (Boolean | nil) —

    true の場合、送信コマンドの自動分析が無効になります。

  • :crypt_shared_lib_path ( string | nil ) —

    暗号化共有ライブラリをロードするために使用されるパス。 このオプションを指定すると、libmongocrypt のデフォルトの暗号化共有ライブラリのロード パスが上書きされます。

  • :crypt_shared_lib_required (Boolean | nil) —

    crypt_shared ライブラリが必要かどうか。「true」の場合、libmongocrypt によって crypt_shared ライブラリをロードできない場合は、エラーが発生します。

  • :explit_encryption_only (Boolean | nil) —

    この処理を明示的な暗号化にのみ使用するかどうか。 true の場合、libmongocrypt は暗号化共有ライブラリをロードしないように指示されます。

  • :disable_crypt_shared_lib_search (Boolean | nil) —

    true の場合、crypt_shared の自動 "$SYSTEM" 検索を抑制します。これは、同じプロセス内の前の ハンドルがすでにパス オーバーライドを介してライブラリをロードしていて、libmongocrypt が後続の "$SYSTEM" 検索で発生する競合ロード エラーを回避したい場合に使用します。

  • :logger (ロガー) —

    mongocrypt ログが送信される Logger オブジェクト

  • :key_expiration_ms (Integer | nil) —

    データ暗号化のキーキャッシュの有効期間(ミリ秒単位)。値が 0 の場合、キャッシュは期限切れになりません。 nil の場合、libmongocrypt のデフォルトの 60000 が使用されます。

次の値が発生します。



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# ファイル 'lib/mongo/crypt/handle.rb', 行 73

デフォルト 初期化(kms_providers, kms_tls_options, options = {})
  #FFI::AutoPointer はカスタム リリース戦略を使用して自動的に解放
  このオブジェクトがスコープを超えるとポインターは 表示されます
  @mongocrypt = FFI::AutoPointer.新着情報(
    バインディング.mongocrypt_new,
    バインディング.メソッド(:mongocrypt_detry)
  )
  バインディング.kms_ctx_setopt_retry_kms(自己, true)
  バインディング.setopt_enable_multiple_collinfo(自己)
  バインディング.setopt_use_need_mongo_collinfo_with_db_state(自己)
  @ kms_providers = kms_providers
  @ kms_tls_options = kms_tls_options

  Max_set_schema_map(options)

  @encrypted_fields_map = options[:encrypted_fields_map]
  set_encrypted_fields_map 場合 @encrypted_fields_map

  @bypass_query_analysis = options[:bypass_query_analysis]
  set_bypass_query_analysis 場合 @bypass_query_analysis

  @key_expiration_ms = options[:key_expiration_ms]
  set_key_expiration ただし、 @key_expiration_ms.nil?

  @crypt_shared_lib_path = options[:crypt_shared_lib_path]
  @explit_encryption_only = options[:explit_encryption_only]
  @disable_crypt_shared_lib_search = options[:disable_crypt_shared_lib_search]
  場合 @crypt_shared_lib_path
    バインディング.setopt_set_crypt_shared_lib_path_override(自己, @crypt_shared_lib_path)
  elsif !@bypass_query_analysis & & !@explit_encryption_only & & !@disable_crypt_shared_lib_search
    バインディング.setopt_append_crypt_shared_lib_search_path(自己, '$SYSTEM')
  end

  @logger = options[:logger]
  set_logger_callback 場合 @logger

  set_crypto_hooks

  バインディング.setopt_ kms_providers(自己, @ kms_providers.to_document)

  場合 @ kms_providers.any_on_demand?
    バインディング.setopt_use_need_ kms_credentials_rate(自己)
  end

  initialize_mongocrypt

  @crypt_shared_lib_required = !!options[:crypt_shared_lib_required]
  return ただし、 @crypt_shared_lib_required & & crypt_shared_lib_version == 0

  発生 mongo::エラー::CryptError.新着情報(
    ' 暗号化共有ライブラリは必要ですが、 libmongocrypt に従ってロードできません '
  )
end

インスタンス属性の詳細

# kms_providers = Ccrypt::KMS::認証情報 (読み取り専用)

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

KMS プロバイダーの認証情報を返します。

次の値を返します。



29
30
31
# ファイル 'lib/mongo/crypt/handle.rb', 行 29

デフォルト kms_providers
  @ kms_providers
end

インスタンス メソッドの詳細

#crypt_shared_lib_available? =ブール値

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

次の値を返します。

  • (ブール値)


158
159
160
# ファイル 'lib/mongo/crypt/handle.rb', 行 158

デフォルト crypt_shared_lib_available?
  crypt_shared_lib_version != 0
end

#crypt_shared_lib_version =オブジェクト

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。



154
155
156
# ファイル 'lib/mongo/crypt/handle.rb', 行 154

デフォルト crypt_shared_lib_version
  バインディング.crypt_shared_lib_version(自己)
end

# kms_tls_options (プロバイダー) =ハッシュ

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

KMS プロバイダーの TLS オプションを返します。TLS オプションが設定されていない場合は、空のハッシュが返されます。名前付きプロバイダー(例:"kmip:name1")は、正確な一致が見つからない場合、ベースタイプオプション(例::kmip)にフォールバックします。

パラメーター:

  • プロバイダー ( string ) —

    KMS プロバイダー名または名前付き識別子。

次の値を返します。

  • (ハッシュ) —

    KMS プロバイダーに接続するための TLS オプション。



141
142
143
144
145
146
147
148
149
150
151
152
# ファイル 'lib/mongo/crypt/handle.rb', 行 141

デフォルト kms_tls_options(プロバイダー)
  provider_str = プロバイダー.to_s
  base_type = KMS.provider_base_type(provider_str)

  @ kms_tls_options.fetch(provider_str) 行う
    @ kms_tls_options.fetch(provider_str.to_sym) 行う
      @ kms_tls_options.fetch(base_type) 行う
        @ kms_tls_options.fetch(base_type.to_sym, {})
      end
    end
  end
end

参照: FFI::Pointer

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

基礎となる @mongocrypt オブジェクトへの参照を返します

次の値を返します。

  • ( FFI::Pointer )


130
131
132
# ファイル 'lib/mongo/crypt/handle.rb', 行 130

デフォルト 参照
  @mongocrypt
end