Project

Profile

Help

Story #8192

closed

Task #8732: [EPIC] As a user, I can rest easy with all sensitive credentials in the database encrypted at rest

Add code to pulpcore that uses the db key to encrypt fields

Added by bmbouter almost 4 years ago. Updated about 3 years ago.

Status:
CLOSED - CURRENTRELEASE
Priority:
Normal
Assignee:
-
Category:
-
Sprint/Milestone:
Start date:
Due date:
% Done:

100%

Estimated time:
Platform Release:
Groomed:
No
Sprint Candidate:
No
Tags:
GalaxyNG
Sprint:
Sprint 102
Quarter:
Q2-2021

Description

Motivation

Pulp stores sensitive credentials, e.g. password for Basic Auth, proxy password, or client key for client certificate based authentication in the database in plaintext. The authentication and authorization mechanisms of Pulp keep these safe, but if the database itself was compromised, or dumped, those secrets would be readable to anyone with a copy.

Proposal

Encrypt these credentials when they live in the database and decrypt them when they are used. This encryption would use symmetric encryption with a key stored on the filesystem that is generated at install time. A good option would be Fernet symmetric key encryption from the cryptography library.

Related to Story on Removing Secrets from API Response

The scope of the fields that are encrypted should be the same as those that are no longer returned in the API due to sensitivity. See Story 8202 for the list of fields.

Installation Details

The private key will need to be generated at install time. We need to determine where to keep these by default securely. They need to be readable by code without a human involved.


Related issues

Blocked by Pulp - Task #8202: Make sensitive fields write_only and stop filtering on themCLOSED - CURRENTRELEASEdaviddavis

Actions

Also available in: Atom PDF