diff --git a/lib/workload/stateless/postgres_manager/construct/postgresManager.ts b/lib/workload/stateless/postgres_manager/construct/postgresManager.ts index e41f07c0e..8dd9a33e9 100644 --- a/lib/workload/stateless/postgres_manager/construct/postgresManager.ts +++ b/lib/workload/stateless/postgres_manager/construct/postgresManager.ts @@ -98,7 +98,9 @@ export class PostgresManager extends Construct { new iam.PolicyStatement({ actions: ['secretsmanager:CreateSecret', 'secretsmanager:TagResource'], effect: iam.Effect.ALLOW, - resources: ['arn:aws:secretsmanager:ap-southeast-2:*:secret:*'], + resources: [ + `arn:aws:secretsmanager:ap-southeast-2:${process.env.CDK_DEFAULT_ACCOUNT}:secret:*`, + ], }), new iam.PolicyStatement({ actions: ['secretsmanager:GetRandomPassword'], diff --git a/test/stateless/stateless-deployment.test.ts b/test/stateless/stateless-deployment.test.ts index 5f222c846..a213e4648 100644 --- a/test/stateless/stateless-deployment.test.ts +++ b/test/stateless/stateless-deployment.test.ts @@ -1,7 +1,7 @@ import { App, Aspects } from 'aws-cdk-lib'; import { Annotations, Match } from 'aws-cdk-lib/assertions'; import { SynthesisMessage } from 'aws-cdk-lib/cx-api'; -import { AwsSolutionsChecks } from 'cdk-nag'; +import { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag'; import { OrcaBusStatelessStack } from '../../lib/workload/orcabus-stateless-stack'; import { getEnvironmentConfig } from '../../config/constants'; @@ -26,8 +26,22 @@ describe('cdk-nag-stateless-stack', () => { }); Aspects.of(stack).add(new AwsSolutionsChecks()); - // Suppressions (if any) - // ... + NagSuppressions.addStackSuppressions(stack, [ + { id: 'AwsSolutions-IAM4', reason: 'allow to use AWS managed policy' }, + ]); + + // suppress by resource + NagSuppressions.addResourceSuppressionsByPath( + stack, + `/TestStack/PostgresManager/CreateUserPassPostgresLambda/ServiceRole/DefaultPolicy/Resource`, + [ + { + id: 'AwsSolutions-IAM5', + reason: + "'*' is required for secretsmanager:GetRandomPassword and new SM ARN will contain random character", + }, + ] + ); }); test('cdk-nag AwsSolutions Pack errors', () => { diff --git a/tsconfig.json b/tsconfig.json index 5f993b327..1dc61d483 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -30,6 +30,7 @@ "exclude": [ "node_modules", "cdk.out", - "lib/workload/stateless/metadata_manager" + "lib/workload/stateless/metadata_manager", + "lib/workload/stateless/postgres_manager" ] }