Skip to content
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

OIDC Provider to Prove Attributes of Jobs to 3rd Parties #14652

Open
4 of 9 tasks
freddierice opened this issue Nov 13, 2023 · 0 comments
Open
4 of 9 tasks

OIDC Provider to Prove Attributes of Jobs to 3rd Parties #14652

freddierice opened this issue Nov 13, 2023 · 0 comments

Comments

@freddierice
Copy link

Please confirm the following

  • I agree to follow this project's code of conduct.
  • I have checked the current issues for duplicates.
  • I understand that AWX is open source software provided for free and that I might not receive a timely response.

Feature type

New Feature

Feature Summary

I would like a way for an ansible job created by AWX to prove to 3rd party platforms its attributes, such as its

  • job name
  • the actor / cronjob that launched the job
  • target hostname
  • starting timestamp

If this were in place, I could set hashicorp vault to trust AWX without sharing app roles for every job and instead create those policies inside of vault.

Github has something similar for github actions:
https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect

Select the relevant components

  • UI
  • API
  • Docs
  • Collection
  • CLI
  • Other

Steps to reproduce

Building in an OIDC provider will allow jobs to be able to authenticate to 3rd parties without hardcoded secrets per job/role/workflow.

Current results

not implemented. secrets are hardcoded

Sugested feature result

The result to an ansible workflow would be

  1. an environment variable in the running job who contents are a signed JWT which
  2. can be verified by AWX and
  3. has useful attributes (issue time, job name, hostname, etc)

Additional information

I think there are 3 components here:

  1. OIDC Provider (could be pulled in from https://django-oidc-provider.readthedocs.io/en/master/)
  2. At what step should the JWT be injected? It needs to be close to "run()" because it needs all the attributes.
  3. Configuration (how do we initialize the server secret? where does it go? how is it rolled? how should job specify that it wants a JWT?)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant