Skip to content

Spec additions for encryption #12162

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

Merged
merged 11 commits into from
May 5, 2025
Merged

Conversation

ggershinsky
Copy link
Contributor

No description provided.

@RussellSpitzer
Copy link
Member

Note we'll want to start a dev list email thread once we get this nailed now to vote on the change

@ggershinsky
Copy link
Contributor Author

thanks @rdblue and @RussellSpitzer for the productive call and the suggestions. I've updated the PR to reflect the discussion results. All comments and corrections are welcome.
In the meantime, I'll be implementing these spec changes to make sure the things work end-to-end.

@ggershinsky
Copy link
Contributor Author

@rdblue @RussellSpitzer I've implemented the spec changes in an e2e code, everything works ok. This PR is ready for a new review round.

@smaheshwar-pltr
Copy link
Contributor

Friendly ping on this, @rdblue / @RussellSpitzer 🙏

format/spec.md Outdated
@@ -889,6 +890,7 @@ Table metadata consists of the following fields:
| _optional_ | _optional_ | _optional_ | **`partition-statistics`** | A list (optional) of [partition statistics](#partition-statistics). |
| | | _optional_ | **`row-lineage`** | A boolean, defaulting to false, setting whether or not to track the creation and updates to rows in the table. See [Row Lineage](#row-lineage). |
| | | _optional_ | **`next-row-id`** | A `long` higher than all assigned row IDs; the next snapshot's `first-row-id`. See [Row Lineage](#row-lineage). |
| | | _optional_ | **`current-key-id`** | ID of the encryption key that encrypts the manifest list key metadata. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I agree with using "current" here. I don't see how this key ID would be "current" -- it is either the key for the manifest list or it is not. How about using just key-id?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sounds good, changing to key-id

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, my comment was based on thinking this was a snapshot's key ID because of the description. This was actually in table metadata.

Can we trust table metadata to provide a key ID to use? I would probably have the encryption manager select the key automatically -- the one that is available from KMS.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, we can have this handled by the encryption manager.

@@ -742,6 +743,7 @@ A snapshot consists of the following fields:
| _optional_ | _required_ | _required_ | **`summary`** | A string map that summarizes the snapshot changes, including `operation` as a _required_ field (see below) |
| _optional_ | _optional_ | _optional_ | **`schema-id`** | ID of the table's current schema when the snapshot was created |
| | | _required_ | **`first-row-id`** | The first `_row_id` assigned to the first row in the first data file in the first manifest, see [Row Lineage](#row-lineage) |
| | | _optional_ | **`key-id`** | ID of the encryption key that encrypts the manifest list key metadata |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

would it make sense to name this encryption-key-id to make it more obvious that this is about encryption

Copy link
Contributor

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 other key it would be. I think it's pretty clear.

@rdblue
Copy link
Contributor

rdblue commented May 5, 2025

The vote passed, so I'll merge this. Thanks, everyone!

@rdblue rdblue merged commit 7f3f450 into apache:main May 5, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Specification Issues that may introduce spec changes.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants