argoproj / argoproj/argo-workflows

S3 Artifact multi-namespace security vulnerability

Open
#1,187 4 comments 7 reactions 0 assignees View on GitHub
area/artifacts type/security
Dominant language
Go
Stars
17k
Forks
3.7k
Avg merge
1d 20h
Merged PRs (30d)
138

Description

**Is this a BUG REPORT or FEATURE REQUEST?**:
Both

**What happened**:
Context:
We want to run workflows in multiple namespaces.
We want to use s3 for storing artifacts.

Storing and retrieving artifacts is handled by the argoexec sidecar pod.
For s3 this pod _directly_ connects to s3.
To connect to s3 the sidecar needs s3 credentials. These credentials need to be present in each namespace that we want to run workflows.
Having these credentials in each namespace opens up the s3 bucket to all namespaces. Having artifacts from one namespace available to other namespaces.
Proper namespace isolation cannot be done in this way.

**What you expected to happen**:
Storing and retrieving artifacts is proxied by the controller which handles the connection to s3. The controller first checks if the workflow is authorized to obtain the artifact.
This way direct access to the storage location is shielded and the artifact storage can be used for all namespaces.

Running a controller in each namespace or having a s3 bucket per namespace (currently not possible) are not feasible scaling solutions.

**How to reproduce it (as minimally and precisely as possible)**:
Run workflows in seperate namespaces

**Anything else we need to know?**:

**Environment**:
- Argo version: 2.2.1
- Kubernetes version : 1.12.4

Contributor guide

Open the contributing guide

Research direction

Start by examining the argoexec sidecar's artifact storage and retrieval path and the controller entry points described in the issue. Trace how S3 credentials and namespace authorization are handled, then verify that artifacts cannot be accessed across namespaces while shared S3 storage remains usable.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, kubernetes
Domain
backend-api-design, cloud, security
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.