-
Notifications
You must be signed in to change notification settings - Fork 0
chore: multi-API repo cleanup + provider-upjet-zitadel dep #6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -23,22 +23,21 @@ permissions: | |
|
|
||
| jobs: | ||
| validate: | ||
| uses: unbounded-tech/workflows-crossplane/.github/workflows/validate.yaml@v2.20.0 | ||
| uses: hops-ops/workflows-crossplane/.github/workflows/validate.yaml@v3.0.0 | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: git ls-files ".github/workflows/*.yaml" | head -20Repository: hops-ops/auth-stack Length of output: 169 🏁 Script executed: cat -n .github/workflows/on-push-main.yamlRepository: hops-ops/auth-stack Length of output: 1741 🏁 Script executed: # Check if hops-ops/workflows-crossplane is a real repo and what tags/commits are available
web_search
GitHub Actions best practices: commit SHA vs tag pinningRepository: hops-ops/auth-stack Length of output: 159 🌐 Web query:
💡 Result: In the context of GitHub Actions security, pinning to a full-length commit SHA is the industry-standard best practice for ensuring immutability and mitigating supply chain attacks [1][2][3]. Key differences and security implications: Commit SHA Pinning (Recommended) - Immutability: A commit SHA uniquely identifies a specific state of the repository, ensuring that the exact same code runs every time [2][4][3]. - Security: It protects against tag hijacking, where an attacker compromises a repository or maintainer account to move a version tag (e.g., v1) to a malicious commit [5][6][3]. - Implementation: Use the full-length commit SHA (e.g., actions/checkout@b4ffde6) [1][2]. - Maintenance: To maintain readability and facilitate updates, it is best practice to include the version tag as a comment (e.g., uses: actions/checkout@b4ffde6 # v4.1.1) [5][7][4]. Tag-Based Pinning (Convenient but Risky) - Mutability: Version tags (e.g., v1, v1.2) are mutable references in Git [3][8]. They can be deleted and re-created or force-pushed to point to different commits, making them vulnerable to supply chain compromise [6][3][9]. - Trust: Pinning to a tag should only be done if you fully trust the creator [1]. Even then, it remains susceptible to account takeovers or repository compromises [5][1]. Best Practices for 2025-2026 - Enforce SHA Pinning: Organizations can now configure policies at the repository or organization level to require that all actions be pinned to a full-length commit SHA [1][4][10]. - Automated Updates: Use tools like Dependabot or Renovate to manage updates for pinned actions [5][7][11]. These tools can automatically open pull requests to update SHAs when new versions are released, balancing security with maintenance [4][3]. - Blocklist Compromised Actions: GitHub allows organizations to block specific actions or versions using the! prefix (e.g.,!compromised-org/action) to respond rapidly to security incidents [4][10]. - Defense in Depth: Pinning is one layer of security. Other critical practices include minimizing secret exposure, using OIDC for authentication, auditing high-privilege workflow triggers (e.g., pull_request_target), and restricting self-hosted runners [12][13][10]. Citations:
Pin reusable workflows by commit SHA. These Also applies to: 37-37, 40-40 🧰 Tools🪛 zizmor (1.25.2)[error] 26-26: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy) (unpinned-uses) 🤖 Prompt for AI Agents |
||
| with: | ||
| examples: | | ||
| [ | ||
| { "example": "examples/authstacks/minimal.yaml" }, | ||
| { "example": "examples/authstacks/standard.yaml" }, | ||
| { "example": "examples/authstacks/local-colima.yaml" } | ||
| { "example": "examples/authstacks/minimal.yaml", "api_path": "apis/authstacks" }, | ||
| { "example": "examples/authstacks/standard.yaml", "api_path": "apis/authstacks" }, | ||
| { "example": "examples/authstacks/local-colima.yaml", "api_path": "apis/authstacks" } | ||
| ] | ||
| api_path: apis/authstacks | ||
| error_on_missing_schemas: true | ||
|
|
||
| test: | ||
| uses: unbounded-tech/workflows-crossplane/.github/workflows/test.yaml@v2.20.0 | ||
| uses: hops-ops/workflows-crossplane/.github/workflows/test.yaml@v3.0.0 | ||
|
|
||
| e2e: | ||
| uses: unbounded-tech/workflows-crossplane/.github/workflows/e2e.yaml@v2.20.0 | ||
| uses: hops-ops/workflows-crossplane/.github/workflows/e2e.yaml@v3.0.0 | ||
|
|
||
| version-and-tag: | ||
| name: Version and Tag | ||
|
|
||
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
Repository: hops-ops/auth-stack
Length of output: 1729
Pin reusable workflow references to immutable commit SHAs.
Using
@v3.0.0leaves these jobs vulnerable to tag retargeting. Pin to full commit SHAs and optionally annotate the intended tag in a comment.🔒 Suggested hardening
Also applies to: 41-41, 44-44, 50-50
🧰 Tools
🪛 zizmor (1.25.2)
[error] 30-30: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)
(unpinned-uses)
🤖 Prompt for AI Agents