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

Backport of allow periodic jobs to use workload identity ACL policies into release/1.5.x #17272

Merged

Conversation

hc-github-team-nomad-core
Copy link
Contributor

Backport

This PR is auto-generated from #17018 to be assessed for backporting due to the inclusion of the label backport/1.5.x.

The below text is copied from the body of the original PR.


prevent all calls to the Task API from a periodically-dispatched job failing with 403.

This happens because no policy for the job id (one with a periodic-\d+ suffix) matches the generated token claims (that specifically use the parent job id).

steps to reproduce

Create a policy with

nomad acl policy apply -namespace default -job example example-job <(cat <<EOF
namespace "default" {
  policy = "write"
}
EOF
)

Create a job

# example.nomad
job "example" {
  datacenters = ["casa"]
  type = "batch"
  priority = 10

  periodic {
    cron             = "*/15 * * * * *"
    prohibit_overlap = true
  }

  group "example" {
    task "example" {
      driver = "docker"

      config {
        image = "curlimages/curl:7.87.0"
        args = [
          "--unix-socket", "${NOMAD_SECRETS_DIR}/api.sock",
          "-H", "Authorization: Bearer ${NOMAD_TOKEN}",
          "--fail-with-body",
          "--verbose",
          "localhost/v1/client/metadata",
        ]
      }


      identity {
        env = true
        file = false
      }
    }
  }

}

Run and dispatch

nomad run example.nomad 
echo "{}" | nomad job dispatch example -

It'll fail with a 403, and upon inspecting the claims we find

echo "the second part of the JWT, possibly padded with equal signs" | base64 -d | jq
{
  "nomad_namespace": "default",
  "nomad_job_id": "example",
  "nomad_allocation_id": "dcc6477e-1b20-afbd-b46a-d3810d198b53",
  "nomad_task": "example",
  "nbf": 1682647044,
  "iat": 1682647044
}

but current code searches for policies for job id example/periodic-\d+

@hc-github-team-nomad-core hc-github-team-nomad-core merged commit a8f16e8 into release/1.5.x May 22, 2023
@hc-github-team-nomad-core hc-github-team-nomad-core force-pushed the backport/patch-1/especially-handy-tick branch from 80ada79 to 4658aa8 Compare May 22, 2023 13:19
@hc-github-team-nomad-core hc-github-team-nomad-core deleted the backport/patch-1/especially-handy-tick branch May 22, 2023 13:19
@vercel vercel bot temporarily deployed to Preview – nomad-storybook-and-ui May 22, 2023 13:26 Inactive
@vercel vercel bot temporarily deployed to Preview – nomad May 22, 2023 13:27 Inactive
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.

3 participants