@prism-d1/cli 1.0.42 → 1.0.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,6 +9,7 @@ import * as path from 'path';
9
9
  import { Construct } from 'constructs';
10
10
  import { BedrockGuardrailConstruct, createDefaultPrismGuardrailProps } from './constructs/bedrock-guardrail-construct';
11
11
  import * as kms from 'aws-cdk-lib/aws-kms';
12
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
12
13
  import { PrismVpcConstruct } from './constructs/prism-vpc-construct';
13
14
  import { GuardrailEnforcerConstruct } from './constructs/guardrail-enforcer-construct';
14
15
  import { SecurityAgentConstruct } from './constructs/security-agent-construct';
@@ -128,8 +129,21 @@ export class MetricsPipelineStack extends cdk.Stack {
128
129
 
129
130
  // -------------------------------------------------------
130
131
  // VPC for Lambda isolation (Pillar 6)
131
- // -------------------------------------------------------
132
- const vpcConstruct = new PrismVpcConstruct(this, 'VPC');
132
+ // Opt out with: cdk deploy -c skipVpc=true
133
+ // Use existing VPC: cdk deploy -c vpcId=vpc-0123456789abcdef0
134
+ // -------------------------------------------------------
135
+ const skipVpc = this.node.tryGetContext('skipVpc') === 'true';
136
+ const existingVpcId = this.node.tryGetContext('vpcId') as string | undefined;
137
+ const vpcConstruct = skipVpc
138
+ ? undefined
139
+ : existingVpcId
140
+ ? undefined
141
+ : new PrismVpcConstruct(this, 'VPC');
142
+ const lambdaVpcProps = skipVpc
143
+ ? {}
144
+ : existingVpcId
145
+ ? { vpc: ec2.Vpc.fromLookup(this, 'ExistingVpc', { vpcId: existingVpcId }) }
146
+ : { vpc: vpcConstruct!.vpc, securityGroups: [vpcConstruct!.lambdaSecurityGroup] };
133
147
 
134
148
  // -------------------------------------------------------
135
149
  // Metrics processor Lambda
@@ -138,8 +152,7 @@ export class MetricsPipelineStack extends cdk.Stack {
138
152
  functionName: 'prism-d1-metrics-processor',
139
153
  runtime: lambda.Runtime.NODEJS_22_X,
140
154
  handler: 'metrics-processor.handler',
141
- vpc: vpcConstruct.vpc,
142
- securityGroups: [vpcConstruct.lambdaSecurityGroup],
155
+ ...lambdaVpcProps,
143
156
  code: lambda.Code.fromAsset(path.join(__dirname, 'lambda'), {
144
157
  bundling: {
145
158
  image: lambda.Runtime.NODEJS_22_X.bundlingImage,
@@ -275,8 +288,7 @@ export class MetricsPipelineStack extends cdk.Stack {
275
288
  functionName: 'prism-d1-exfiltration-detector',
276
289
  runtime: lambda.Runtime.NODEJS_22_X,
277
290
  handler: 'exfiltration-detector.handler',
278
- vpc: vpcConstruct.vpc,
279
- securityGroups: [vpcConstruct.lambdaSecurityGroup],
291
+ ...lambdaVpcProps,
280
292
  code: lambda.Code.fromAsset(path.join(__dirname, 'lambda'), {
281
293
  bundling: {
282
294
  image: lambda.Runtime.NODEJS_22_X.bundlingImage,
@@ -338,8 +350,7 @@ export class MetricsPipelineStack extends cdk.Stack {
338
350
  functionName: 'prism-d1-defect-correlator',
339
351
  runtime: lambda.Runtime.NODEJS_22_X,
340
352
  handler: 'defect-correlator.handler',
341
- vpc: vpcConstruct.vpc,
342
- securityGroups: [vpcConstruct.lambdaSecurityGroup],
353
+ ...lambdaVpcProps,
343
354
  code: lambda.Code.fromAsset(path.join(__dirname, 'lambda'), {
344
355
  bundling: {
345
356
  image: lambda.Runtime.NODEJS_22_X.bundlingImage,
@@ -400,8 +411,7 @@ export class MetricsPipelineStack extends cdk.Stack {
400
411
  functionName: 'prism-d1-spec-to-code-calculator',
401
412
  runtime: lambda.Runtime.NODEJS_22_X,
402
413
  handler: 'spec-to-code-calculator.handler',
403
- vpc: vpcConstruct.vpc,
404
- securityGroups: [vpcConstruct.lambdaSecurityGroup],
414
+ ...lambdaVpcProps,
405
415
  code: lambda.Code.fromAsset(path.join(__dirname, 'lambda'), {
406
416
  bundling: {
407
417
  image: lambda.Runtime.NODEJS_22_X.bundlingImage,
@@ -461,8 +471,7 @@ export class MetricsPipelineStack extends cdk.Stack {
461
471
  functionName: 'prism-d1-security-agent-processor',
462
472
  runtime: lambda.Runtime.NODEJS_22_X,
463
473
  handler: 'security-agent-processor.handler',
464
- vpc: vpcConstruct.vpc,
465
- securityGroups: [vpcConstruct.lambdaSecurityGroup],
474
+ ...lambdaVpcProps,
466
475
  code: lambda.Code.fromAsset(path.join(__dirname, 'lambda'), {
467
476
  bundling: {
468
477
  image: lambda.Runtime.NODEJS_22_X.bundlingImage,
@@ -510,8 +519,7 @@ export class MetricsPipelineStack extends cdk.Stack {
510
519
  functionName: 'prism-d1-security-remediation-tracker',
511
520
  runtime: lambda.Runtime.NODEJS_22_X,
512
521
  handler: 'security-remediation-tracker.handler',
513
- vpc: vpcConstruct.vpc,
514
- securityGroups: [vpcConstruct.lambdaSecurityGroup],
522
+ ...lambdaVpcProps,
515
523
  code: lambda.Code.fromAsset(path.join(__dirname, 'lambda'), {
516
524
  bundling: {
517
525
  image: lambda.Runtime.NODEJS_22_X.bundlingImage,
@@ -569,8 +577,7 @@ export class MetricsPipelineStack extends cdk.Stack {
569
577
  functionName: 'prism-d1-security-response-automator',
570
578
  runtime: lambda.Runtime.NODEJS_22_X,
571
579
  handler: 'security-response-automator.handler',
572
- vpc: vpcConstruct.vpc,
573
- securityGroups: [vpcConstruct.lambdaSecurityGroup],
580
+ ...lambdaVpcProps,
574
581
  code: lambda.Code.fromAsset(path.join(__dirname, 'lambda'), {
575
582
  bundling: {
576
583
  image: lambda.Runtime.NODEJS_22_X.bundlingImage,
@@ -0,0 +1,6 @@
1
+ declare const _default: {
2
+ description: string;
3
+ action(): Promise<void>;
4
+ };
5
+ export default _default;
6
+ //# sourceMappingURL=setup-gitlab-oidc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-gitlab-oidc.d.ts","sourceRoot":"","sources":["../../../../src/commands/bootstrapper/setup-gitlab-oidc.ts"],"names":[],"mappings":";;;;AAuBA,wBAyIE"}
@@ -0,0 +1,158 @@
1
+ import { execSync } from 'node:child_process';
2
+ import { createInterface } from 'node:readline';
3
+ function prompt(question, defaultValue) {
4
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
5
+ const suffix = defaultValue ? ` [${defaultValue}]` : '';
6
+ return new Promise((resolve) => {
7
+ rl.question(`${question}${suffix}: `, (answer) => {
8
+ rl.close();
9
+ resolve(answer.trim() || defaultValue || '');
10
+ });
11
+ });
12
+ }
13
+ function run(cmd) {
14
+ try {
15
+ const stdout = execSync(cmd, { encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();
16
+ return { ok: true, stdout, stderr: '' };
17
+ }
18
+ catch (err) {
19
+ return { ok: false, stdout: '', stderr: (err.stderr || err.message || '').trim() };
20
+ }
21
+ }
22
+ export default {
23
+ description: 'Set up GitLab OIDC identity provider and IAM role for GitLab CI/CD',
24
+ async action() {
25
+ console.log('\n🔐 GitLab OIDC Setup for AWS\n');
26
+ console.log('This will create an IAM OIDC identity provider and a role');
27
+ console.log('that GitLab CI/CD can assume to deploy to your AWS account.\n');
28
+ const gitlabUrl = await prompt('GitLab instance URL', 'https://gitlab.aws.dev');
29
+ const projectPath = await prompt('GitLab project path (e.g. group/repo)');
30
+ if (!projectPath) {
31
+ console.error('Error: Project path is required.');
32
+ process.exit(1);
33
+ }
34
+ console.log(`\nConfiguring OIDC for: ${projectPath} on ${gitlabUrl}`);
35
+ // Check AWS credentials
36
+ const sts = run('aws sts get-caller-identity --query Account --output text');
37
+ if (!sts.ok) {
38
+ console.error('Error: AWS credentials not configured. Run "aws configure" first.');
39
+ process.exit(1);
40
+ }
41
+ const accountId = sts.stdout;
42
+ console.log(`AWS Account: ${accountId}\n`);
43
+ // Derive provider hostname from URL
44
+ const providerHost = gitlabUrl.replace(/^https?:\/\//, '');
45
+ const providerArn = `arn:aws:iam::${accountId}:oidc-provider/${providerHost}`;
46
+ // Step 1: Create the OIDC provider
47
+ console.log('Step 1: Creating GitLab OIDC identity provider...');
48
+ const existingProvider = run(`aws iam get-open-id-connect-provider --open-id-connect-provider-arn ${providerArn}`);
49
+ if (existingProvider.ok) {
50
+ console.log(' ✓ OIDC provider already exists.');
51
+ }
52
+ else {
53
+ const createProvider = run(`aws iam create-open-id-connect-provider ` +
54
+ `--url ${gitlabUrl} ` +
55
+ `--client-id-list ${gitlabUrl} ` +
56
+ `--thumbprint-list 0000000000000000000000000000000000000000`);
57
+ if (createProvider.ok) {
58
+ console.log(' ✓ OIDC provider created.');
59
+ }
60
+ else {
61
+ console.error(` ✗ Failed to create OIDC provider: ${createProvider.stderr}`);
62
+ process.exit(1);
63
+ }
64
+ }
65
+ // Step 2: Create the IAM role
66
+ const repoName = projectPath.split('/').pop() || 'prism';
67
+ const roleName = `GitLabCI-${repoName}`;
68
+ console.log(`\nStep 2: Creating IAM role "${roleName}"...`);
69
+ const trustPolicy = JSON.stringify({
70
+ Version: '2012-10-17',
71
+ Statement: [
72
+ {
73
+ Effect: 'Allow',
74
+ Principal: { Federated: providerArn },
75
+ Action: 'sts:AssumeRoleWithWebIdentity',
76
+ Condition: {
77
+ StringEquals: {
78
+ [`${providerHost}:aud`]: gitlabUrl,
79
+ },
80
+ StringLike: {
81
+ [`${providerHost}:sub`]: `project_path:${projectPath}:*`,
82
+ },
83
+ },
84
+ },
85
+ ],
86
+ });
87
+ const existingRole = run(`aws iam get-role --role-name ${roleName}`);
88
+ if (existingRole.ok) {
89
+ console.log(` ✓ Role "${roleName}" already exists. Updating trust policy...`);
90
+ const update = run(`aws iam update-assume-role-policy --role-name ${roleName} --policy-document '${trustPolicy}'`);
91
+ if (update.ok)
92
+ console.log(' ✓ Trust policy updated.');
93
+ else {
94
+ console.error(` ✗ Failed: ${update.stderr}`);
95
+ process.exit(1);
96
+ }
97
+ }
98
+ else {
99
+ const createRole = run(`aws iam create-role --role-name ${roleName} ` +
100
+ `--assume-role-policy-document '${trustPolicy}' ` +
101
+ `--description "GitLab CI OIDC role for ${projectPath}"`);
102
+ if (createRole.ok)
103
+ console.log(` ✓ Role "${roleName}" created.`);
104
+ else {
105
+ console.error(` ✗ Failed: ${createRole.stderr}`);
106
+ process.exit(1);
107
+ }
108
+ }
109
+ // Step 3: Attach permissions policy
110
+ console.log('\nStep 3: Attaching permissions policy...');
111
+ const policyDocument = JSON.stringify({
112
+ Version: '2012-10-17',
113
+ Statement: [
114
+ {
115
+ Effect: 'Allow',
116
+ Action: 'events:PutEvents',
117
+ Resource: `arn:aws:events:us-west-2:${accountId}:event-bus/prism-d1-metrics`,
118
+ },
119
+ {
120
+ Effect: 'Allow',
121
+ Action: 'bedrock:InvokeModel',
122
+ Resource: '*',
123
+ },
124
+ ],
125
+ });
126
+ const policyName = 'PrismD1WorkshopPolicy';
127
+ const putPolicy = run(`aws iam put-role-policy --role-name ${roleName} --policy-name ${policyName} --policy-document '${policyDocument}'`);
128
+ if (putPolicy.ok)
129
+ console.log(` ✓ Inline policy "${policyName}" attached.`);
130
+ else {
131
+ console.error(` ✗ Failed: ${putPolicy.stderr}`);
132
+ process.exit(1);
133
+ }
134
+ // Summary
135
+ const roleArn = `arn:aws:iam::${accountId}:role/${roleName}`;
136
+ console.log('\n════════════════════════════════════════════════');
137
+ console.log(' ✅ GitLab OIDC setup complete!');
138
+ console.log('════════════════════════════════════════════════');
139
+ console.log(`\n Role ARN: ${roleArn}`);
140
+ console.log(` Project: ${projectPath}`);
141
+ console.log(` Provider: ${gitlabUrl}`);
142
+ console.log('\n Next step: Add a CI/CD variable in GitLab');
143
+ console.log('');
144
+ console.log(' In your GitLab project, go to:');
145
+ console.log(' Settings > CI/CD > Variables > Add variable');
146
+ console.log('');
147
+ console.log(` Key: PRISM_METRICS_ROLE_ARN`);
148
+ console.log(` Value: ${roleArn}`);
149
+ console.log(' Type: Variable');
150
+ console.log(' Protect: Yes (only available on protected branches)');
151
+ console.log('');
152
+ console.log(' The PRISM GitLab workflows use id_tokens (GitLab 15.7+) for OIDC.');
153
+ console.log(' The token is configured automatically — no additional setup needed.');
154
+ console.log(` Audience is set to: ${gitlabUrl}`);
155
+ console.log('');
156
+ },
157
+ };
158
+ //# sourceMappingURL=setup-gitlab-oidc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-gitlab-oidc.js","sourceRoot":"","sources":["../../../../src/commands/bootstrapper/setup-gitlab-oidc.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prism-d1/cli",
3
- "version": "1.0.42",
3
+ "version": "1.0.43",
4
4
  "description": "PRISM D1 Velocity CLI — AI development lifecycle assessment tool",
5
5
  "author": "andklee",
6
6
  "engines": {