mirror of
https://github.com/aws-actions/configure-aws-credentials.git
synced 2026-09-04 06:15:07 +09:00
fix: set role credentials as secrets to mask them in logs (#19)
* Set role credentials as secrets to mask them in logs * Always set aws credentuals as secrets * Fix typo in comment
This commit is contained in:
committed by
Clare Liguori
parent
7b221d2e08
commit
e2fd53ab66
@@ -54,21 +54,25 @@ async function assumeRole(params) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function exportCredentials(params){
|
function exportCredentials(params){
|
||||||
// Configure the AWS CLI and AWS SDKs using environment variables
|
// Configure the AWS CLI and AWS SDKs using environment variables and set them as secrets.
|
||||||
|
// Setting the credentials as secrets masks them in Github Actions logs
|
||||||
const {accessKeyId, secretAccessKey, sessionToken} = params;
|
const {accessKeyId, secretAccessKey, sessionToken} = params;
|
||||||
|
|
||||||
// AWS_ACCESS_KEY_ID:
|
// AWS_ACCESS_KEY_ID:
|
||||||
// Specifies an AWS access key associated with an IAM user or role
|
// Specifies an AWS access key associated with an IAM user or role
|
||||||
core.exportVariable('AWS_ACCESS_KEY_ID', accessKeyId);
|
core.exportVariable('AWS_ACCESS_KEY_ID', accessKeyId);
|
||||||
|
core.setSecret('AWS_ACCESS_KEY_ID', accessKeyId);
|
||||||
|
|
||||||
// AWS_SECRET_ACCESS_KEY:
|
// AWS_SECRET_ACCESS_KEY:
|
||||||
// Specifies the secret key associated with the access key. This is essentially the "password" for the access key.
|
// Specifies the secret key associated with the access key. This is essentially the "password" for the access key.
|
||||||
core.exportVariable('AWS_SECRET_ACCESS_KEY', secretAccessKey);
|
core.exportVariable('AWS_SECRET_ACCESS_KEY', secretAccessKey);
|
||||||
|
core.setSecret('AWS_SECRET_ACCESS_KEY', secretAccessKey);
|
||||||
|
|
||||||
// AWS_SESSION_TOKEN:
|
// AWS_SESSION_TOKEN:
|
||||||
// Specifies the session token value that is required if you are using temporary security credentials.
|
// Specifies the session token value that is required if you are using temporary security credentials.
|
||||||
if (sessionToken) {
|
if (sessionToken) {
|
||||||
core.exportVariable('AWS_SESSION_TOKEN', sessionToken);
|
core.exportVariable('AWS_SESSION_TOKEN', sessionToken);
|
||||||
|
core.setSecret('AWS_SESSION_TOKEN', sessionToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+14
-1
@@ -97,9 +97,13 @@ describe('Configure AWS Credentials', () => {
|
|||||||
await run();
|
await run();
|
||||||
expect(mockStsAssumeRole).toHaveBeenCalledTimes(0);
|
expect(mockStsAssumeRole).toHaveBeenCalledTimes(0);
|
||||||
expect(core.exportVariable).toHaveBeenCalledTimes(5);
|
expect(core.exportVariable).toHaveBeenCalledTimes(5);
|
||||||
|
expect(core.setSecret).toHaveBeenCalledTimes(4);
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_ACCESS_KEY_ID);
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_ACCESS_KEY_ID);
|
||||||
|
expect(core.setSecret).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_ACCESS_KEY_ID);
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_SECRET_ACCESS_KEY);
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_SECRET_ACCESS_KEY);
|
||||||
|
expect(core.setSecret).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_SECRET_ACCESS_KEY);
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SESSION_TOKEN', FAKE_SESSION_TOKEN);
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SESSION_TOKEN', FAKE_SESSION_TOKEN);
|
||||||
|
expect(core.setSecret).toHaveBeenCalledWith('AWS_SESSION_TOKEN', FAKE_SESSION_TOKEN);
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_DEFAULT_REGION', FAKE_REGION);
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_DEFAULT_REGION', FAKE_REGION);
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_REGION', FAKE_REGION);
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_REGION', FAKE_REGION);
|
||||||
expect(core.setOutput).toHaveBeenCalledWith('aws-account-id', FAKE_ACCOUNT_ID);
|
expect(core.setOutput).toHaveBeenCalledWith('aws-account-id', FAKE_ACCOUNT_ID);
|
||||||
@@ -115,8 +119,11 @@ describe('Configure AWS Credentials', () => {
|
|||||||
await run();
|
await run();
|
||||||
expect(mockStsAssumeRole).toHaveBeenCalledTimes(0);
|
expect(mockStsAssumeRole).toHaveBeenCalledTimes(0);
|
||||||
expect(core.exportVariable).toHaveBeenCalledTimes(4);
|
expect(core.exportVariable).toHaveBeenCalledTimes(4);
|
||||||
|
expect(core.setSecret).toHaveBeenCalledTimes(3);
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_ACCESS_KEY_ID);
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_ACCESS_KEY_ID);
|
||||||
|
expect(core.setSecret).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_ACCESS_KEY_ID);
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_SECRET_ACCESS_KEY);
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_SECRET_ACCESS_KEY);
|
||||||
|
expect(core.setSecret).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_SECRET_ACCESS_KEY);
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_DEFAULT_REGION', 'eu-west-1');
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_DEFAULT_REGION', 'eu-west-1');
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_REGION', 'eu-west-1');
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_REGION', 'eu-west-1');
|
||||||
expect(core.setOutput).toHaveBeenCalledWith('aws-account-id', FAKE_ACCOUNT_ID);
|
expect(core.setOutput).toHaveBeenCalledWith('aws-account-id', FAKE_ACCOUNT_ID);
|
||||||
@@ -133,11 +140,13 @@ describe('Configure AWS Credentials', () => {
|
|||||||
expect(mockStsAssumeRole).toHaveBeenCalledTimes(0);
|
expect(mockStsAssumeRole).toHaveBeenCalledTimes(0);
|
||||||
expect(core.exportVariable).toHaveBeenCalledTimes(4);
|
expect(core.exportVariable).toHaveBeenCalledTimes(4);
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_ACCESS_KEY_ID);
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_ACCESS_KEY_ID);
|
||||||
|
expect(core.setSecret).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_ACCESS_KEY_ID);
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_SECRET_ACCESS_KEY);
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_SECRET_ACCESS_KEY);
|
||||||
|
expect(core.setSecret).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_SECRET_ACCESS_KEY);
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_DEFAULT_REGION', 'us-east-1');
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_DEFAULT_REGION', 'us-east-1');
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_REGION', 'us-east-1');
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_REGION', 'us-east-1');
|
||||||
expect(core.setOutput).toHaveBeenCalledWith('aws-account-id', FAKE_ACCOUNT_ID);
|
expect(core.setOutput).toHaveBeenCalledWith('aws-account-id', FAKE_ACCOUNT_ID);
|
||||||
expect(core.setSecret).toHaveBeenCalledTimes(0);
|
expect(core.setSecret).toHaveBeenCalledTimes(2);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('error is caught by core.setFailed and caught', async () => {
|
test('error is caught by core.setFailed and caught', async () => {
|
||||||
@@ -171,9 +180,13 @@ describe('Configure AWS Credentials', () => {
|
|||||||
await run();
|
await run();
|
||||||
expect(mockStsAssumeRole).toHaveBeenCalledTimes(1);
|
expect(mockStsAssumeRole).toHaveBeenCalledTimes(1);
|
||||||
expect(core.exportVariable).toHaveBeenCalledTimes(5);
|
expect(core.exportVariable).toHaveBeenCalledTimes(5);
|
||||||
|
expect(core.setSecret).toHaveBeenCalledTimes(4);
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_STS_ACCESS_KEY_ID);
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_STS_ACCESS_KEY_ID);
|
||||||
|
expect(core.setSecret).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_STS_ACCESS_KEY_ID);
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_STS_SECRET_ACCESS_KEY);
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_STS_SECRET_ACCESS_KEY);
|
||||||
|
expect(core.setSecret).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_STS_SECRET_ACCESS_KEY);
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SESSION_TOKEN', FAKE_STS_SESSION_TOKEN);
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SESSION_TOKEN', FAKE_STS_SESSION_TOKEN);
|
||||||
|
expect(core.setSecret).toHaveBeenCalledWith('AWS_SESSION_TOKEN', FAKE_STS_SESSION_TOKEN);
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_DEFAULT_REGION', FAKE_REGION);
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_DEFAULT_REGION', FAKE_REGION);
|
||||||
expect(core.exportVariable).toHaveBeenCalledWith('AWS_REGION', FAKE_REGION);
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_REGION', FAKE_REGION);
|
||||||
expect(core.setOutput).toHaveBeenCalledWith('aws-account-id', FAKE_ACCOUNT_ID);
|
expect(core.setOutput).toHaveBeenCalledWith('aws-account-id', FAKE_ACCOUNT_ID);
|
||||||
|
|||||||
Reference in New Issue
Block a user