-
Notifications
You must be signed in to change notification settings - Fork 46
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
Consolidate SDW templates wherever possible #471
Comments
We've been using both Whonix TemplateVMs in the SDW components: * whonix-gw-15 -> sd-whonix * whonix-ws-15 -> sd-proxy In order to speed up the time it takes for updates to run (#459), as well as nudge us toward full template consolidation (#471), let's use the `securedrop-workstation-buster` Template for `sd-proxy`. Since `sd-proxy` still has its NetVM set to `sd-whonix`, it's able to resolve Onion URLs just fine.
I think this makes sense as a major simplification, faster provisioning time, and for the sped up update time. One thought is instead of having a single
|
We discussed this today (March 11) and decided that:
Depending on the outcome of these above investigations, we might decide it makes more sense to just keep using our existing |
Number of Templates:
Having a distinction between trusted and less trusted Templates makes sense to me here, to preserve some mitigations listed above and reducing both likelihood and impact, and allowing further use cases:
Consolidating
|
We had a further discussion about this today; detailed notes can be found here. Important agreements:
Unfortunately, we may have to increase the number of templates again if we do want to ship a Signal VM, or offer supported ways to create additional custom VMs that interface with SDW VMs. We didn't discuss the Whonix deprecation/removal path in detail yet, and will set aside time for that at a future tech mtg. |
For the 7/8-7/22 sprint, we've agreed to start with a research & planning task, consistent with the above:
@rmol has offered to take point on this, with the goal to draft a first implementation plan. |
During the last sprint, @creviera and @emkll have done an initial inventory of template configurations, and will summarize their findings on this issue. Additionally, during the 8/6-8/20 sprint, we have allocated time towards developing a more detailed implementation plan, which will likely comprise multiple smaller spikes (e.g., "how to manage MIME type handling using a single template"). |
@creviera and @emkll have prepared a (currently FPF-internal) doc with a comprehensive inventory and a proposed implementation plan. During the 8/20-9/2 sprint, @conorsch will provide additional review, and we've committed to the deliverables that I've tentatively enumerated as a checklist in the top-level issue description. As with other epics, we will likely want to create dedicated issues for each item. |
Completed review of the template consolidation plan. Overall the proposal to prefer private volume configs is solid. We'll have to be careful to ensure that the mimetypes are handled well (the existing functional tests will be valuable here), and additionally that there's no race if leverage /rw/config rc.local to adjusting the mimetype handlers. |
Regarding the upcoming task
I'm skeptical that'll be very workable without also completing the mime type conversions for the other components, e.g. client, proxy, & export, but with some temporary commits like installing local debs as documented in https://github.com/freedomofpress/securedrop-workstation/wiki/Evaluating-new-deb-package-behavior, we should have plenty to discuss from a WIP branch. Will ping @zenmonkeykstop tomorrow about whether this task is already underway, otherwise offer to help. |
The Qubes RPC file hardcodes the filepath to the YAML config file, which contains site-specific information such as the Onion URL for the Journalist Interface. As part of template consolidation [0], we're moving the config file out of the system/root partition and into the private (i.e. /home/) volume, so that the `sd-proxy` AppVM has the config information it needs while sharing a TemplateVM with other components. [0] freedomofpress/securedrop-workstation#471
The Qubes RPC file hardcodes the filepath to the YAML config file, which contains site-specific information such as the Onion URL for the Journalist Interface. As part of template consolidation [0], we're moving the config file out of the system/root partition and into the private (i.e. /home/) volume, so that the `sd-proxy` AppVM has the config information it needs while sharing a TemplateVM with other components. [0] freedomofpress/securedrop-workstation#471
There's still a bit more rebasing to do before a draft PR goes up on this repo, but will do tomorrow. Local testing, while slow, has been quite positive: we have full template consolidation via the GUI updater, and all portions of the Workstation function as expected after the updater run completes. The test plan will be fairly verbose, and reference a lot of draft PRs visible in the cross-repo references above, but I'm optimistic we won't need to ask admins to run CLI actions to accomplish the consolidation. |
The Qubes RPC file hardcodes the filepath to the YAML config file, which contains site-specific information such as the Onion URL for the Journalist Interface. As part of template consolidation [0], we're moving the config file out of the system/root partition and into the private (i.e. /home/) volume, so that the `sd-proxy` AppVM has the config information it needs while sharing a TemplateVM with other components. [0] freedomofpress/securedrop-workstation#471
As part of template consolidation [0], we're moving mimetype associations out of system volumes and into private volumes. Therefore we no longer need these files in the 'securedrop-export' package, as the corresponding files have already been ported to 'securedrop-workstation-config'. [0] freedomofpress/securedrop-workstation#471
As part of template consolidation [0], we've moved all mimetype associations into the "securedrop-workstation-config" package [1]. The "open-in-dvm" desktop file now resides in the same package [2]. [0] freedomofpress/securedrop-workstation#471 [1] freedomofpress/securedrop-builder#190 [2] freedomofpress/securedrop-builder#198
As part of template consolidation [0], we're moving mimetype associations out of system volumes and into private volumes. Therefore we no longer need these files in the 'securedrop-export' package, as the corresponding files have already been ported to 'securedrop-workstation-config'. [0] freedomofpress/securedrop-workstation#471
As part of template consolidation [0], we've moved all mimetype associations into the "securedrop-workstation-config" package [1]. The "open-in-dvm" desktop file now resides in the same package [2]. [0] freedomofpress/securedrop-workstation#471 [1] freedomofpress/securedrop-builder#190 [2] freedomofpress/securedrop-builder#198
Reopening to track QA period, and ensure we've addressed all the sub-tasks. |
This was completed as part of #624. |
We currently have six (6) TemplateVMs and seven (7) AppVMs as part of the core Workstation components:
For most of the AppVMs, a discrete TemplateVM is not actually required. While there are a few complications with consolidating the templates—multiple SDW packages write to
/usr/share/applications/mimeapps.list
, for example—the advantages to folding the config into as few templates as possible is significant:qvm-features securedrop-workstation-buster updates-available
to trigger preflight updates, dramatically reducing Client app start timeHere's a short list of proposed changes required in order to achieve the consolidation described:
/home/user/.config/mimeapps.list
to/usr/share/applications/mimeapps.list
,so AppVMs based on the same TemplateVM can have different mime-handler settings
/rw/config/
/qvm-service
where required for per-VM services (e.g.sd-log
,sd-proxy
)We're currently approaching the beta/pilot phase, so unless the team feels strongly that we must immediately reduce the number of templates (e.g. to reduce updater complexity, see #459), and closely coordinate the requisite packaging changes, let's revisit this as a potential reduction to complexity post-pilot.
Implementation
Completed
securedrop-workstation-config
package (Consolidate MIME type configuration insecuredrop-workstation-config
package securedrop-builder#188)securedrop-workstation-config
package (Activate AppVM MIME type configuration viasecuredrop-workstation-config
package #603)Next up
QUBES_GPG_DOMAIN
) is only set insd-app
or appropriate dev VM Disable executable scripts in AppVMs other thansd-app
securedrop-client#1141securedrop-client
(both main client binary and shell script) cannot be run outside ofsd-app
or appropriate dev VM Disable executable scripts in AppVMs other thansd-app
securedrop-client#1141/etc/sd-proxy.yaml
to private volume forsd-proxy
( [securedrop-proxy] Move sd-proxy.yaml into private volume securedrop-proxy#147)/usr/share/applications/mimeapps.list
(requires packaging & test updates)sd-devices{,-dvm}
into private volumesd-proxy
MIME types in private volume and phase outdo-not-open-here
script in sd-proxy Move securedrop-proxy mimetypes to package #615 (comment)securedrop-workstation-svs-disp
package is no longer installedLater
Edited by @eloquence 2020-09-03 per sprint planning
Edited by @eloquence 2020-09-16 per scoping session
Edited by @eloquence 2020-10-01 per sprint planning
The text was updated successfully, but these errors were encountered: