• Tim Gross's avatar
    workload identity (#13223) · d3e9b9ac
    Tim Gross authored
    In order to support implicit ACL policies for tasks to get their own
    secrets, each task would need to have its own ACL token. This would
    add extra raft overhead as well as new garbage collection jobs for
    cleaning up task-specific ACL tokens. Instead, Nomad will create a
    workload Identity Claim for each task.
    
    An Identity Claim is a JSON Web Token (JWT) signed by the server’s
    private key and attached to an Allocation at the time a plan is
    applied. The encoded JWT can be submitted as the X-Nomad-Token header
    to replace ACL token secret IDs for the RPCs that support identity
    claims.
    
    Whenever a key is is added to a server’s keyring, it will use the key
    as the seed for a Ed25519 public-private private keypair. That keypair
    will be used for signing the JWT and for verifying the JWT.
    
    This implementation is a ruthlessly minimal approach to support the
    secure variables feature. When a JWT is verified, the allocation ID
    will be checked against the Nomad state store, and non-existent...
    d3e9b9ac