Skip to content
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

[EPIC] IaaS standards #285

Open
31 of 60 tasks
mbuechse opened this issue May 10, 2023 · 5 comments
Open
31 of 60 tasks

[EPIC] IaaS standards #285

mbuechse opened this issue May 10, 2023 · 5 comments
Assignees
Labels
epic Issues that are spread across multiple sprints IaaS Issues or pull requests relevant for Team1: IaaS SCS is standardized SCS is standardized

Comments

@mbuechse
Copy link
Contributor

mbuechse commented May 10, 2023

General

Standard for Standards & Documentation

Mandatory Openstack Services

Computing

Flavor naming, flavor selection, and flavor discoverability:

Standard flavors

OpenStack powered Compute 2022.11

Storage

Volume types

Network

public network

Network Time Protocoll

DNS

L3 loadbalancer (OVN)

Neutron Policy Standard

Images

Image Meta Data

Standard Images

Identity

Domain admin role: Allow project creation, user management as self-service (resellers)

Identity federation via OIDC: Federate users from federated clouds

Security

Baseline security

Database(s)

Entropy in VMs

Key Store

Encryption

Security Groups

Backup and Redundancy

Taxonomy of Backups

User Backup

Definition of Availability Zones: Availability expectations when spreading over AZs

Definition of Region: What is shared?

  • Idea: Share identities, replicate images

Unsorted/unclassified

Metadata source (w/ user-data, vendor-data)

  • Required for customization of VMs

MetaData API

SCS compatibility assessment tool

Openinfra Interop Guidelines

@fkr fkr added IaaS Issues or pull requests relevant for Team1: IaaS epic Issues that are spread across multiple sprints SCS is standardized SCS is standardized labels May 15, 2023
@fkr fkr added this to the R5 (v6.0.0) milestone May 15, 2023
@fkr fkr removed this from the R5 (v6.0.0) milestone Nov 14, 2023
@fkr
Copy link
Member

fkr commented Nov 14, 2023

Discussion on how to best proceed with these standards / item that could be standardized in todays meeting with @josephineSei , @markus-hentsch and @mbuechse

We agreed to

  1. Follow-up on the flavor/properties/traits discussion that happened as part of the Caracal vPTG - this topic is with @fkr
    1a) Work on the topics of DNS and NTP standards, this will be started in the next weeks in Team IaaS
    1b) Find out which items / features / functionality should be standardized for the loadbalancing

@josephineSei
Copy link
Contributor

Somehow editing the description of this issue does not show me the correct version. So maybe one of you can include this:
Standardized list of OpenStack services: #469

@josephineSei
Copy link
Contributor

I opened an issue for the Security Groups: #473 .

@markus-hentsch
Copy link
Contributor

markus-hentsch commented Mar 25, 2024

I discussed with @josephineSei which topics might not be covered yet by SCS standardization appropriately yet and what kind of potential might exist regarding those.

Key rotation

We thought about the possibility of creating a standard or guide for cryptographic key rotation in SCS and had a look at involved components.
We deemed the following topics relevant for key rotation.

Cinder Volumes:

  • encryption uses Barbican keys, no rotation currently supported
  • key rotation would require a new feature contribution to upstream
  • rotation could work generating new secret in Barbican and swapping keys in the LUKS key slots
    • swapping key in LUKS slot is quick and atomic operation
  • however, simply swapping keys in the LUKS slots is weak since copies of the old LUKS header (just 2MB) and the old secret can still unlock the current LUKS master key even if the key slot was replaced!
    • the effort of implementing this upstream would not be justified by the relatively low security gain
  • alternative would be to offer online reencryption using LUKS v21
    • would not be an atomic operation anymore, can become error prone in a lot of ways
    • needs complex handling of the progress and state of the potentially lengthy reencryption process

Ephemeral Storage (Nova):

  • encryption uses Barbican keys, no rotation currently supported
  • key rotation would require a new feature contribution to upstream
  • only LVM backend currently suppports encryption2
  • more generic support is still WIP3 and not finished upstream
  • uses the same LUKS encryption as Cinder volumes, hence the same cryptographic limitations apply, see the Cinder section above

Images (Glance):

  • image encryption upstream contribution still WIP currently4
  • encryption uses Barbican keys, no rotation currently supported
  • encryption is not LUKS-based, key rotation could only work by reencrypting the full image file
    • could be done manually using API or client by downloading, reencrypting and reuploading the image
    • upstream implementation in Glance would be costly both in terms of required processing time and disk space

Keystone token provider:

  • the default backend (Fernet) has a well-known rotation implementation using secondary and staged keys, the keystone-manage utility provides a rotation mechanism5
  • upstream documentation could be referenced but is pretty sparse regarding the specific workflow of rotating and distributing the keys correctly
  • SCS could document a better guide
  • JWS rotation is easy, they're just individual keypairs per Keystone instance and well documented6

PKI / TLS

  • for all API interfaces and backend channels (e.g. RabbitMQ, DB) that can be protected by TLS, a key rotation and certificate exchange can be established
  • this is usually part of the PKI and seems out of scope for a key rotation standard or guide

Summary: LUKS encryption key rotation (concerns Nova and Cinder) would require an upstream contribution and would either be weak cryptographically (when changing only key slots) or require a lot of effort to get right (online reencryption). Glance image key rotation could be established using guidelines and a manual process but the implementation is not ready yet.
The only thing immediately actionable here would be creating a better guide for Keystone Fernet key rotation.

Backups

We briefly discussed the potential necessity of some form of backup guide for user data due to the following considerations:

  • from a user's POV the backup mechanisms offered by OpenStack might be either insufficient or lacking in terms of clear and concise documentation
  • Glance images can be downloaded
  • Cinder volumes
    • there's openstack volume backup create but that requires Swift (who uses Swift?)
    • openstack server image create when used on a volume-based server will create volume snapshots but snapshots aren't genuine backups! (misleading?)
    • alternative: image from volume using imtermediate snapshots, known approach but poorly documented
  • for Ephemeral Storage there's also openstack server image create which creates Glance images as backup

... so the state seems pretty messy. server image create does different things in a non-obvious way depending on whether Ephemeral Storage or volumes are used. volume backup create does not create genuine backups strictly speaking.

We see potential here to at least formulate a guide to better assist users seeking to implement a backup concept.

Footnotes

  1. https://fossies.org/linux/cryptsetup/docs/v2.2.0-ReleaseNotes

  2. https://docs.openstack.org/security-guide/tenant-data/data-encryption.html#ephemeral-disk-encryption

  3. https://review.opendev.org/q/message:ephemeral-storage-encryption+status:open

  4. https://review.opendev.org/q/topic:%22image-encryption%22

  5. https://docs.openstack.org/keystone/2023.2/admin/fernet-token-faq.html#what-are-the-different-types-of-keys

  6. https://docs.openstack.org/keystone/latest/admin/jws-key-rotation.html

@josephineSei
Copy link
Contributor

@markus-hentsch and I further discussed the possible need to:

  1. standardize the usage of TLS and traffic encryption between the OpenStack services and the database at least.
  2. deep-dive into the possibilty to create VPNaaS in Neutron (https://docs.openstack.org/neutron-vpnaas/latest/) and whether this would be needed as a standard.
  3. deep dive into possibilities to isolate a Compute Host for a project, check if that would be a requirement for certain users and possibly make this feature better usable upstream

@anjastrunk anjastrunk self-assigned this Apr 15, 2024
@anjastrunk anjastrunk changed the title Work on missing IaaS standards EPIC: IaaS standards Apr 15, 2024
@anjastrunk anjastrunk changed the title EPIC: IaaS standards [EPIC] IaaS standards Apr 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
epic Issues that are spread across multiple sprints IaaS Issues or pull requests relevant for Team1: IaaS SCS is standardized SCS is standardized
Projects
Status: Doing
Development

No branches or pull requests

5 participants