-
Notifications
You must be signed in to change notification settings - Fork 26
INTPYTHON-527 Add Queryable Encryption support #329
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
django_mongodb_backend/management/commands/get_encrypted_fields_map.py
Outdated
Show resolved
Hide resolved
django_mongodb_backend/management/commands/get_encrypted_fields_map.py
Outdated
Show resolved
Hide resolved
django_mongodb_backend/management/commands/get_encrypted_fields_map.py
Outdated
Show resolved
Hide resolved
django_mongodb_backend/management/commands/get_encrypted_fields_map.py
Outdated
Show resolved
Hide resolved
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
The encryption tests are passing locally for me on Enterprise and on the Atlas VM. On GitHub actions, this first issue was solved by adding
But this issue remains:
|
6ab0a86
to
fb1e120
Compare
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
That is correct. We can remove
In other words, do we support the chicken and the egg or just the egg 😂 |
Any progress on this? Do we need to ask @blink1073 for help? |
@aclark4life Soooo ... I don't know what you've done around that area so far, but it's great that you're bringing it up, I didn't realize we'd have to still worry about this part because I don't think the PR currently concerns itself at all with how we integrate with crypt_shared/mongocryptd? So I'll explain the whole story here, knowing that I'm risking telling you things you're alread well aware of 🙂
Operationally, So we generally recommend using the crypt_shared library, which can be achieved by passing Given that this is a new feature here, I'd strongly consider setting As far as the tests here are concerned themselves, I imagine they're passing locally for you because you do have |
Can we document our way around this by recommending Also what about bundling that library in the |
Maybe, but I think we'd want to have a conversation around what the typical expectations here are. You'll generally want to have development and production environments behave similarly, and you'd still need to have a plan for what to do when mongocryptd does get deprecated eventually (long-term, I think it's fair to expect this to happen). You'll also still be in a position where you need to download and install mongocryptd, the only case in which this requirement goes away is the one where you happen to have the enterprise MongoDB server binaries already ready in your
This question comes up on a regular basis 🙂 Here's a Slack thread from April, which was one of the last times we spoke about this. tl;dr: Yes, the setup process for CSFLE/QE is involved, and we'd like to make it easier. Currently, there is a requirement for the user to explicitly acknowledge that they have read and accepted the enterprise license agreement and that they are an Atlas or EA customer. Bundling this library with regular packages that can be installed via a regular package manager command like |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall looks good! I've provided comments and feedback around some documentation and clarifications, but will approve once those are addressed.
ae765eb
to
886b1e0
Compare
886b1e0
to
4496054
Compare
- Fix rebase merge conflict edits - Remove integer field FIXME comments - Remove pos_int
5b2bc07
to
bddae41
Compare
@@ -11,3 +11,4 @@ know: | |||
embedded-models | |||
transactions | |||
known-issues | |||
queryable-encryption |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
order above "transactions"
|
||
``showencryptedfieldsmap`` | ||
-------------------------- | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
.. versionadded:: 5.2.0b2
|
||
Encrypted fields | ||
---------------- | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
.. versionadded:: 5.2.0b2
================================ | ||
Configuring Queryable Encryption | ||
================================ | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
.. versionadded:: 5.2.0b2
.. django-admin-option:: --create-new-keys | ||
|
||
If specified, creates the data keys instead of getting them from the | ||
database. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This option need some explanation in the howto. (use case)
Also, there is no explanation here that the command "gets the keys from the database"... need more explanation.
.. admonition:: List of encrypted fields | ||
|
||
See the full list of :ref:`encrypted fields <encrypted-fields>` in the | ||
:doc:`Model field reference </ref/models/fields>`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
don't need to repeat the name of the linked doc "Model field reference"
|
||
def setUp(self): | ||
self.appointment = Appointment.objects.create(time="8:00") | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no blank line needed after every object
self.assertEqual(json1, json2) | ||
|
||
def test_show_encrypted_fields_map(self): | ||
self.maxDiff = None |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can set maxDiff = None
at the class-level.
.. admonition:: List of encrypted fields | ||
|
||
See the full list of :ref:`encrypted fields <encrypted-fields>` in the | ||
:doc:`Model field reference </ref/models/fields>`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's worth include this reference, but not in the middle of the example.
{ | ||
_id: ObjectId('68825b066fac55353a8b2b41'), | ||
ssn: '123-45-6789', | ||
__safeContent__: [b'\xe0)NOFB\x9a,\x08\xd7\xdd\xb8\xa6\xba$…'] | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure what this is telling me. So encrypted fields appear in plain text, but what the heck is "safeContent"? As I developer, do I care about it?
Previous attempts and additional context here: