Skip to content

Commit c59fbb5

Browse files
committed
Merge branch 'w/9.3/improvement/CLDSRV-893-return-arn-for-assumed-role-in-access-logs' into tmp/octopus/w/9.4/improvement/CLDSRV-893-return-arn-for-assumed-role-in-access-logs
2 parents 72a7568 + f97c3e8 commit c59fbb5

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

lib/utilities/serverAccessLogger.js

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

327+
const assumedRoleArnRegex = /^arn:aws:sts::[0-9]{12}:assumed-role\/\S+$/;
328+
327329
function getRequester(authInfo) {
328330
const requester = null;
329331
if (authInfo) {
332+
const arn = authInfo.getArn ? authInfo.getArn() : null;
330333
if (authInfo.isRequesterPublicUser && authInfo.isRequesterPublicUser()) {
331334
return requester; // Unauthenticated requests
335+
} else if (arn && assumedRoleArnRegex.test(arn)) {
336+
return arn;
332337
} else if (authInfo.isRequesterAnIAMUser && authInfo.isRequesterAnIAMUser()) {
333338
// IAM user: include IAM user name and account
334339
const iamUserName = authInfo.getIAMdisplayName ? authInfo.getIAMdisplayName() : '';

tests/unit/utils/serverAccessLogger.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,31 @@ 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+
326+
it('should fall through to IAM user path for non-assumed-role ARN', () => {
327+
const authInfo = {
328+
isRequesterPublicUser: () => false,
329+
isRequesterAnIAMUser: () => true,
330+
getArn: () => 'arn:aws:iam::123456789012:user/myuser',
331+
getIAMdisplayName: () => 'myuser',
332+
getAccountDisplayName: () => 'myaccount',
333+
getCanonicalID: () => 'canonicalID789',
334+
};
335+
const result = getRequester(authInfo);
336+
assert.strictEqual(result, 'myuser:myaccount');
337+
});
338+
314339
it('should return canonical ID for regular user', () => {
315340
const authInfo = {
316341
isRequesterPublicUser: () => false,

0 commit comments

Comments
 (0)