Skip to content

Document S3 environment credential resolution - #207

Merged
nscuro merged 4 commits into
DependencyTrack:mainfrom
fffinkel:s3-ambient-aws-credentials
Aug 16, 2026
Merged

Document S3 environment credential resolution#207
nscuro merged 4 commits into
DependencyTrack:mainfrom
fffinkel:s3-ambient-aws-credentials

Conversation

@fffinkel

@fffinkel fffinkel commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

What changed

The S3 provider section of docs/reference/configuration/file-storage.md showed static credentials as the only option:

dt.file-storage.s3.access-key=<access-key>
dt.file-storage.s3.secret-key=<secret-key>

Nothing told an AWS reader that omitting both properties makes the api server resolve credentials from its environment. This adds an "Authentication" subsection describing both credential modes, the resolution order, when resolution happens, and the fact that EKS Pod Identity is not supported.

Depends on

This documents behavior introduced by DependencyTrack/dependency-track#6851, which is not merged yet. Please do not merge this before that change lands, or the page will describe behavior the api server does not have.

Additional details

properties.md is deliberately untouched. The api server change also edits application.properties, so the generated property descriptions for dt.file-storage.s3.access-key and dt.file-storage.s3.secret-key are now stale. Per AGENTS.md I did not hand-edit a generated file, and the Update config docs workflow regenerates it once the api server change merges. Say the word if you would rather I run make generate-config-docs and include the result here.

Diataxis. This is a reference page, so the new section only describes. The reasoning for the change, and the argument for preferring roles over long-lived keys, is deliberately left out. That belongs in Concepts, or in the follow-up section of ADR-004 in the api server repo, where I recorded it.

Pod Identity exclusion. Worth stating explicitly rather than leaving readers to infer it from silence. The api server's S3 client does not read the token file the Pod Identity Agent provides, and it rejects the agent's endpoint because that address is not a loopback address.

Verification

  • make lint-markdown reports 0 errors across 106 files.
  • make lint-prose reports 0 errors for this page. Three warnings remain, all on pre-existing lines I did not touch (is selected, multiple, will). The passive-voice warnings my own additions triggered are fixed.
  • make build completes a strict build with no errors, and the new properties.md#... anchor links all resolve.

@nscuro nscuro left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One small correction please, otherwise good to go.

Please also make sure to sign-off your commits so the DCO check passes.

Comment thread docs/reference/configuration/file-storage.md Outdated
The S3 provider section only showed static credentials, so there was
no indication that omitting the access key and secret key makes the
api server resolve credentials from its environment instead.

Add an Authentication subsection describing both credential modes,
the resolution order, when resolution happens, and the fact that EKS
Pod Identity is not supported.

Signed-off-by: Matt Finkel <finkel.matt@gmail.com>
The api server change was reworked: ambient AWS credential resolution
is now opt-in via dt.file-storage.s3.credentials-source=aws, and the
default keeps the original behavior, including anonymous access when
no credentials are configured. Describe all three modes.

Signed-off-by: Matt Finkel <finkel.matt@gmail.com>
Anonymous write access is not supported and will not be patched
around; see the discussion in DependencyTrack/dependency-track#6851.
Document that uploads fail when no credentials are configured.

Signed-off-by: Matt Finkel <finkel.matt@gmail.com>
The api server now fails startup when access-key or secret-key is
missing with credentials-source=static, instead of sending unsigned
requests. Drop the outdated anonymous access paragraph.

Signed-off-by: Matt Finkel <finkel.matt@gmail.com>
@fffinkel
fffinkel force-pushed the s3-ambient-aws-credentials branch from 46c8669 to 85dc49f Compare August 16, 2026 15:34
@fffinkel
fffinkel requested a review from nscuro August 16, 2026 15:39
@nscuro
nscuro merged commit c872555 into DependencyTrack:main Aug 16, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants