Skip to content

Conversation

@nesitor
Copy link
Member

@nesitor nesitor commented Jun 26, 2024

Problem: If a user wants to manage different operations for a different CRNs, they have to sign a new pubkey token for every CRN, and this is so bad for the user experience.

Solution: Move the domain field to the operation token payload instead the pubkey one, just to improve the user experience and maintain the security integrity.

…nt CRNs, they have to sign a new pubkey token for every CRN, and this is so bad for the user experience.

Solution: Move the `domain` field to the operation token payload instead the pubkey one, just to improve the user experience and maintain the security integrity.
@nesitor nesitor requested review from hoh and olethanh June 26, 2024 12:12
@nesitor nesitor self-assigned this Jun 26, 2024
@hoh
Copy link
Member

hoh commented Jun 26, 2024

This proposal trades security versus convenience, we need to double check it:

What happens if the SignedPubKeyPayload is leaked ? With a domain builtin, only VMs on a specific CNR could be messed up with. There is no revocation mechanism with this approach to authentication, so the user would not be able to do much.

@codecov
Copy link

codecov bot commented Jun 26, 2024

Codecov Report

Attention: Patch coverage is 77.77778% with 2 lines in your changes missing coverage. Please review.

Project coverage is 59.12%. Comparing base (a5128f8) to head (4aa63c0).
Report is 28 commits behind head on dev-confidential.

Files Patch % Lines
src/aleph/vm/orchestrator/views/authentication.py 60.00% 2 Missing ⚠️
Additional details and impacted files
@@                 Coverage Diff                  @@
##           dev-confidential     #647      +/-   ##
====================================================
- Coverage             59.13%   59.12%   -0.02%     
====================================================
  Files                    65       65              
  Lines                  5778     5776       -2     
  Branches                627      627              
====================================================
- Hits                   3417     3415       -2     
- Misses                 2215     2216       +1     
+ Partials                146      145       -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@hoh
Copy link
Member

hoh commented Jun 27, 2024

@nesitor can you merge this when you think appropriate ?

@nesitor nesitor merged commit 3815aa7 into dev-confidential Jun 28, 2024
@nesitor nesitor deleted the andres-feature-move_domain_payload_field branch June 28, 2024 10:41
olethanh added a commit that referenced this pull request Jul 5, 2024
* Implement Start Confidential endpoint (#627)

* Problem: The server don't have a directory to save the platform certificates generated by sevctl.

Solution: Set that directory field on settings class and ensure to create the folder on initialization step.

* Problem: The aren't an endpoint to be able to get the confidential platform certificates to start the VM key exchange.

Solution: Create that endpoint and return the platform certificates generated by the `sevctl` command.

* Fix: Solved code quality issues.

* Fix: Added 2 test cases for that endpoint.

* Fix: Added PR suggestions.

* Fix: Modified test mock to let the tests work

* Problem: Now isn't possible as a VM operator to get the client session certificates to initialize a confidential VM.

Solution: Create an operator start endpoint that receive the confidential session files and starts the qemu VM to continue with the certificate exchange methods.

* Fix: Remove useless aiofiles import

* Fix: Solve test issues after code quality fixes

* Fix: Solve code quality issues.

* Fix: Solve code quality issues.

* Fix: Write file in sync mode to avoid adding a new dependency. Files to write should be so small, so any blocking issue should be here.

* Fix: Solved PR comments and wrong conditionals.

* Fix: Solved more PR comments.

* Fix: Removed unexisting import

* Fix: Added useless command requested on the PR review.

* Fix: Changed endpoint path and added automatic tests for that endpoint.

* Fix: Solved settings singleton issue with testing, adding an `initialize_settings` method.

* Fix: Just disable the setting that is failing and remove previous method to initialize the singleton.

* Fix: CI Droplet cleanup failed when same name was used

When there were multiple Droplets with the same name, cleanup using doctl compute droplet delete -f $NAME would not work.

Error: There are 3 Droplets with the name "aleph-vm-ci-XXX"; please provide a specific Droplet ID. [425559566, 425702949, 425703724]
(cherry picked from commit b824503)

* Problem: Could not install on Python 12 via pip install -e

because of deps problem.
Solution : upgrade aiohttp version

* Problem: Crash in log when VM was printing control char

* Raise log level for VM termination in controller so we always display when it finish

* comment

* Problem: Error were not properly returned in allocation endpoint

* Add Qemu confidential controler implementation

* remove duplicate endpoint

* fix test in test_about_certificates

* Add TODO comment

Co-authored-by: nesitor <[email protected]>

* Only run Confidentifial if is_confidential

* Add script to build OVMF file for confidential VMs (#636)

* Rename the confidential endpoints (#641)

* Rename confidential endpoints

* Rename the function too and reorder

* isort

* Use unified logging system for confidential

* Provide an example confidential image construction script and instruction

* Prevent the cleanup being run twice

but still works with -e

* Problem: sudo command was not working inside the VM

ensure the setuid bit stay preserved when copying the file"

* remove unecesary step

* More example instruction

* Problem: A user cannot specify which OVMF firmware want to use for they instances.

Solution: Use new aleph-message version that includes that data schema and implement it on the qemu confidential resources.

* Adapt example confidential message

* fix host volume for confidential

* Force aleph-message minimal version

* Correct problem in HostVolume code

* Merge both test_operator

* Fix options for HostVolume

* Move `domain` payload field to Operation token instead PubKey one (#647)

* Problem: If a user wants to manage different operations for a different CRNs, they have to sign a new pubkey token for every CRN, and this is so bad for the user experience.

Solution: Move the `domain` field to the operation token payload instead the pubkey one, just to improve the user experience and maintain the security integrity.

* Fix: Solved test error message failing.

---------

Co-authored-by: Andres D. Molins <[email protected]>

* Problem: Failing initialization of AlephQemuConfidentialInstance

due to merge problem

* fix invoking of sevctl

* Update src/aleph/vm/pool.py

---------

Co-authored-by: nesitor <[email protected]>
Co-authored-by: Hugo Herter <[email protected]>
Co-authored-by: Andres D. Molins <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants