mirror of
https://github.com/aws-actions/configure-aws-credentials.git
synced 2026-09-03 06:05:04 +09:00
Merge pull request #362 from alblue/allow-audience
feat: Allow audience to be explicitly specified
This commit is contained in:
@@ -82,6 +82,7 @@ The default session duration is 1 hour when using the OIDC provider to directly
|
|||||||
The default session duration is 6 hours when using an IAM User to assume an IAM Role (by providing an `aws-access-key-id`, `aws-secret-access-key`, and a `role-to-assume`) .
|
The default session duration is 6 hours when using an IAM User to assume an IAM Role (by providing an `aws-access-key-id`, `aws-secret-access-key`, and a `role-to-assume`) .
|
||||||
If you would like to adjust this you can pass a duration to `role-duration-seconds`, but the duration cannot exceed the maximum that was defined when the IAM Role was created.
|
If you would like to adjust this you can pass a duration to `role-duration-seconds`, but the duration cannot exceed the maximum that was defined when the IAM Role was created.
|
||||||
The default session name is GitHubActions, and you can modify it by specifying the desired name in `role-session-name`.
|
The default session name is GitHubActions, and you can modify it by specifying the desired name in `role-session-name`.
|
||||||
|
The default audience is `sts.amazonaws.com` which you can replace by specifying the desired audience name in `audience`.
|
||||||
|
|
||||||
The following table describes which identity is used based on which values are supplied to the Action:
|
The following table describes which identity is used based on which values are supplied to the Action:
|
||||||
|
|
||||||
@@ -118,6 +119,19 @@ In this example, the Action will load the OIDC token from the GitHub-provided en
|
|||||||
```
|
```
|
||||||
In this example, the secret `AWS_ROLE_TO_ASSUME` contains a string like `arn:aws:iam::123456789100:role/my-github-actions-role`. To assume a role in the same account as the static credentials, you can simply specify the role name, like `role-to-assume: my-github-actions-role`.
|
In this example, the secret `AWS_ROLE_TO_ASSUME` contains a string like `arn:aws:iam::123456789100:role/my-github-actions-role`. To assume a role in the same account as the static credentials, you can simply specify the role name, like `role-to-assume: my-github-actions-role`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Configure AWS Credentials for Beta Customers
|
||||||
|
uses: aws-actions/configure-aws-credentials@v1
|
||||||
|
with:
|
||||||
|
audience: beta-customers
|
||||||
|
aws-region: us-east-3
|
||||||
|
role-to-assume: arn:aws:iam::123456789100:role/my-github-actions-role
|
||||||
|
role-session-name: MySessionName
|
||||||
|
```
|
||||||
|
In this example, the audience has been changed from the default to use a different audience name `beta-customers`. This can help ensure that the role can only affect those AWS accounts whose GitHub OIDC providers have explicitly opted in to the `beta-customers` label.
|
||||||
|
|
||||||
|
Changing the default audience may be necessary when using non-default [AWS partitions](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
|
||||||
|
|
||||||
### Sample IAM Role CloudFormation Template
|
### Sample IAM Role CloudFormation Template
|
||||||
```yaml
|
```yaml
|
||||||
Parameters:
|
Parameters:
|
||||||
|
|||||||
@@ -4,6 +4,10 @@ branding:
|
|||||||
icon: 'cloud'
|
icon: 'cloud'
|
||||||
color: 'orange'
|
color: 'orange'
|
||||||
inputs:
|
inputs:
|
||||||
|
audience:
|
||||||
|
default: 'sts.amazonaws.com'
|
||||||
|
description: 'The audience to use for the OIDC provider'
|
||||||
|
required: false
|
||||||
aws-access-key-id:
|
aws-access-key-id:
|
||||||
description: >-
|
description: >-
|
||||||
AWS Access Key ID. This input is required if running in the GitHub hosted environment.
|
AWS Access Key ID. This input is required if running in the GitHub hosted environment.
|
||||||
|
|||||||
@@ -263,6 +263,7 @@ async function run() {
|
|||||||
try {
|
try {
|
||||||
// Get inputs
|
// Get inputs
|
||||||
const accessKeyId = core.getInput('aws-access-key-id', { required: false });
|
const accessKeyId = core.getInput('aws-access-key-id', { required: false });
|
||||||
|
const audience = core.getInput('audience', { required: false });
|
||||||
const secretAccessKey = core.getInput('aws-secret-access-key', { required: false });
|
const secretAccessKey = core.getInput('aws-secret-access-key', { required: false });
|
||||||
const region = core.getInput('aws-region', { required: true });
|
const region = core.getInput('aws-region', { required: true });
|
||||||
const sessionToken = core.getInput('aws-session-token', { required: false });
|
const sessionToken = core.getInput('aws-session-token', { required: false });
|
||||||
@@ -310,7 +311,7 @@ async function run() {
|
|||||||
let sourceAccountId;
|
let sourceAccountId;
|
||||||
let webIdentityToken;
|
let webIdentityToken;
|
||||||
if(useGitHubOIDCProvider()) {
|
if(useGitHubOIDCProvider()) {
|
||||||
webIdentityToken = await core.getIDToken('sts.amazonaws.com');
|
webIdentityToken = await core.getIDToken(audience);
|
||||||
roleDurationSeconds = core.getInput('role-duration-seconds', {required: false}) || DEFAULT_ROLE_DURATION_FOR_OIDC_ROLES;
|
roleDurationSeconds = core.getInput('role-duration-seconds', {required: false}) || DEFAULT_ROLE_DURATION_FOR_OIDC_ROLES;
|
||||||
// We don't validate the credentials here because we don't have them yet when using OIDC.
|
// We don't validate the credentials here because we don't have them yet when using OIDC.
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user