Skip to content

chore(ci): add top-level permissions: read-all to workflows (RAN-46 AC)#90

Merged
aksOps merged 1 commit into
mainfrom
chore/ran-46-token-permissions
Apr 25, 2026
Merged

chore(ci): add top-level permissions: read-all to workflows (RAN-46 AC)#90
aksOps merged 1 commit into
mainfrom
chore/ran-46-token-permissions

Conversation

@aksOps
Copy link
Copy Markdown
Contributor

@aksOps aksOps commented Apr 25, 2026

Summary

Closes one audit gap from RAN-46 AC #2 ("Workflow permissions: default to read-all, scoped up per job") + Scorecard Token-Permissions finding. Orthogonal to the still-pending (A) ratify-shipped vs (B) revert-to-OSS-CLI ruling on RAN-46.

Diff (8 lines added across 3 files)

  • ci-java.yml — adds top-level permissions: read-all; build job now declares contents: read explicitly. Sonar continues to use SONAR_TOKEN (not GITHUB_TOKEN).
  • beta-java.yml — adds top-level permissions: read-all; existing job-level contents: write + packages: write override for deploy/tag steps.
  • release-java.yml — adds top-level permissions: read-all; existing job-level contents: write overrides for the GPG-signed release commit/tag push.

Audit confirmation (orthogonal to (A)/(B))

  • ✓ All uses: SHA-pinned across all 4 workflows (Scorecard Pinned-Dependencies)
  • ✓ No pull_request_target anywhere (Scorecard Dangerous-Workflow)
  • scorecard.yml already had top-level permissions: read-all
  • ✓ This PR closes the last Scorecard hardening item from the AC

Test plan

  • Signed commit (G) verified locally — 6105dcf
  • All four uses: lines untouched (no SHA churn)
  • CI green on this PR (build + CodeQL + Sonar + Socket)
  • Reviewer pass — minimal-diff hardening, no behaviour change

🤖 Generated with Claude Code

Closes one of the audit gaps from RAN-46 AC #2 ("Workflow permissions:
default to read-all, scoped up per job") + Scorecard Token-Permissions
finding.

Before:
- ci-java.yml had no permissions declaration anywhere — relied on
  repo-default GITHUB_TOKEN scope (which can be write-all on older repos).
- beta-java.yml + release-java.yml only had job-level scopes; missing the
  explicit top-level read-all that Scorecard checks for.

After:
- All three workflows declare `permissions: read-all` at the top level.
- ci-java.yml's build job now declares `contents: read` explicitly
  (no other scopes needed — Sonar uses SONAR_TOKEN, not GITHUB_TOKEN).
- beta-java.yml and release-java.yml keep their existing job-level
  `contents: write` (and `packages: write` for beta) which override the
  top-level for the deploy/tag steps.

Audit confirmation (orthogonal to the (A)/(B) security-stack ruling
still pending on RAN-46):
- All `uses:` SHA-pinned across all 4 workflows (Pinned-Dependencies)
- No pull_request_target anywhere (Dangerous-Workflow)
- scorecard.yml already had `permissions: read-all` at top level
@sonarqubecloud
Copy link
Copy Markdown

@aksOps aksOps merged commit 6c3b9e9 into main Apr 25, 2026
8 checks passed
@aksOps aksOps deleted the chore/ran-46-token-permissions branch April 25, 2026 16:14
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.

1 participant