クラス: Mongo::Crypt::AutoEncrypter Private

継承:
オブジェクト
  • オブジェクト
すべて表示
定義:
build/ruby-Driver-v 2.19 /lib/mongo/crypt/auto_encrypter.rb

Overview

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

AutoEnrypter は、自動暗号化の動作をカプセル化するオブジェクトです。 libmongocrypt ハンドル、キーヴォールト クライアント オブジェクト、mongocryptd クライアント オブジェクト、暗号化 I/O など、自動暗号化に関連するすべてのリソースを制御します。

AutoEncrypter は Mongo::Client の インスタンスとして保持されます。 同じ auto_encryption_options ハッシュを持つクライアント オブジェクトは、AutoEncrypter を共有する場合があります。

定数の概要の削減

DEFAULT_EXTRA_OPTIONS =

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

: extra_options オプションのデフォルト値のハッシュ

オプション::編集済み.新着情報({
  mongocryptd_uri: 'mongodb://localhost:27020',
  mongocryptd_bypass_spwn: false,
  mongocryptd_spwn_path: 'mongocryptd',
  mongocryptd_spwn_args: [ --idleshutdownTimeoutSecs= 60 ],
})

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

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

コンストラクターの詳細

#初期化(オプション) → AutoEncrypter

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

このモジュールを含むクラスに暗号化関連のオプションとインスタンス変数を設定します。 Mongo::Crypt::Encrypter モジュールで同じメソッドを呼び出します。

パラメーター:

  • options ハッシュ

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

  • :client Mongo::Client

    暗号化されたコレクションに接続されたクライアント。

  • :key_vault_client Mongo::Client | nil

    暗号化キーヴォールトを含む MongoDB インスタンスに接続されたクライアント。任意。 指定しない場合、 はデフォルトで :client オプションになります。

  • :key_vault_namespace string

    database.collection 形式のキーヴォールトの名前空間。

  • :schema_map ハッシュ | nil

    暗号化されたフィールドを持つコレクションの JSONSchema 。 このオプションは :schema_map_path と相互に排他的です。

  • :schema_map_path string | nil

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

  • :bypass_auto_encryption (Boolean | nil)

    true の場合、自動暗号化が無効になります。 デフォルトは false です。

  • : extra_options ハッシュ | nil

    mongocryptd の起動に関連するオプション。 オプションが渡されない場合、これらはデフォルト値に設定されます。

  • : kms_providers ハッシュ

    KMS構成情報のハッシュ。 サポートされているすべてのプロバイダーのオプションのリストについては、「 Mongo::Crypt::KMS::認証情報 」を参照してください。 @note 複数の KMS プロバイダーを指定できます。

  • : kms_tls_options ハッシュ

    KMS プロバイダーに接続するための TLS オプション。 ハッシュのキーは、K SM プロバイダー名である必要があります。値は、TLS 接続オプションのハッシュである必要があります。 オプションは、Mongo::Client の TLS 接続オプションと同じです。 TLS オプションのリストについては、「 Mongo::Client#initialize 」を参照してください。

  • :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)

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

次の値が発生します。

  • (ArgumentError)

    必須 オプションが欠落しているか、形式が正しくない場合。



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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/auto_encrypter.rb', 行93

デフォルト 初期化(options)
  暗号化.validate_ffi!
  # この呼び出しは、他のメソッド呼び出しによって、最終的には
  # クリーンアップが必要な追加のクライアントを作成します。
  @options = set_default_options(options).freeze

  @crypt_handle = 暗号化::ハンドル.新着情報(
    暗号化::KMS::Credentials.新着情報(@options[: kms_providers]),
    暗号化::KMS::検証.validate_tls_options(@options[: kms_tls_options]),
    schema_map: @options[:schema_map],
    schema_map_path: @options[:schema_map_path],
    encryption_fields_map: @options[:encrypted_fields_map],
    bypass_query_analysis: @options[:bypass_query_analysis],
    crypt_shared_lib_path: @options[: extra_options][:crypt_shared_lib_path],
    crypt_shared_lib_required: @options[: extra_options][:crypt_shared_lib_required],
  )

  @mongocryptd_options = @options[: extra_options].スライス(
    :mongocryptd_uri,
    :mongocryptd_bypass_spwn,
    :mongocryptd_spwn_path,
    :mongocryptd_spwn_args
  )
  @mongocryptd_options[:mongocryptd_bypass_spwn] = @options[:bypass_auto_encryption] ||
    @options[: extra_options][:mongocryptd_bypass_spwn] ||
    @crypt_handle.crypt_shared_lib_available? ||
    @options[: extra_options][:crypt_shared_lib_required]

  ただし、 @options[: extra_options][:crypt_shared_lib_required] || @crypt_handle.crypt_shared_lib_available? || @options[:bypass_query_analysis]
    # サーバー選択タイムアウトを1に設定して、クライアントが
    mongocryptd を生成する前に #long タイムアウト
    @mongocryptd_client = クライアント.新着情報(
      @options[: extra_options][:mongocryptd_uri],
      monitoring_io: @options[:client].options[:monitoring_io],
      MongoDB_io: @options[:client].options[:populator_io],
      server_selection_timeout: 10,
      database: @options[:client].options[:database]
    )
  end

  begin
    @encryption_io = EncryptionIO.新着情報(
      クライアント: @options[:client],
      mongocryptd_client: @mongocryptd_client,
      key_vault_namespace: @options[:key_vault_namespace],
      key_vault_client: @key_vault_client,
      metadata_client: @metadata_client,
      mongocryptd_options: @mongocryptd_options
    )
  ヘルプ
    begin
      @mongocryptd_client&.閉じる
    ヘルプ => e
      log_警告("自動暗号化のコンストラクターで mongocryptd クライアントを閉じる際にエラーが発生しました: #{ e .クラス} : #{ e } ")
      # この例外を削除して、元の例外が発生するようにする
    end
    発生
  end
ヘルプ
  場合 @key_vault_client & & @key_vault_client != options[:client] & &
    @key_vault_client.クラスター != options[:client].クラスター
  次に
    begin
      @key_vault_client.閉じる
    ヘルプ => e
      log_警告("自動暗号化のコンストラクターでキーヴォールト クライアントを閉じるエラー: #{ e .クラス} : #{ e } ")
      # この例外を削除して、元の例外が発生するようにする
    end
  end

  場合 @metadata_client & & @metadata_client != options[:client] & &
    @metadata_client.クラスター != options[:client].クラスター
  次に
    begin
      @metadata_client.閉じる
    ヘルプ => e
      log_警告("自動暗号化のコンストラクターでメタデータ クライアントを閉じる際にエラーが発生しました: #{ e .クラス} : #{ e } ")
      # この例外を削除して、元の例外が発生するようにする
    end
  end

  発生
end

インスタンス属性の詳細

# key_vault_client =オブジェクト(読み取り専用)

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



34
35
36
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/auto_encrypter.rb', 行34

デフォルト key_vault_client
  @key_vault_client
end

#metadata_client =オブジェクト(読み取り専用)

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



35
36
37
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/auto_encrypter.rb', 行35

デフォルト 
  @metadata_client
end

# mongocryptd_client =オブジェクト(読み取り専用)

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



33
34
35
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/auto_encrypter.rb', 行33

デフォルト mongocryptd_client
  @mongocryptd_client
end

#オプション=オブジェクト(読み取り専用)

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



36
37
38
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/auto_encrypter.rb', 行36

デフォルト options
  @options
end

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

#閉じる= true

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

AutoEncrypter によって作成されたリソースを閉じます。

次の値を返します。

  • ( true )

    常に true



217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/auto_encrypter.rb', 行217

デフォルト 閉じる
  @mongocryptd_client.閉じる 場合 @mongocryptd_client

  場合 @key_vault_client & & @key_vault_client != options[:client] & &
    @key_vault_client.クラスター != options[:client].クラスター
  次に
    @key_vault_client.閉じる
  end

  場合 @metadata_client & & @metadata_client != options[:client] & &
    @metadata_client.クラスター != options[:client].クラスター
  次に
    @metadata_client.閉じる
  end

  true
end

#decryption (コマンド) =BSON::Document

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

データベースコマンドを復号化します。

パラメーター:

  • コマンド ハッシュ

    暗号化されたフィールドを持つ コマンド。

次の値を返します。

  • BSON::Document

    復号化された コマンド。



206
207
208
209
210
211
212
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/auto_encrypter.rb', 行206

デフォルト 解読(コマンド)
  AutoDecryptionContext.新着情報(
    @crypt_handle,
    @encryption_io,
    コマンド
  ).run_ State_ Machine
end

#暗号化(データベース_名前, コマンド) = BSON::Document

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

データベースコマンド を暗号化します。

パラメーター:

  • database_name ( string )

    コマンドが実行されるデータベースの名前。

  • コマンド ハッシュ

    暗号化するコマンド。

次の値を返します。

  • BSON::Document

    暗号化された コマンド。



192
193
194
195
196
197
198
199
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/auto_encrypter.rb', 行192

デフォルト 暗号化(database_name, コマンド)
  AutoEncryptionContext.新着情報(
    @crypt_handle,
    @encryption_io,
    database_name,
    コマンド
  ).run_ State_ Machine
end

#暗号化 =ブール値

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

この暗号化が暗号化を実行する必要があるかどうか( :bypass_auto_encryption オプションが true に設定されている場合は false を返します)。

次の値を返します。

  • ブール値

    暗号化を実行するかどうか。



181
182
183
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/auto_encrypter.rb', 行181

デフォルト 暗号化
  !@options[:bypass_auto_encryption]
end