Project

General

Profile

Actions

Idea #13112

closed

Provide a mechanism to store "secrets" securely

Added by Tom Morris about 6 years ago. Updated about 6 years ago.

Status:
Duplicate
Priority:
Normal
Assigned To:
-
Category:
-
Target version:
-
Start date:
Due date:
Story points:
-

Description

There needs to be a way to store credentials and other secrets securely for use by crunch containers.

Requirements / use cases:

  • At runtime, crunch container must be able to get credentials to access remote resources, for example data transfer to remote object storage
  • Storing credentials easily visible places such as the container record, git repo, keep collection or docker image is unacceptable.
  • Storing unencrypted credentials directly in the Arvados Postgres database is not desirable. Homebrew schemes for encrypting credentials are also not desirable.
  • We refer to credentials using a symbolic name, look them up to get the credentials
  • Because access of containers is based on Arvados user (+ special container token) access control to read credentials should also be based on Arvados user and/or container token.
  • From slides:
    • All 3rd Party credentials will be stored in Vault-like secure system. Structure of a vault is key=value,
    • Where vale are credentials provided by 3rd Party and key is being generated by operations portal.
    • Initial proposal for generating credentials key is:
      <prefix><separator><institution_id><separator><program_id><separator><method_id><separator><file_type_id>
      tso_0001_0001_001_001
      

Proposal:

https://dev.arvados.org/projects/arvados/wiki/Vault

Based on the proposal, the essential development tasks are:

  • Create secrets table in API server
  • Create Vault plugin that interacts enables login with Arvados API token and interacts with secrets table to determine policy granting access to secrets.
  • Arvados client support to work with secrets (at minimum, a command line client for reading, writing, and listing secrets which interacts with the API server and Vault)

In order to integrate secrets handling into CWL, a couple of additional tasks are necessary

  • arvados-cwl-runner feature to indicate inputs that represent "secrets" and adjust the container request accordingly.
  • Crunch-run feature to access Vault and perform substitution of secret into config file or environment just-in-time, as part of container setup, prior to running container.

Related issues

Related to Arvados - Feature #13134: [crunch-run] Support for secret_mountsResolvedPeter Amstutz03/12/2018Actions
Related to Arvados - Feature #13143: [API] Add secret_mounts attribute to containers and container_requestsResolvedTom Clegg03/09/2018Actions
Actions

Also available in: Atom PDF