Skip to content

Commit 0e182c3

Browse files
committed
CLDSRV-893: return ARN for assumed-role requesters in access logs
The getRequester() function fell through to the canonical ID for assumed-role sessions, producing a space-containing string that broke space-delimited log parsers.
1 parent 029b436 commit 0e182c3

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

lib/utilities/serverAccessLogger.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,11 +323,15 @@ function getOperation(req) {
323323
return `REST.${req.method}.${resourceType}`;
324324
}
325325

326+
const assumedRoleArnRegex = /^arn:aws:sts::[0-9]{12}:assumed-role\/.*$/;
327+
326328
function getRequester(authInfo) {
327329
const requester = null;
328330
if (authInfo) {
329331
if (authInfo.isRequesterPublicUser && authInfo.isRequesterPublicUser()) {
330332
return requester; // Unauthenticated requests
333+
} else if (authInfo.getArn && assumedRoleArnRegex.test(authInfo.getArn())) {
334+
return authInfo.getArn();
331335
} else if (authInfo.isRequesterAnIAMUser && authInfo.isRequesterAnIAMUser()) {
332336
// IAM user: include IAM user name and account
333337
const iamUserName = authInfo.getIAMdisplayName ? authInfo.getIAMdisplayName() : '';

tests/unit/utils/serverAccessLogger.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,18 @@ describe('serverAccessLogger utility functions', () => {
311311
assert.strictEqual(result, 'canonicalID123');
312312
});
313313

314+
it('should return ARN for assumed-role session user', () => {
315+
const arn = 'arn:aws:sts::123456789012:assumed-role/lifecycle-role/backbeat-lifecycle';
316+
const authInfo = {
317+
isRequesterPublicUser: () => false,
318+
isRequesterAnIAMUser: () => false,
319+
getArn: () => arn,
320+
getCanonicalID: () => 'canonicalID789',
321+
};
322+
const result = getRequester(authInfo);
323+
assert.strictEqual(result, arn);
324+
});
325+
314326
it('should return canonical ID for regular user', () => {
315327
const authInfo = {
316328
isRequesterPublicUser: () => false,

0 commit comments

Comments
 (0)