heroku / heroku/roadmap

Allow dynos to assume an AWS IAM role without using an access key

Open
#247 5 comments 21 reactions 0 assignees View on GitHub
Proposed
Dominant language
No language data
Stars
225
Forks
19
PR merge metrics
No merged PRs in 30d

Description

### Required Terms

- [X] I agree to follow this project's [Code of Conduct](https://github.com/heroku/roadmap/blob/main/CODE_OF_CONDUCT.md)
- [X] I have read and accept the [Salesforce Program Agreement](https://www.salesforce.com/company/program-agreement/)

### What service(s) is this request for?

Heroku dynos

### Tell us about what you're trying to solve. What challenges are you facing?

Amazon recommends avoiding using long-term credentials like access keys for security reasons. It's best practice to rotate these credentials frequently. This is an administrative overhead.

We regularly set an AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY secret in each application to allow it to perform actions in our AWS account.

Can we find a way to authorise dynos in our AWS account without requiring static secrets?

---

Other systems allow us to let them assume a role in our AWS account. We create a role with the trust policy that allows a user in their AWS account to assume the role.

In this hypothetical implementation:
- Heroku would provide the AWS Account ID and an External ID that we would use to set up a role in our AWS account.
- We would add the role ARN to our Heroku applications configuration.
- On dyno startup, Heroku would retrieve temporary credentials and supply them to the running process.

I wonder if this is technically feasible. I note that [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) has a maximum duration of 12 hours, which would limit the length of time a dyno would be able to run.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.