Skip to main content

Backend 3.16.2

Tera Insights Team
Tera Insights Team
tiCrypt Team

What is in this release​


New​

  • The hardware setup list says when a setup's image is missing or was never set, so the web app can warn every user and not just those who can list VM images

Changes​

  • A login challenge can be answered only once, and each login attempt asks for a new one. Before, a captured answer could be replayed to open new sessions until the challenge expired
  • Super-admin accounts are no longer locked after a long time without logging in, so a deployment can no longer lose its only Super-admin to the inactivity lock
  • Users locked because their account expired, or locked with an API token, show the deactivation type "Admin" instead of "Timeout"
  • Users below Sub-admin, who lack the permission to modify users, no longer see other users' deactivation reasons and registration comments in user lists and email search results
  • Sub-admins who have the permission to list all users now see every user under Management, Users. Before, they saw only the users of the teams and projects they manage. They can still change only the users they manage
  • Creating a user with an expiration date through the API is refused; before, the user was created without it. Set the expiration date after creating the user
  • Admins can no longer remove a group's owner from the group; transfer the ownership first
  • User quota names containing ".", "$", "<", ">" or a null character are refused, as they already were for team quotas
  • Listing messages returns at most 500 messages per request
  • Moving a file or directory into a sub-project needs access to the project it is currently in
  • Renaming a vault entry to a name already used in the same directory is refused; before, it replaced the other entry
  • Changing a VM's project needs ownership or management of the VM; Admins are not affected
  • Admins can no longer give a user a reserved VM account name, such as root, nobody, system, con, prn, aux, nul, com1 to com9 or lpt1 to lpt9; users who already have one keep it
  • VM account names are no longer generated as con, prn or system; these users need an Admin to set their VM account name, as users named root or nobody already did
  • Creating a data VM through the API returns a clear "Data VMs are not supported" error instead of an internal error
  • A VM keeps only its 50 most recent VM controller info reports; before, they piled up without limit
  • Random MAC addresses given to new Libvirt VMs are locally administered (their first octet is, for example, 02, 06, 0a or fe), so they cannot clash with a physical network card
  • Random MAC addresses given to new Nutanix VMs without a set MAC address are locally administered too, so they cannot clash with a physical network card
  • Saving a hardware setup or hardware profile refuses raw libvirt XML that is not well-formed on its own
  • Deleting a hardware profile that is not stored in the database, such as one defined only in the realm configuration, reports that the profile does not exist instead of reporting success
  • Testing the connection to a Nutanix realm needs a Super-admin session
  • Restarting a service as someone who is not a Super-admin answers 403 Forbidden instead of 404 Not Found
  • Error replies no longer include database or libvirt error text from the underlying cause; turn on errors.include-stack-trace in ticrypt-rest to see it
  • The database export writes only under ticrypt.auth.mongo-export.base-directory (default /var/lib/ticrypt/mongo-export): a relative directory is created there, and a directory outside it is refused
  • Backend services log at INFO instead of DEBUG, so the journal no longer fills with library debug output. The log level is set in the new /etc/ticrypt/logback.xml
  • The VM service no longer writes the parameters given to a VM into its log
  • Services log a warning the first time a message type is sent to another service with Java serialization
  • The ticrypt-allowedlist-ipset service writes its ipset file to /run/ticrypt instead of /tmp
  • The log analyzer scripts need Python 3

Fixes​

  • A single-use session, such as the one used to add a user from a signed message, ends after its first use; before, it stayed valid until it expired
  • Re-activating a user keeps their account expiration date if it is still in the future, and an expiration date sent with the re-activation is saved
  • Changing a user's email to one already in use says the email is taken instead of reporting a server error
  • Changing a user's permissions to an unknown or malformed set is refused with a clear error instead of a server error
  • Every permission group, such as "@slurm" or "@vm-config", can be used in default-permissions and banned-permissions
  • Signature algorithms with parameters, such as "RSA-PSS-SHA256#saltLen=32", are accepted instead of failing with a server error
  • A new or deleted profile picture shows right away instead of after up to 20 minutes
  • Error messages and logs no longer contain session tokens, profile pictures, setting values or escrow request bodies
  • Deleting an API token or a message reports an error when the delete fails, instead of reporting success
  • Failed device-manager logins and failed file ownership changes are recorded as failures in the audit log
  • The audit log records a hash of a new profile picture, the error codes of device manager changes, and a "security level retrieved" entry when one security level is read
  • A file upload whose hash does not match, a failed hardware setup or VM configuration lookup, and running out of proxy ports report their own error codes
  • A new project is returned only once its creator has been added as its manager, so actions on it right after creation no longer fail
  • A project manager who is the project's last member can delete the project; their own membership is removed with it
  • The admin project statistics show file, directory and VM usage for projects that have no members
  • New teams no longer get an end date equal to their creation time
  • A group whose owner was removed from it can be given a new owner again, and transferring the ownership to the current owner no longer takes away the owner's group permissions
  • Setting a quota for a user whose quotas were never listed no longer fails, and the user's quota "last updated" time is kept current
  • Renaming a vault entry that no longer exists reports an error instead of leaving a hidden entry that blocks the new name
  • A failure while creating a user's or group's root directory can no longer leave a vault that never loads
  • Users are no longer told about drive key changes that failed, and a failed key escrow is no longer also logged as a success
  • Starting a VM with a MAC address that a running VM already uses is refused on every realm type, and VM configurations use their MAC address options
  • A VM's managers can detach drives from it, as they can already attach them
  • Taking a VM configuration out of a time-limited access rule closes its open access, even when someone opens it at that moment; before, adding the configuration back reopened access until the old opening expired
  • Setting a VM account name that another user already has reports "Account name already in use" instead of a database error
  • VM controller info reports that arrive at the same time no longer overwrite each other
  • External (Slurm) VMs report the protocol version they registered with instead of 0
  • Creating a drive with a pool name finds the pool in the drive's realm instead of the default realm
  • "Create and attach drive" creates the drive in the VM's realm, and no longer leaves an unused drive behind when the attach fails
  • Finishing a large drive upload no longer reports success when the drive key could not be saved
  • A drive import that cannot link the drive file no longer leaves a "Ready" drive without a volume, and a failed import no longer leaves a drive record behind
  • Drive move requests sent while the server is still connecting to the TICP copier are sent again once it connects, instead of being lost when that connection attempt is refused
  • The attached filter of the drive list API returns only the attached, or only the unattached, drives; before, it returned none or all of them
  • A drive snapshot commit that gives up after too many failed attempts is recorded as failed with a reason, instead of staying in progress
  • A drive created in a Libvirt realm no longer stays "Initializing" when one of the realm's hosts cannot refresh the drive's storage pool
  • Images and pool contents listed right after a volume was created include that volume
  • Forcing a shutdown of all VMs on a Libvirt host no longer reports an error after the VMs have been destroyed
  • VMs whose hardware setup uses VNC video get the debug registration timeout again (2 hours by default), instead of being destroyed after 4 minutes when they have not registered
  • Deleting a hardware profile in a Libvirt realm whose name differs from its ID removes the profile
  • The hardware profile list of a Libvirt realm no longer randomly leaves out profiles defined in the realm configuration
  • A disabled Libvirt host that registers itself again as enabled stays enabled and gets connected, instead of being disabled again
  • Launching a VM on a Libvirt host with a MAC address list checks the addresses in one database query, instead of reading every active VM once per address
  • Rare races in Libvirt realms no longer leave a deep-cloned image locked or a host's resource usage out of date
  • vGPU slots are tracked correctly for VMs with five or more PCI devices
  • Host reservations with a fractional or too large number of hosts are refused, instead of being created with zero or a negative number of hosts
  • Testing the connection of a Nutanix v2 realm returns a "not supported" error at once; before, the request went unanswered until it timed out and the realm manager restarted
  • Nutanix VM creation errors show the message Nutanix returned instead of an empty one
  • Starting, stopping and deleting Nutanix VMs no longer ties up connections to Prism until a timeout
  • Nutanix v2 realms remove deleted VMs and detached backed-up drives from the protection domain, and log an error when Nutanix refuses
  • A Nutanix task that cannot be polled fails the waiting operation right away instead of after the request timeout
  • The VM service applies the cache settings under ticrypt.vm.caching.vms (size and expiry), and a deleted external VM is no longer served from the cache
  • A licensing-server-driver value written in mixed case, such as "FirewallD", no longer keeps the VM service from starting
  • Expired port reservations keep being removed after a database error, instead of piling up until the VM service restarts
  • Batch jobs no longer fail after a VM configuration's Slurm account is removed and set up again; the batch service no longer needs a restart
  • A batch job submitted while the periodic job cleanup runs is no longer cancelled right after it starts
  • The periodic cleanup of finished batch jobs no longer stops working because of an old job record without a Slurm job ID
  • A batch job's VM controller connection no longer stalls or closes after a fragmented or malformed message
  • Requeueing several batch jobs at once through the API works
  • Updating a Slurm account's fair-share works when the web app is served from another address than the server
  • The CPU and memory usage statistics each service reports are correct
  • The logging library is updated to a version that fixes CVE-2023-6378, CVE-2023-6481, CVE-2024-12798 and CVE-2024-12801
  • Removing the ticrypt-maintenance, ticrypt-allowedlist or ticrypt-allowedlist-ipset package stops and disables its service, once this release is installed
  • ticrypt-services.sh reloads the systemd units only when starting services, not for every command
  • The ticrypt-allowedlist and ticrypt-allowedlist-ipset services no longer stop on a blank or malformed line in the allowed list or on a failed firewall command, and a failed DNS lookup no longer drops a host from the list
  • The ticrypt-allowedlist and ticrypt-allowedlist-ipset packages install on hosts without internet access. Before, the install failed because it downloaded a Python module with pip
  • The drive recovery scripts, delete_virt_account.sh and the file recovery guide use the right output stream and database names
  • The log analyzer's load.sh no longer deletes the live ticrypt-secure-log.log

Upgrading​

  • To get debug logs, set the root level to DEBUG in /etc/ticrypt/logback.xml and restart the service. An existing /etc/ticrypt/logback.xml is kept on upgrade
  • Scripts that export the database to a directory outside /var/lib/ticrypt/mongo-export must send a relative directory, or set ticrypt.auth.mongo-export.base-directory in /etc/ticrypt/ticrypt-auth.conf