spring-data-mongodb icon indicating copy to clipboard operation
spring-data-mongodb copied to clipboard

Queryable Encryption Support

Open ashni-mehta opened this issue 3 years ago • 7 comments

Queryable Encryption is a new feature in MongoDB 6.0. It allows customers to encrypt sensitive data from the client side, store it as fully randomized encrypted data on the database server side, and run expressive queries on the encrypted data.

More details on Queryable Encryption here: https://www.mongodb.com/docs/manual/core/queryable-encryption/

ashni-mehta avatar Sep 27 '22 16:09 ashni-mehta

This is the part that describes the requirements for the JSON schema: https://www.mongodb.com/docs/manual/core/queryable-encryption/tutorials/aws/aws-automatic/#create-your-encrypted-collection

jyemin avatar Sep 27 '22 18:09 jyemin

The missing bit seems to be the queries part. So far only queryType: "equality" and queryType: "none" are mentioned in the docs. Will there be more or a change to the format? Which boils down to if a single attribute on @Encrypted (like below) is sufficient and future proof?

@Encrypted(query = EQUALITY)

christophstrobl avatar Sep 29 '22 16:09 christophstrobl

My understanding is that more are coming in the future. I can find out if format will remain consistent.

ashni-mehta avatar Sep 29 '22 21:09 ashni-mehta

If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 7 days this issue will be closed.

spring-projects-issues avatar Oct 11 '22 14:10 spring-projects-issues

Hey, spoke to the team.

  • There will be more query types and the different query types will have different parameters at set up.
  • The persisted data format is unique per index type (ex: an index that supports "equality" cannot support range.

ashni-mehta avatar Oct 18 '22 13:10 ashni-mehta

Thank you Thank you @ashni-mongodb. When using queryable encryption along with explicit encryption is the queryType only to be set when encrypting parts of the filter query or is it also allowed/required when encrypting field data for the document to store. Javadoc of EncryptOptions is a bit thin there.

christophstrobl avatar Jul 01 '24 07:07 christophstrobl

@christophstrobl, queryType is used when creating the encrypted collection and it's also used when creating the query filter for the find. queryType is not used when creating the payload to insert.

@ashni-mongodb

joelodom avatar Jul 02 '24 13:07 joelodom