@cloud-copilot/iam-simulate 0.1.3 → 0.1.5

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.
Files changed (23) hide show
  1. package/dist/cjs/global_conditions/globalConditionKeys.d.ts +9 -0
  2. package/dist/cjs/global_conditions/globalConditionKeys.d.ts.map +1 -0
  3. package/dist/cjs/global_conditions/globalConditionKeys.js +268 -0
  4. package/dist/cjs/global_conditions/globalConditionKeys.js.map +1 -0
  5. package/dist/cjs/simulation_engine/simulationEngine.d.ts +1 -1
  6. package/dist/cjs/simulation_engine/simulationEngine.d.ts.map +1 -1
  7. package/dist/cjs/simulation_engine/simulationEngine.js +10 -0
  8. package/dist/cjs/simulation_engine/simulationEngine.js.map +1 -1
  9. package/dist/cjs/simulation_engine/unsafeSimulationEngine.d.ts +1 -1
  10. package/dist/cjs/simulation_engine/unsafeSimulationEngine.d.ts.map +1 -1
  11. package/dist/cjs/simulation_engine/unsafeSimulationEngine.js.map +1 -1
  12. package/dist/esm/global_conditions/globalConditionKeys.d.ts +9 -0
  13. package/dist/esm/global_conditions/globalConditionKeys.d.ts.map +1 -0
  14. package/dist/esm/global_conditions/globalConditionKeys.js +264 -0
  15. package/dist/esm/global_conditions/globalConditionKeys.js.map +1 -0
  16. package/dist/esm/simulation_engine/simulationEngine.d.ts +1 -1
  17. package/dist/esm/simulation_engine/simulationEngine.d.ts.map +1 -1
  18. package/dist/esm/simulation_engine/simulationEngine.js +10 -0
  19. package/dist/esm/simulation_engine/simulationEngine.js.map +1 -1
  20. package/dist/esm/simulation_engine/unsafeSimulationEngine.d.ts +1 -1
  21. package/dist/esm/simulation_engine/unsafeSimulationEngine.d.ts.map +1 -1
  22. package/dist/esm/simulation_engine/unsafeSimulationEngine.js.map +1 -1
  23. package/package.json +2 -2
@@ -0,0 +1,9 @@
1
+ interface GlobalConditionKey {
2
+ key: string;
3
+ category: string;
4
+ dataType: string;
5
+ }
6
+ export declare function getGlobalConditionKey(key: string): GlobalConditionKey | undefined;
7
+ export declare function getGlobalConditionKeysByCategory(category: string): GlobalConditionKey[];
8
+ export {};
9
+ //# sourceMappingURL=globalConditionKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalConditionKeys.d.ts","sourceRoot":"","sources":["../../../src/global_conditions/globalConditionKeys.ts"],"names":[],"mappings":"AAAA,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AA0QD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAEjF;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAEvF"}
@@ -0,0 +1,268 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getGlobalConditionKey = getGlobalConditionKey;
4
+ exports.getGlobalConditionKeysByCategory = getGlobalConditionKeysByCategory;
5
+ const globalConditionKeys = [
6
+ {
7
+ key: "aws:PrincipalArn",
8
+ category: "principal",
9
+ dataType: ""
10
+ },
11
+ {
12
+ key: "aws:PrincipalAccount",
13
+ category: "principal",
14
+ dataType: ""
15
+ },
16
+ {
17
+ key: "aws:PrincipalOrgPaths",
18
+ category: "principal",
19
+ dataType: ""
20
+ },
21
+ {
22
+ key: "aws:PrincipalOrgID",
23
+ category: "principal",
24
+ dataType: ""
25
+ },
26
+ {
27
+ key: "aws:PrincipalTag/tag-key",
28
+ category: "principal",
29
+ dataType: ""
30
+ },
31
+ {
32
+ key: "aws:PrincipalIsAWSService",
33
+ category: "principal",
34
+ dataType: ""
35
+ },
36
+ {
37
+ key: "aws:PrincipalServiceName",
38
+ category: "principal",
39
+ dataType: ""
40
+ },
41
+ {
42
+ key: "aws:PrincipalServiceNamesList",
43
+ category: "principal",
44
+ dataType: ""
45
+ },
46
+ {
47
+ key: "aws:PrincipalType",
48
+ category: "principal",
49
+ dataType: ""
50
+ },
51
+ {
52
+ key: "aws:userid",
53
+ category: "principal",
54
+ dataType: ""
55
+ },
56
+ {
57
+ key: "aws:username",
58
+ category: "principal",
59
+ dataType: ""
60
+ },
61
+ {
62
+ key: "aws:FederatedProvider",
63
+ category: "session",
64
+ dataType: "",
65
+ },
66
+ {
67
+ key: "aws:TokenIssueTime",
68
+ category: "session",
69
+ dataType: "",
70
+ },
71
+ {
72
+ key: "aws:MultiFactorAuthAge",
73
+ category: "session",
74
+ dataType: "",
75
+ },
76
+ {
77
+ key: "aws:MultiFactorAuthPresent",
78
+ category: "session",
79
+ dataType: "",
80
+ },
81
+ {
82
+ key: "aws:Ec2InstanceSourceVpc",
83
+ category: "session",
84
+ dataType: "",
85
+ },
86
+ {
87
+ key: "aws:Ec2InstanceSourcePrivateIPv4",
88
+ category: "session",
89
+ dataType: "",
90
+ },
91
+ {
92
+ key: "aws:SourceIdentity",
93
+ category: "session",
94
+ dataType: "",
95
+ },
96
+ {
97
+ key: "ec2:RoleDelivery",
98
+ category: "session",
99
+ dataType: "",
100
+ },
101
+ {
102
+ key: "ec2:SourceInstanceArn",
103
+ category: "session",
104
+ dataType: "",
105
+ },
106
+ {
107
+ key: "glue:RoleAssumedBy",
108
+ category: "session",
109
+ dataType: "",
110
+ },
111
+ {
112
+ key: "glue:CredentialIssuingService",
113
+ category: "session",
114
+ dataType: "",
115
+ },
116
+ {
117
+ key: "lambda:SourceFunctionArn",
118
+ category: "session",
119
+ dataType: "",
120
+ },
121
+ {
122
+ key: "ssm:SourceInstanceArn",
123
+ category: "session",
124
+ dataType: "",
125
+ },
126
+ {
127
+ key: "identitystore:UserId",
128
+ category: "session",
129
+ dataType: "",
130
+ },
131
+ {
132
+ key: "aws:SourceIp",
133
+ category: "network",
134
+ dataType: "",
135
+ },
136
+ {
137
+ key: "aws:SourceVpc",
138
+ category: "network",
139
+ dataType: "",
140
+ },
141
+ {
142
+ key: "aws:SourceVpce",
143
+ category: "network",
144
+ dataType: "",
145
+ },
146
+ {
147
+ key: "aws:VpcSourceIp ",
148
+ category: "network",
149
+ dataType: "",
150
+ },
151
+ {
152
+ key: "aws:ResourceAccount",
153
+ category: "resource",
154
+ dataType: "",
155
+ },
156
+ {
157
+ key: "aws:ResourceOrgID",
158
+ category: "resource",
159
+ dataType: "",
160
+ },
161
+ {
162
+ key: "aws:ResourceOrgPaths",
163
+ category: "resource",
164
+ dataType: "",
165
+ },
166
+ {
167
+ key: "aws:ResourceTag/tag-key",
168
+ category: "resource",
169
+ dataType: "",
170
+ },
171
+ {
172
+ key: "aws:CalledVia",
173
+ category: "request",
174
+ dataType: "",
175
+ },
176
+ {
177
+ key: "aws:CalledViaFirst",
178
+ category: "request",
179
+ dataType: "",
180
+ },
181
+ {
182
+ key: "aws:CalledViaLast",
183
+ category: "request",
184
+ dataType: "",
185
+ },
186
+ {
187
+ key: "aws:ViaAWSService",
188
+ category: "request",
189
+ dataType: "",
190
+ },
191
+ {
192
+ key: "aws:CurrentTime",
193
+ category: "request",
194
+ dataType: "",
195
+ },
196
+ {
197
+ key: "aws:EpochTime",
198
+ category: "request",
199
+ dataType: "",
200
+ },
201
+ {
202
+ key: "aws:referer",
203
+ category: "request",
204
+ dataType: "",
205
+ },
206
+ {
207
+ key: "aws:RequestedRegion",
208
+ category: "request",
209
+ dataType: "",
210
+ },
211
+ {
212
+ key: "aws:RequestTag/tag-key",
213
+ category: "request",
214
+ dataType: "",
215
+ },
216
+ {
217
+ key: "aws:TagKeys",
218
+ category: "request",
219
+ dataType: "",
220
+ },
221
+ {
222
+ key: "aws:SecureTransport",
223
+ category: "request",
224
+ dataType: "",
225
+ },
226
+ {
227
+ key: "aws:SourceArn",
228
+ category: "request",
229
+ dataType: "",
230
+ },
231
+ {
232
+ key: "aws:SourceAccount",
233
+ category: "request",
234
+ dataType: "",
235
+ },
236
+ {
237
+ key: "aws:SourceOrgPaths",
238
+ category: "request",
239
+ dataType: "",
240
+ },
241
+ {
242
+ key: "aws:SourceOrgID",
243
+ category: "request",
244
+ dataType: "",
245
+ },
246
+ {
247
+ key: "aws:UserAgent ",
248
+ category: "request",
249
+ dataType: "",
250
+ }
251
+ ];
252
+ const keysByName = globalConditionKeys.reduce((acc, key) => {
253
+ acc[key.key.toLowerCase()] = key;
254
+ return acc;
255
+ }, {});
256
+ const keysByCategory = globalConditionKeys.reduce((acc, key) => {
257
+ const lowerCategory = key.category.toLowerCase();
258
+ acc[lowerCategory] = acc[lowerCategory] || [];
259
+ acc[lowerCategory].push(key);
260
+ return acc;
261
+ }, {});
262
+ function getGlobalConditionKey(key) {
263
+ return keysByName[key.toLowerCase()];
264
+ }
265
+ function getGlobalConditionKeysByCategory(category) {
266
+ return keysByCategory[category.toLowerCase()] || [];
267
+ }
268
+ //# sourceMappingURL=globalConditionKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalConditionKeys.js","sourceRoot":"","sources":["../../../src/global_conditions/globalConditionKeys.ts"],"names":[],"mappings":";;AA8QA,sDAEC;AAED,4EAEC;AA9QD,MAAM,mBAAmB,GAAyB;IAChD;QACE,GAAG,EAAE,kBAAkB;QACvB,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,sBAAsB;QAC3B,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,uBAAuB;QAC5B,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,oBAAoB;QACzB,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,0BAA0B;QAC/B,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,2BAA2B;QAChC,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,0BAA0B;QAC/B,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,+BAA+B;QACpC,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,YAAY;QACjB,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,cAAc;QACnB,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,EAAE;KACb;IAED;QACE,GAAG,EAAE,uBAAuB;QAC5B,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,oBAAoB;QACzB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,wBAAwB;QAC7B,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,4BAA4B;QACjC,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,0BAA0B;QAC/B,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,kCAAkC;QACvC,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,oBAAoB;QACzB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,uBAAuB;QAC5B,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,oBAAoB;QACzB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,+BAA+B;QACpC,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,0BAA0B;QAC/B,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,uBAAuB;QAC5B,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,sBAAsB;QAC3B,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IAED;QACE,GAAG,EAAE,cAAc;QACnB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,eAAe;QACpB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,gBAAgB;QACrB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IAED;QACE,GAAG,EAAE,qBAAqB;QAC1B,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,sBAAsB;QAC3B,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,yBAAyB;QAC9B,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,EAAE;KACb;IAED;QACE,GAAG,EAAE,eAAe;QACpB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,oBAAoB;QACzB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,eAAe;QACpB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,aAAa;QAClB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,qBAAqB;QAC1B,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,wBAAwB;QAC7B,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,aAAa;QAClB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,qBAAqB;QAC1B,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,eAAe;QACpB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,oBAAoB;QACzB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,EAAE;KACb;CACF,CAAA;AAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACzD,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAC;IACjC,OAAO,GAAG,CAAC;AACb,CAAC,EAAE,EAAwC,CAAC,CAAC;AAE7C,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC7D,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACjD,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC9C,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,GAAG,CAAC;AACb,CAAC,EAAE,EAA0C,CAAC,CAAC;AAE/C,SAAgB,qBAAqB,CAAC,GAAW;IAC/C,OAAO,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,gCAAgC,CAAC,QAAgB;IAC/D,OAAO,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;AACtD,CAAC"}
@@ -7,5 +7,5 @@ export interface SimulationErrors {
7
7
  }
8
8
  export interface SimulationResult {
9
9
  }
10
- export declare function runSimulation(simulation: Simulation, simulationOptions: SimulationOptions): Promise<SimulationResult>;
10
+ export declare function runSimulation(simulation: Simulation, simulationOptions: Partial<SimulationOptions>): Promise<SimulationResult>;
11
11
  //# sourceMappingURL=simulationEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"simulationEngine.d.ts","sourceRoot":"","sources":["../../../src/simulation_engine/simulationEngine.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IACzD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;CAEhC;AAED,wBAAsB,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmC3H"}
1
+ {"version":3,"file":"simulationEngine.d.ts","sourceRoot":"","sources":["../../../src/simulation_engine/simulationEngine.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAElF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IACzD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;CAEhC;AAED,wBAAsB,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8CpI"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.runSimulation = runSimulation;
4
4
  const iam_data_1 = require("@cloud-copilot/iam-data");
5
5
  const iam_policy_1 = require("@cloud-copilot/iam-policy");
6
+ const contextKeys_js_1 = require("./contextKeys.js");
6
7
  async function runSimulation(simulation, simulationOptions) {
7
8
  const identityPolicyErrors = Object.keys(simulation.identityPolicies).reduce((acc, key) => {
8
9
  acc[key] == (0, iam_policy_1.validatePolicySyntax)(simulation.identityPolicies[key]);
@@ -32,6 +33,15 @@ async function runSimulation(simulation, simulationOptions) {
32
33
  message: 'invalid.action'
33
34
  };
34
35
  }
36
+ const resourceArn = simulation.request.resource.resource;
37
+ const contextVariablesForAction = new Set(await (0, contextKeys_js_1.allowedContextKeysForRequest)(service, action, resourceArn));
38
+ // We need to get the types of the context variables and set a string or array of strings based on that.
39
+ const allowedContextKeys = {};
40
+ for (const key of Object.keys(simulation.request.contextVariables)) {
41
+ if (contextVariablesForAction.has(key)) {
42
+ allowedContextKeys[key] = simulation.request.contextVariables[key];
43
+ }
44
+ }
35
45
  // Implementation goes here
36
46
  return {};
37
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"simulationEngine.js","sourceRoot":"","sources":["../../../src/simulation_engine/simulationEngine.ts"],"names":[],"mappings":";;AAcA,sCAmCC;AAjDD,sDAA4E;AAC5E,0DAAkF;AAa3E,KAAK,UAAU,aAAa,CAAC,UAAsB,EAAE,iBAAoC;IAC9F,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAW,EAAE,EAAE;QAChG,GAAG,CAAC,GAAG,CAAC,IAAI,IAAA,iCAAoB,EAAC,UAAU,CAAC,gBAAgB,CAAC,GAAU,CAAC,CAAC,CAAC;QAC1E,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAuC,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;IACrE,IAAG,UAAU,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO;YACL,oBAAoB;SACrB,CAAA;IACH,CAAC;IAED,IAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO;YACL,OAAO,EAAE,gBAAgB;SAC1B,CAAA;IACH,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,MAAM,IAAA,2BAAgB,EAAC,OAAO,CAAC,CAAC;IACrD,IAAG,CAAC,YAAY,EAAE,CAAC;QACjB,OAAO;YACL,OAAO,EAAE,iBAAiB;SAC3B,CAAA;IACH,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,IAAA,0BAAe,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3D,IAAG,CAAC,WAAW,EAAE,CAAC;QAChB,OAAO;YACL,OAAO,EAAE,gBAAgB;SAC1B,CAAA;IACH,CAAC;IAED,2BAA2B;IAC3B,OAAO,EAAsB,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"simulationEngine.js","sourceRoot":"","sources":["../../../src/simulation_engine/simulationEngine.ts"],"names":[],"mappings":";;AAeA,sCA8CC;AA7DD,sDAA4E;AAC5E,0DAAkF;AAClF,qDAAgE;AAazD,KAAK,UAAU,aAAa,CAAC,UAAsB,EAAE,iBAA6C;IACvG,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAW,EAAE,EAAE;QAChG,GAAG,CAAC,GAAG,CAAC,IAAI,IAAA,iCAAoB,EAAC,UAAU,CAAC,gBAAgB,CAAC,GAAU,CAAC,CAAC,CAAC;QAC1E,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAuC,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;IACrE,IAAG,UAAU,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO;YACL,oBAAoB;SACrB,CAAA;IACH,CAAC;IAED,IAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO;YACL,OAAO,EAAE,gBAAgB;SAC1B,CAAA;IACH,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,MAAM,IAAA,2BAAgB,EAAC,OAAO,CAAC,CAAC;IACrD,IAAG,CAAC,YAAY,EAAE,CAAC;QACjB,OAAO;YACL,OAAO,EAAE,iBAAiB;SAC3B,CAAA;IACH,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,IAAA,0BAAe,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3D,IAAG,CAAC,WAAW,EAAE,CAAC;QAChB,OAAO;YACL,OAAO,EAAE,gBAAgB;SAC1B,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACzD,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC,MAAM,IAAA,6CAA4B,EAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;IAE3G,wGAAwG;IACxG,MAAM,kBAAkB,GAAsC,EAAE,CAAC;IACjE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnE,IAAI,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,kBAAkB,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,OAAO,EAAsB,CAAC;AAChC,CAAC"}
@@ -9,5 +9,5 @@ import { SimulationOptions } from "./simulationOptions.js";
9
9
  * @param simulationOptions Options for the simulation.
10
10
  * @returns The result of the simulation.
11
11
  */
12
- export declare function runUnsafeSimulation(simulation: Simulation, simulationOptions: SimulationOptions): EvaluationResult;
12
+ export declare function runUnsafeSimulation(simulation: Simulation, simulationOptions: Partial<SimulationOptions>): EvaluationResult;
13
13
  //# sourceMappingURL=unsafeSimulationEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"unsafeSimulationEngine.d.ts","sourceRoot":"","sources":["../../../src/simulation_engine/unsafeSimulationEngine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,gBAAgB,CAalH"}
1
+ {"version":3,"file":"unsafeSimulationEngine.d.ts","sourceRoot":"","sources":["../../../src/simulation_engine/unsafeSimulationEngine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,gBAAgB,CAa3H"}
@@ -1 +1 @@
1
- {"version":3,"file":"unsafeSimulationEngine.js","sourceRoot":"","sources":["../../../src/simulation_engine/unsafeSimulationEngine.ts"],"names":[],"mappings":";;AAgBA,kDAaC;AA7BD,0DAAuD;AACvD,kFAAkE;AAElE,sDAAuD;AACvD,4DAA0D;AAI1D;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CAAC,UAAsB,EAAE,iBAAoC;IAC5F,2BAA2B;IAC7B,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,uBAAU,EAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,MAAM,cAAc,GAAG,IAAI,sCAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAClF,MAAM,OAAO,GAAG,IAAI,2BAAc,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE;QAC/D,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ;QAC9C,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS;KACjD,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAE9C,OAAO,IAAA,kCAAS,EAAC;QACf,OAAO;QACP,gBAAgB;KACjB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"unsafeSimulationEngine.js","sourceRoot":"","sources":["../../../src/simulation_engine/unsafeSimulationEngine.ts"],"names":[],"mappings":";;AAgBA,kDAaC;AA7BD,0DAAuD;AACvD,kFAAkE;AAElE,sDAAuD;AACvD,4DAA0D;AAI1D;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CAAC,UAAsB,EAAE,iBAA6C;IACrG,2BAA2B;IAC7B,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,uBAAU,EAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,MAAM,cAAc,GAAG,IAAI,sCAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAClF,MAAM,OAAO,GAAG,IAAI,2BAAc,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE;QAC/D,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ;QAC9C,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS;KACjD,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAE9C,OAAO,IAAA,kCAAS,EAAC;QACf,OAAO;QACP,gBAAgB;KACjB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ interface GlobalConditionKey {
2
+ key: string;
3
+ category: string;
4
+ dataType: string;
5
+ }
6
+ export declare function getGlobalConditionKey(key: string): GlobalConditionKey | undefined;
7
+ export declare function getGlobalConditionKeysByCategory(category: string): GlobalConditionKey[];
8
+ export {};
9
+ //# sourceMappingURL=globalConditionKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalConditionKeys.d.ts","sourceRoot":"","sources":["../../../src/global_conditions/globalConditionKeys.ts"],"names":[],"mappings":"AAAA,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AA0QD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAEjF;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAEvF"}
@@ -0,0 +1,264 @@
1
+ const globalConditionKeys = [
2
+ {
3
+ key: "aws:PrincipalArn",
4
+ category: "principal",
5
+ dataType: ""
6
+ },
7
+ {
8
+ key: "aws:PrincipalAccount",
9
+ category: "principal",
10
+ dataType: ""
11
+ },
12
+ {
13
+ key: "aws:PrincipalOrgPaths",
14
+ category: "principal",
15
+ dataType: ""
16
+ },
17
+ {
18
+ key: "aws:PrincipalOrgID",
19
+ category: "principal",
20
+ dataType: ""
21
+ },
22
+ {
23
+ key: "aws:PrincipalTag/tag-key",
24
+ category: "principal",
25
+ dataType: ""
26
+ },
27
+ {
28
+ key: "aws:PrincipalIsAWSService",
29
+ category: "principal",
30
+ dataType: ""
31
+ },
32
+ {
33
+ key: "aws:PrincipalServiceName",
34
+ category: "principal",
35
+ dataType: ""
36
+ },
37
+ {
38
+ key: "aws:PrincipalServiceNamesList",
39
+ category: "principal",
40
+ dataType: ""
41
+ },
42
+ {
43
+ key: "aws:PrincipalType",
44
+ category: "principal",
45
+ dataType: ""
46
+ },
47
+ {
48
+ key: "aws:userid",
49
+ category: "principal",
50
+ dataType: ""
51
+ },
52
+ {
53
+ key: "aws:username",
54
+ category: "principal",
55
+ dataType: ""
56
+ },
57
+ {
58
+ key: "aws:FederatedProvider",
59
+ category: "session",
60
+ dataType: "",
61
+ },
62
+ {
63
+ key: "aws:TokenIssueTime",
64
+ category: "session",
65
+ dataType: "",
66
+ },
67
+ {
68
+ key: "aws:MultiFactorAuthAge",
69
+ category: "session",
70
+ dataType: "",
71
+ },
72
+ {
73
+ key: "aws:MultiFactorAuthPresent",
74
+ category: "session",
75
+ dataType: "",
76
+ },
77
+ {
78
+ key: "aws:Ec2InstanceSourceVpc",
79
+ category: "session",
80
+ dataType: "",
81
+ },
82
+ {
83
+ key: "aws:Ec2InstanceSourcePrivateIPv4",
84
+ category: "session",
85
+ dataType: "",
86
+ },
87
+ {
88
+ key: "aws:SourceIdentity",
89
+ category: "session",
90
+ dataType: "",
91
+ },
92
+ {
93
+ key: "ec2:RoleDelivery",
94
+ category: "session",
95
+ dataType: "",
96
+ },
97
+ {
98
+ key: "ec2:SourceInstanceArn",
99
+ category: "session",
100
+ dataType: "",
101
+ },
102
+ {
103
+ key: "glue:RoleAssumedBy",
104
+ category: "session",
105
+ dataType: "",
106
+ },
107
+ {
108
+ key: "glue:CredentialIssuingService",
109
+ category: "session",
110
+ dataType: "",
111
+ },
112
+ {
113
+ key: "lambda:SourceFunctionArn",
114
+ category: "session",
115
+ dataType: "",
116
+ },
117
+ {
118
+ key: "ssm:SourceInstanceArn",
119
+ category: "session",
120
+ dataType: "",
121
+ },
122
+ {
123
+ key: "identitystore:UserId",
124
+ category: "session",
125
+ dataType: "",
126
+ },
127
+ {
128
+ key: "aws:SourceIp",
129
+ category: "network",
130
+ dataType: "",
131
+ },
132
+ {
133
+ key: "aws:SourceVpc",
134
+ category: "network",
135
+ dataType: "",
136
+ },
137
+ {
138
+ key: "aws:SourceVpce",
139
+ category: "network",
140
+ dataType: "",
141
+ },
142
+ {
143
+ key: "aws:VpcSourceIp ",
144
+ category: "network",
145
+ dataType: "",
146
+ },
147
+ {
148
+ key: "aws:ResourceAccount",
149
+ category: "resource",
150
+ dataType: "",
151
+ },
152
+ {
153
+ key: "aws:ResourceOrgID",
154
+ category: "resource",
155
+ dataType: "",
156
+ },
157
+ {
158
+ key: "aws:ResourceOrgPaths",
159
+ category: "resource",
160
+ dataType: "",
161
+ },
162
+ {
163
+ key: "aws:ResourceTag/tag-key",
164
+ category: "resource",
165
+ dataType: "",
166
+ },
167
+ {
168
+ key: "aws:CalledVia",
169
+ category: "request",
170
+ dataType: "",
171
+ },
172
+ {
173
+ key: "aws:CalledViaFirst",
174
+ category: "request",
175
+ dataType: "",
176
+ },
177
+ {
178
+ key: "aws:CalledViaLast",
179
+ category: "request",
180
+ dataType: "",
181
+ },
182
+ {
183
+ key: "aws:ViaAWSService",
184
+ category: "request",
185
+ dataType: "",
186
+ },
187
+ {
188
+ key: "aws:CurrentTime",
189
+ category: "request",
190
+ dataType: "",
191
+ },
192
+ {
193
+ key: "aws:EpochTime",
194
+ category: "request",
195
+ dataType: "",
196
+ },
197
+ {
198
+ key: "aws:referer",
199
+ category: "request",
200
+ dataType: "",
201
+ },
202
+ {
203
+ key: "aws:RequestedRegion",
204
+ category: "request",
205
+ dataType: "",
206
+ },
207
+ {
208
+ key: "aws:RequestTag/tag-key",
209
+ category: "request",
210
+ dataType: "",
211
+ },
212
+ {
213
+ key: "aws:TagKeys",
214
+ category: "request",
215
+ dataType: "",
216
+ },
217
+ {
218
+ key: "aws:SecureTransport",
219
+ category: "request",
220
+ dataType: "",
221
+ },
222
+ {
223
+ key: "aws:SourceArn",
224
+ category: "request",
225
+ dataType: "",
226
+ },
227
+ {
228
+ key: "aws:SourceAccount",
229
+ category: "request",
230
+ dataType: "",
231
+ },
232
+ {
233
+ key: "aws:SourceOrgPaths",
234
+ category: "request",
235
+ dataType: "",
236
+ },
237
+ {
238
+ key: "aws:SourceOrgID",
239
+ category: "request",
240
+ dataType: "",
241
+ },
242
+ {
243
+ key: "aws:UserAgent ",
244
+ category: "request",
245
+ dataType: "",
246
+ }
247
+ ];
248
+ const keysByName = globalConditionKeys.reduce((acc, key) => {
249
+ acc[key.key.toLowerCase()] = key;
250
+ return acc;
251
+ }, {});
252
+ const keysByCategory = globalConditionKeys.reduce((acc, key) => {
253
+ const lowerCategory = key.category.toLowerCase();
254
+ acc[lowerCategory] = acc[lowerCategory] || [];
255
+ acc[lowerCategory].push(key);
256
+ return acc;
257
+ }, {});
258
+ export function getGlobalConditionKey(key) {
259
+ return keysByName[key.toLowerCase()];
260
+ }
261
+ export function getGlobalConditionKeysByCategory(category) {
262
+ return keysByCategory[category.toLowerCase()] || [];
263
+ }
264
+ //# sourceMappingURL=globalConditionKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalConditionKeys.js","sourceRoot":"","sources":["../../../src/global_conditions/globalConditionKeys.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,5 @@ export interface SimulationErrors {
7
7
  }
8
8
  export interface SimulationResult {
9
9
  }
10
- export declare function runSimulation(simulation: Simulation, simulationOptions: SimulationOptions): Promise<SimulationResult>;
10
+ export declare function runSimulation(simulation: Simulation, simulationOptions: Partial<SimulationOptions>): Promise<SimulationResult>;
11
11
  //# sourceMappingURL=simulationEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"simulationEngine.d.ts","sourceRoot":"","sources":["../../../src/simulation_engine/simulationEngine.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IACzD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;CAEhC;AAED,wBAAsB,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmC3H"}
1
+ {"version":3,"file":"simulationEngine.d.ts","sourceRoot":"","sources":["../../../src/simulation_engine/simulationEngine.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAElF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IACzD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;CAEhC;AAED,wBAAsB,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8CpI"}
@@ -1,5 +1,6 @@
1
1
  import { iamActionExists, iamServiceExists } from "@cloud-copilot/iam-data";
2
2
  import { validatePolicySyntax } from "@cloud-copilot/iam-policy";
3
+ import { allowedContextKeysForRequest } from "./contextKeys.js";
3
4
  export async function runSimulation(simulation, simulationOptions) {
4
5
  const identityPolicyErrors = Object.keys(simulation.identityPolicies).reduce((acc, key) => {
5
6
  acc[key] == validatePolicySyntax(simulation.identityPolicies[key]);
@@ -29,6 +30,15 @@ export async function runSimulation(simulation, simulationOptions) {
29
30
  message: 'invalid.action'
30
31
  };
31
32
  }
33
+ const resourceArn = simulation.request.resource.resource;
34
+ const contextVariablesForAction = new Set(await allowedContextKeysForRequest(service, action, resourceArn));
35
+ // We need to get the types of the context variables and set a string or array of strings based on that.
36
+ const allowedContextKeys = {};
37
+ for (const key of Object.keys(simulation.request.contextVariables)) {
38
+ if (contextVariablesForAction.has(key)) {
39
+ allowedContextKeys[key] = simulation.request.contextVariables[key];
40
+ }
41
+ }
32
42
  // Implementation goes here
33
43
  return {};
34
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"simulationEngine.js","sourceRoot":"","sources":["../../../src/simulation_engine/simulationEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAmB,MAAM,2BAA2B,CAAC;AAalF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAsB,EAAE,iBAAoC;IAC9F,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAW,EAAE,EAAE;QAChG,GAAG,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAU,CAAC,CAAC,CAAC;QAC1E,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAuC,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;IACrE,IAAG,UAAU,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO;YACL,oBAAoB;SACrB,CAAA;IACH,CAAC;IAED,IAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO;YACL,OAAO,EAAE,gBAAgB;SAC1B,CAAA;IACH,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACrD,IAAG,CAAC,YAAY,EAAE,CAAC;QACjB,OAAO;YACL,OAAO,EAAE,iBAAiB;SAC3B,CAAA;IACH,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3D,IAAG,CAAC,WAAW,EAAE,CAAC;QAChB,OAAO;YACL,OAAO,EAAE,gBAAgB;SAC1B,CAAA;IACH,CAAC;IAED,2BAA2B;IAC3B,OAAO,EAAsB,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"simulationEngine.js","sourceRoot":"","sources":["../../../src/simulation_engine/simulationEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAmB,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAahE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAsB,EAAE,iBAA6C;IACvG,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAW,EAAE,EAAE;QAChG,GAAG,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAU,CAAC,CAAC,CAAC;QAC1E,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAuC,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;IACrE,IAAG,UAAU,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO;YACL,oBAAoB;SACrB,CAAA;IACH,CAAC;IAED,IAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO;YACL,OAAO,EAAE,gBAAgB;SAC1B,CAAA;IACH,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACrD,IAAG,CAAC,YAAY,EAAE,CAAC;QACjB,OAAO;YACL,OAAO,EAAE,iBAAiB;SAC3B,CAAA;IACH,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3D,IAAG,CAAC,WAAW,EAAE,CAAC;QAChB,OAAO;YACL,OAAO,EAAE,gBAAgB;SAC1B,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACzD,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC,MAAM,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;IAE3G,wGAAwG;IACxG,MAAM,kBAAkB,GAAsC,EAAE,CAAC;IACjE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnE,IAAI,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,kBAAkB,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,OAAO,EAAsB,CAAC;AAChC,CAAC"}
@@ -9,5 +9,5 @@ import { SimulationOptions } from "./simulationOptions.js";
9
9
  * @param simulationOptions Options for the simulation.
10
10
  * @returns The result of the simulation.
11
11
  */
12
- export declare function runUnsafeSimulation(simulation: Simulation, simulationOptions: SimulationOptions): EvaluationResult;
12
+ export declare function runUnsafeSimulation(simulation: Simulation, simulationOptions: Partial<SimulationOptions>): EvaluationResult;
13
13
  //# sourceMappingURL=unsafeSimulationEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"unsafeSimulationEngine.d.ts","sourceRoot":"","sources":["../../../src/simulation_engine/unsafeSimulationEngine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,gBAAgB,CAalH"}
1
+ {"version":3,"file":"unsafeSimulationEngine.d.ts","sourceRoot":"","sources":["../../../src/simulation_engine/unsafeSimulationEngine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,gBAAgB,CAa3H"}
@@ -1 +1 @@
1
- {"version":3,"file":"unsafeSimulationEngine.js","sourceRoot":"","sources":["../../../src/simulation_engine/unsafeSimulationEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAsB,EAAE,iBAAoC;IAC5F,2BAA2B;IAC7B,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,MAAM,cAAc,GAAG,IAAI,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAClF,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE;QAC/D,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ;QAC9C,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS;KACjD,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAE9C,OAAO,SAAS,CAAC;QACf,OAAO;QACP,gBAAgB;KACjB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"unsafeSimulationEngine.js","sourceRoot":"","sources":["../../../src/simulation_engine/unsafeSimulationEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAsB,EAAE,iBAA6C;IACrG,2BAA2B;IAC7B,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,MAAM,cAAc,GAAG,IAAI,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAClF,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE;QAC/D,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ;QAC9C,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS;KACjD,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAE9C,OAAO,SAAS,CAAC;QACf,OAAO;QACP,gBAAgB;KACjB,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloud-copilot/iam-simulate",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Simulate evaluation of AWS IAM policies",
5
5
  "repository": {
6
6
  "type": "git",
@@ -40,6 +40,6 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@cloud-copilot/iam-data": ">=0.8.0 <1.0.0",
43
- "@cloud-copilot/iam-policy": "0.0.9"
43
+ "@cloud-copilot/iam-policy": "^0.1.1"
44
44
  }
45
45
  }