Skip to content

Commit e2fd53a

Browse files
LaurenceGAclareliguori
authored andcommitted
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
1 parent 7b221d2 commit e2fd53a

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

index.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -54,21 +54,25 @@ async function assumeRole(params) {
5454
}
5555

5656
function exportCredentials(params){
57-
// Configure the AWS CLI and AWS SDKs using environment variables
57+
// Configure the AWS CLI and AWS SDKs using environment variables and set them as secrets.
58+
// Setting the credentials as secrets masks them in Github Actions logs
5859
const {accessKeyId, secretAccessKey, sessionToken} = params;
5960

6061
// AWS_ACCESS_KEY_ID:
6162
// Specifies an AWS access key associated with an IAM user or role
6263
core.exportVariable('AWS_ACCESS_KEY_ID', accessKeyId);
64+
core.setSecret('AWS_ACCESS_KEY_ID', accessKeyId);
6365

6466
// AWS_SECRET_ACCESS_KEY:
6567
// Specifies the secret key associated with the access key. This is essentially the "password" for the access key.
6668
core.exportVariable('AWS_SECRET_ACCESS_KEY', secretAccessKey);
69+
core.setSecret('AWS_SECRET_ACCESS_KEY', secretAccessKey);
6770

6871
// AWS_SESSION_TOKEN:
6972
// Specifies the session token value that is required if you are using temporary security credentials.
7073
if (sessionToken) {
7174
core.exportVariable('AWS_SESSION_TOKEN', sessionToken);
75+
core.setSecret('AWS_SESSION_TOKEN', sessionToken);
7276
}
7377
}
7478

index.test.js

+14-1
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,13 @@ describe('Configure AWS Credentials', () => {
9797
await run();
9898
expect(mockStsAssumeRole).toHaveBeenCalledTimes(0);
9999
expect(core.exportVariable).toHaveBeenCalledTimes(5);
100+
expect(core.setSecret).toHaveBeenCalledTimes(4);
100101
expect(core.exportVariable).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_ACCESS_KEY_ID);
102+
expect(core.setSecret).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_ACCESS_KEY_ID);
101103
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_SECRET_ACCESS_KEY);
104+
expect(core.setSecret).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_SECRET_ACCESS_KEY);
102105
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SESSION_TOKEN', FAKE_SESSION_TOKEN);
106+
expect(core.setSecret).toHaveBeenCalledWith('AWS_SESSION_TOKEN', FAKE_SESSION_TOKEN);
103107
expect(core.exportVariable).toHaveBeenCalledWith('AWS_DEFAULT_REGION', FAKE_REGION);
104108
expect(core.exportVariable).toHaveBeenCalledWith('AWS_REGION', FAKE_REGION);
105109
expect(core.setOutput).toHaveBeenCalledWith('aws-account-id', FAKE_ACCOUNT_ID);
@@ -115,8 +119,11 @@ describe('Configure AWS Credentials', () => {
115119
await run();
116120
expect(mockStsAssumeRole).toHaveBeenCalledTimes(0);
117121
expect(core.exportVariable).toHaveBeenCalledTimes(4);
122+
expect(core.setSecret).toHaveBeenCalledTimes(3);
118123
expect(core.exportVariable).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_ACCESS_KEY_ID);
124+
expect(core.setSecret).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_ACCESS_KEY_ID);
119125
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_SECRET_ACCESS_KEY);
126+
expect(core.setSecret).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_SECRET_ACCESS_KEY);
120127
expect(core.exportVariable).toHaveBeenCalledWith('AWS_DEFAULT_REGION', 'eu-west-1');
121128
expect(core.exportVariable).toHaveBeenCalledWith('AWS_REGION', 'eu-west-1');
122129
expect(core.setOutput).toHaveBeenCalledWith('aws-account-id', FAKE_ACCOUNT_ID);
@@ -133,11 +140,13 @@ describe('Configure AWS Credentials', () => {
133140
expect(mockStsAssumeRole).toHaveBeenCalledTimes(0);
134141
expect(core.exportVariable).toHaveBeenCalledTimes(4);
135142
expect(core.exportVariable).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_ACCESS_KEY_ID);
143+
expect(core.setSecret).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_ACCESS_KEY_ID);
136144
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_SECRET_ACCESS_KEY);
145+
expect(core.setSecret).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_SECRET_ACCESS_KEY);
137146
expect(core.exportVariable).toHaveBeenCalledWith('AWS_DEFAULT_REGION', 'us-east-1');
138147
expect(core.exportVariable).toHaveBeenCalledWith('AWS_REGION', 'us-east-1');
139148
expect(core.setOutput).toHaveBeenCalledWith('aws-account-id', FAKE_ACCOUNT_ID);
140-
expect(core.setSecret).toHaveBeenCalledTimes(0);
149+
expect(core.setSecret).toHaveBeenCalledTimes(2);
141150
});
142151

143152
test('error is caught by core.setFailed and caught', async () => {
@@ -171,9 +180,13 @@ describe('Configure AWS Credentials', () => {
171180
await run();
172181
expect(mockStsAssumeRole).toHaveBeenCalledTimes(1);
173182
expect(core.exportVariable).toHaveBeenCalledTimes(5);
183+
expect(core.setSecret).toHaveBeenCalledTimes(4);
174184
expect(core.exportVariable).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_STS_ACCESS_KEY_ID);
185+
expect(core.setSecret).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_STS_ACCESS_KEY_ID);
175186
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_STS_SECRET_ACCESS_KEY);
187+
expect(core.setSecret).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_STS_SECRET_ACCESS_KEY);
176188
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SESSION_TOKEN', FAKE_STS_SESSION_TOKEN);
189+
expect(core.setSecret).toHaveBeenCalledWith('AWS_SESSION_TOKEN', FAKE_STS_SESSION_TOKEN);
177190
expect(core.exportVariable).toHaveBeenCalledWith('AWS_DEFAULT_REGION', FAKE_REGION);
178191
expect(core.exportVariable).toHaveBeenCalledWith('AWS_REGION', FAKE_REGION);
179192
expect(core.setOutput).toHaveBeenCalledWith('aws-account-id', FAKE_ACCOUNT_ID);

0 commit comments

Comments
 (0)