Skip to end of banner
Go to start of banner

FOLIO secrets management - Requirements

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

This page is aimed to consolidate and document all known requirements (both functional and non-functional) applicable to FOLIO secrets management.

Use cases

  1. A user (administrator) wants to create/manage secrets through the secret storage directly and allow FOLIO modules to access those secrets (read-only access)

  2. A user (administrator) wants to create/manage secrets through FOLIO. E.g., a module might need to store credentials to some external system (like FTP or SMTP server credentials, API keys etc. UI forms are involved as well for interaction with a user
  3. A module wants to create/manage secrets so that a user is not even in the loop here, and the interaction is only between the module and secret storage. Examples are modules which are creating system/tenant users (like mod-pubsub), or a case with generating and storing signing keys in such a way that all instances of the mod-authtoken container can easily stay aligned.

Secret types

The following secret types are to be supported:

Secret typeFormatWho creates?Who accesses?How does it work now?Additional notes
login & passwordString
  • FOLIO resource administrator
  • external system administrator
  • modules working with any resource with logo-pass
different modules use their own storages for that
API keyString
  • administrator
  • system
  • modules working with APIs
different modules use their own storages for that
tokenString
  • system
  • mod-authtoken
  • modules working with tokens


SSL certificatefile
  • administrator
  • modules using certificate for work with Kafka

Cannot be stored in SSM, Vault etc.

Encrypted S3?

Secret stores

The following secret stores are to be supported:

Secret store mechanismLinksEnvironments or needs
HarshiCorp Vaulthttps://www.vaultproject.io/on-premises installations
AWS Systems Manager Parameter Store ( or just AWS SSM)https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.htmlAs an option for AWS cloud hosting
AWS Secrets Managerhttps://aws.amazon.com/secrets-manager/As an option for AWS cloud hosting
properties-file
for dev/test needs
environment variables
(question)

K8S secrets


(question)

User interface

(question) Home-grown unified web UI vs. store-specific UIs

Both AWS SSM and Vault have their own management user interfaces, Rancher provides an option to manage secrets in form of environment variables in UI forms.

Tech stack support

The following programming languages used on Folio platform are to be supported:

  • Java Spring way
  • Java Vert.x
  • (question) Node.js (RA: I haven't met such modules/components by my own but have heard they exist - should they be considered?)
  • are there any other languages used?

Audit capabilities

Access to secrets must be logged for further audit

Proposal - start now with option 1, may consider option 2 later if option 1 won't be enough.

Secret store access

Any particular FOLIO module should only access its own secrets

Notes:

Multi-tenancy support

A tenant should only access its own secrets

Notes:

  • tenants are FOLIO internal term, so that it seems now that access verification on tenant level cannot be supported on Secret store level
  • tenant ID can be used as a part of secret ID

(question) Adding new secrets (even for a new tenant) should be available without restart

Secret update in runtime

(question) Are there specific requirements to runtime updating for secrets? I.e. should consumers be able to update secrets in runtime without restart/downtime?

Caching secrets

(question) Can / should secrets be cached in apps?

  • Concern is about storing secrets in memory - there's potential risk of data extracting from RAM, though this can be considered as a low risk / low impact
  • Caching reduces load on Secret Store, and improves performance & availability



  • No labels