클래스: Mongo::Crypt::EncryptionIO 비공개
- 상속:
-
객체
- 객체
- Mongo::Crypt::EncryptionIO
- 다음에 정의됨:
- build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb
개요
이 클래스는 비공개 API의 일부입니다. 이 클래스는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
드라이버와 MongoDB 서버 또는 mongocryptd 간의 I/O 메서드를 구현하는 클래스입니다.
상수 요약 접기
- SOCKET_TIMEOUT =
이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
TLS 소켓 연결, 읽기 및 쓰기에 사용되는 시간 초과입니다. 사양에 특정 시간 제한이 명시되어 있지 않습니다. 이 제한 시간에 대한 논의 및 업데이트는 spec-1394 을(를) 참조하세요.
10
인스턴스 메서드 요약 접기
-
#add_key_alt_name(ID, key_alt_name) ⇒ 객체
비공개
지정된 ID를 가진 키 볼트 컬렉션에 있는 키 문서의 key_alt_names 배열에 key_alt_name을 추가합니다.
-
#collection_info(db_name, 필터) ⇒ 해시
비공개
제공된 필터와 일치하는 컬렉션에 대한 컬렉션 정보를 가져옵니다.
-
#delete_key(ID) ⇒ 객체
비공개
키 볼트 컬렉션에서 지정된 ID의 키 문서를 제거합니다.
-
#Feed_kms(kms_context, tls_options) ⇒ 객체
비공개
원격 KMS 암호화 키에 대한 정보를 가져와서 KmsContext 객체에 피드합니다.
-
#find_keys(filter) ⇒ Array<BSON::Document>
비공개
제공된 필터를 사용하여 Key Vault 컬렉션에서 키를 쿼리합니다.
-
#get_key(ID) ⇒ 객체
비공개
지정된 ID를 가진 단일 키 문서를 찾습니다.
-
#get_key_by_alt_name(key_alt_name) ⇒ 객체
비공개
지정된 key_alt_name을 가진 키 볼트 컬렉션의 키 문서를 반환합니다.
-
#get_keys ⇒ 객체
비공개
키 볼트 컬렉션에 있는 모든 문서를 찾습니다.
-
#initialize(client: nil, mongocryptd_client: nil, key_vault_namespace:, key_vault_client:, metadata_client:, mongocryptd_options: {}) ⇒ EncryptionIO
생성자
비공개
키 볼트에 연결하는 방법에 대한 정보가 포함된 새 EncryptionIO 객체를 생성합니다.
-
#insert_data_key(document) ⇒ Mongo::Operation::Insert::Result
비공개
키 볼트 컬렉션에 문서를 삽입합니다.
-
#mark_command(cmd) ⇒ 해시
비공개
명령을 mongocryptd로 보내 암호화 의도 표시로 표시합니다.
-
#remove_key_alt_name(ID, key_alt_name) ⇒ 객체
비공개
지정된 ID를 가진 키 볼트 컬렉션에 있는 키 문서의 key_alt_names 배열에서 key_alt_name을 제거합니다.
-
#update_data_keys(업데이트) ⇒ BulkWrite::Result
비공개
대량 쓰기를 사용하여 지정된 요청을 키 볼트 컬렉션에 적용합니다.
생성자 세부 정보
#initialize(client: nil, mongocryptd_client: nil, key_vault_namespace:, key_vault_client:, metadata_client:, mongocryptd_options: {}) ⇒ EncryptionIO
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
자동 암호화에 사용되는 경우 모든 인수를 입력해야 합니다. 명시적 암호화에 사용되는 경우 key_vault_namespace 및 key_vault_client 인수만 필요합니다.
이 클래스는 key_vault_client 및 key_vault_namespace 옵션이 nil이 아니며 올바른 형식이어야 합니다.
키 볼트에 연결하는 방법에 대한 정보가 포함된 새 EncryptionIO 객체를 생성합니다.
57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', 줄 57 def 초기화( 클라이언트: nil, mongocryptd_client: nil, key_vault_namespace:, key_vault_client:, metadata_client:, mongocryptd_options: {} ) validate_key_vault_client!(key_Vault_client) validate_key_vault_namespace!(key_Vault_namespace) @client = 고객 @mongocryptd_client = mongocryptd_client @key_vault_db_name, @key_vault_collection_name = key_Vault_namespace.split('.') @key_Vault_client = key_Vault_client @metadata_client = @options = end |
인스턴스 메서드 세부 정보
#add_key_alt_name(ID, key_alt_name) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
지정된 ID를 가진 키 볼트 컬렉션에 있는 키 문서의 key_alt_names 배열에 key_alt_name을 추가합니다.
163 164 165 166 167 168 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', 줄 163 def add_key_alt_name(id, key_alt_name) key_Vault_collection.find_one_and_update( { _id: id }, { '$addToSet' => { keyAltNames: key_alt_name } }, ) end |
#collection_info(db_name, 필터) ⇒ 해시
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
제공된 필터와 일치하는 컬렉션에 대한 컬렉션 정보 가져오기
96 97 98 99 100 101 102 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', 줄 96 def collection_info(db_name, 필터) 하지 않는 한 @metadata_client 올리다 ArgumentError, 'collection_info는 metadata_client가 생성자에 전달되어야 하지만,' end @metadata_client.메서드를(db_name).database.list_collections(필터: 필터, deserialize_as_bson: true).first end |
#delete_key(ID) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
키 볼트 컬렉션에서 지정된 ID의 키 문서를 제거합니다.
172 173 174 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', 줄 172 def delete_key(id) key_Vault_collection.delete_one(_id: id) end |
#Feed_kms(kms_context, tls_options) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
원격 KMS 암호화 키에 대한 정보를 가져와 KmsContext 객체에 피드
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', 줄 139 def Feed_kms(kms_context, ) with_ssl_socket(kms_context.엔드포인트, ) do |ssl_socket| 시간 초과.타임아웃(SOCKET_TIMEOUT, 오류::SocketTimeoutError, '소켓 쓰기 작업 시간이 초과되었습니다' ) do ssl_socket.syswrite(kms_context.) end bytes_needed = kms_context.bytes_needed 동안 bytes_needed > 0 do 바이트 = 시간 초과.타임아웃(SOCKET_TIMEOUT, 오류::SocketTimeoutError, '소켓 읽기 작업 시간이 초과되었습니다.' ) do ssl_socket.sysread(bytes_needed) end kms_context.Feed(바이트) bytes_needed = kms_context.bytes_needed end end end |
#find_keys(filter) ⇒ Array<BSON::Document>
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
제공된 필터를 사용하여 Key Vault 컬렉션의 키를 쿼리합니다.
78 79 80 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', 줄 78 def find_keys(필터) key_Vault_collection.찾기(필터).to_a end |
#get_key(ID) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
지정된 ID를 가진 단일 키 문서를 찾습니다.
177 178 179 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', 줄 177 def get_key(id) key_Vault_collection.찾기(_id: id).first end |
#get_key_by_alt_name(key_alt_name) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
지정된 key_alt_name을 가진 키 볼트 컬렉션의 키 문서를 반환합니다.
183 184 185 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', 줄 183 def get_key_by_alt_name(key_alt_name) key_Vault_collection.찾기(keyAltNames: key_alt_name).first end |
#get_keys ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
키 볼트 컬렉션에 있는 모든 문서를 찾습니다.
188 189 190 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', 줄 188 def get_keys key_Vault_collection.찾기 end |
#insert_data_key(document) ⇒ Mongo::Operation::Insert::Result
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
키 볼트 컬렉션에 문서 삽입
87 88 89 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', 줄 87 def insert_data_key(문서) key_Vault_collection.insert_one(문서) end |
#mark_command(cmd) ⇒ 해시
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
mongocryptd에 명령을 전송하여 암호화 의도 표시로 표시합니다.
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', 줄 109 def mark_command(cmd) 하지 않는 한 @mongocryptd_client 올리다 ArgumentError, 'mark_command는 mongocryptd_client가 생성자에 전달되어야 하지만' end # mongocryptd의 응답이 { mode: :bson }로 역직렬화되었는지 확인합니다. # 명령에서 유형 정보가 손실되지 않도록 합니다. = { execution_options: { deserialize_as_bson: true } } 시작 응답 = @mongocryptd_client.database.명령(cmd, ) 구출 오류::NoServerAvailable => e 올리다 e 만약 @options[:mongocryptd_bypass_spawn] spawn_mongocryptd 응답 = @mongocryptd_client.database.명령(cmd, ) end 반환 응답.first end |
#remove_key_alt_name(ID, key_alt_name) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
지정된 ID를 가진 키 볼트 컬렉션에 있는 키 문서의 key_alt_names 배열에서 key_alt_name을 제거합니다.
194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', 줄 194 def remove_key_alt_name(id, key_alt_name) key_Vault_collection.find_one_and_update( { _id: id }, [ { '$set' => { keyAltNames: { '$cond' => [ { '$eq' => [ '$keyAltNames', [ key_alt_name ] ] }, '$$REMOVE', { '$filter' => { 입력: '$keyAltNames', cond: { '$ne' => [ '$$ this', key_alt_name ] } } } ] } } } ] ) end |
#update_data_keys(업데이트) ⇒ BulkWrite::Result
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
대량 쓰기를 사용하여 지정된 요청을 키 볼트 컬렉션에 적용합니다.
223 224 225 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', 줄 223 def update_data_keys(업데이트) key_Vault_collection.bulk_write(업데이트) end |