fix: configurable temp file directory#638
fix: configurable temp file directory#638kommendorkapten merged 2 commits intotheupdateframework:masterfrom
Conversation
|
Codecov ReportAttention: Patch coverage is
❗ Your organization needs to install the Codecov GitHub app to enable full functionality. Additional details and impacted files@@ Coverage Diff @@
## master #638 +/- ##
==========================================
+ Coverage 70.51% 73.27% +2.75%
==========================================
Files 10 10
Lines 2123 1635 -488
==========================================
- Hits 1497 1198 -299
+ Misses 505 322 -183
+ Partials 121 115 -6 ☔ View full report in Codecov by Sentry. |
e7bb364 to
1a40475
Compare
|
I can see where you're coming from, but before we remove it, do we know why it is there in the first place? We wouldn't want to accidentally run into the risk of removing a Chesterton fence... |
@trishankatdatadog it appears that the temp file and rename logic is here to produce an atomic file write so that there is never a partially written or 0-byte file for persisted metadata. Although, the go-tuf edit: opened #639 and moved summary there |
Excellent summary, thanks very much, @mrjoelkamp! I suspect you are right that this is a reliability but not a security issue, and so I don't mind Option 2. @JustinCappos do you see any security issues? If not, we should be able to simplify the code. |
|
I'm more concerned about a file being verified, being overwritten, and then being re-read with the assumption it was verified. Could this occur? |
I just looked to python-tuf for consistency between the two clients, which leads me to think that option 1 is probably best to keep them the same, see #639 (comment) I also think I found the culprit for the windows |
No, whenever the metadata files are read from persisted storage in |
1a40475 to
5eb28f2
Compare
Signed-off-by: mrjoelkamp <[email protected]>
5eb28f2 to
bba12ec
Compare
Okay, and one other related question. Could one possibly use this to overwrite old, cached files in some way? (I don't see how, but wanted to ask.) If not then I don't have any concerns... |
|
|
This looks good to me. Do you think we need any regression test at least for this behaviour? |
Before these changes I'd say yes, but now that this removes |
Got it. I'll let @kommendorkapten or @rdimitrov approve this PR since they have more SITG than I do here 🙂 |
kommendorkapten
left a comment
There was a problem hiding this comment.
This is awesome, very pleased to se that we are now back to using os.Rename. Thank you so much for this.
rdimitrov
left a comment
There was a problem hiding this comment.
Looks good! 🚀
I have to check the code again but for future work I'm thinking that we can get this a step further and use memfs so we don't rely on having any disk permissions at all.
In any case thank you for addressing this @mrjoelkamp 🙏
|
Just to clarify, this already exists today: https://github.com/theupdateframework/go-tuf/blob/master/metadata/config/config.go#L42
|
|
Funny that I added it and then forgot about its existence 😃 |
😄 no problem! I did see that option, however we do need cache enabled for performance. |
Summary
When cache is enabled, using the current working directory (cwd) for temporary file storage has been a bit problematic for container based workflows and various operating systems.
This is especially true for k8s workloads that have
readOnlyRootFilesystemset, which is a security best practice. The creation of the temporary file in the working directory is not permitted with a read-only root filesystem.Changes
update.cfg.LocalMetadataDirfor temporary file storage, so that it can be configured to a writable volume.moveFileas it is no longer neededrepository_similator_setup.goleading toos.Renameerror on windowsfixes
#639