@cloud-copilot/iam-simulate 0.1.51 → 0.1.53
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.
- package/dist/cjs/StatementAnalysis.d.ts +7 -0
- package/dist/cjs/StatementAnalysis.d.ts.map +1 -1
- package/dist/cjs/StatementAnalysis.js +12 -0
- package/dist/cjs/StatementAnalysis.js.map +1 -1
- package/dist/cjs/condition/condition.d.ts.map +1 -1
- package/dist/cjs/condition/condition.js +6 -1
- package/dist/cjs/condition/condition.js.map +1 -1
- package/dist/cjs/core_engine/CoreSimulatorEngine.d.ts.map +1 -1
- package/dist/cjs/core_engine/CoreSimulatorEngine.js +57 -16
- package/dist/cjs/core_engine/CoreSimulatorEngine.js.map +1 -1
- package/dist/cjs/evaluate.d.ts +21 -17
- package/dist/cjs/evaluate.d.ts.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/principal/principal.d.ts +3 -3
- package/dist/cjs/principal/principal.d.ts.map +1 -1
- package/dist/cjs/principal/principal.js +27 -18
- package/dist/cjs/principal/principal.js.map +1 -1
- package/dist/esm/StatementAnalysis.d.ts +7 -0
- package/dist/esm/StatementAnalysis.d.ts.map +1 -1
- package/dist/esm/StatementAnalysis.js +11 -0
- package/dist/esm/StatementAnalysis.js.map +1 -1
- package/dist/esm/condition/condition.d.ts.map +1 -1
- package/dist/esm/condition/condition.js +6 -1
- package/dist/esm/condition/condition.js.map +1 -1
- package/dist/esm/core_engine/CoreSimulatorEngine.d.ts.map +1 -1
- package/dist/esm/core_engine/CoreSimulatorEngine.js +58 -17
- package/dist/esm/core_engine/CoreSimulatorEngine.js.map +1 -1
- package/dist/esm/evaluate.d.ts +21 -17
- package/dist/esm/evaluate.d.ts.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/principal/principal.d.ts +3 -3
- package/dist/esm/principal/principal.d.ts.map +1 -1
- package/dist/esm/principal/principal.js +27 -18
- package/dist/esm/principal/principal.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,46 +6,54 @@ import { convertAssumedRoleArnToRoleArn, isAssumedRoleArn, isFederatedUserArn }
|
|
|
6
6
|
* @param principal the list of principals in the Principal element of the Statement
|
|
7
7
|
* @returns if the request matches the Principal element, and if so, how it matches
|
|
8
8
|
*/
|
|
9
|
-
export function requestMatchesPrincipal(request, principal, simulationParameters) {
|
|
10
|
-
const analyses = principal.map((principalStatement) => requestMatchesPrincipalStatement(request, principalStatement, simulationParameters));
|
|
9
|
+
export function requestMatchesPrincipal(request, principal, simulationParameters, allowOrDeny) {
|
|
10
|
+
const analyses = principal.map((principalStatement) => requestMatchesPrincipalStatement(request, principalStatement, simulationParameters, allowOrDeny));
|
|
11
11
|
const explains = analyses.map((a) => a.explain);
|
|
12
|
+
const anyIgnore = analyses.some((any) => any.ignoredRoleSessionName);
|
|
13
|
+
const ignoredRoleSessionName = anyIgnore ? true : undefined;
|
|
12
14
|
// First check if any principal match without ignoring the role session name
|
|
13
15
|
if (analyses.some((anys) => anys.explain.matches === 'Match' && !anys.ignoredRoleSessionName)) {
|
|
14
16
|
return {
|
|
15
17
|
matches: 'Match',
|
|
16
|
-
explains
|
|
18
|
+
explains,
|
|
19
|
+
ignoredRoleSessionName
|
|
17
20
|
};
|
|
18
21
|
}
|
|
19
22
|
if (explains.some((exp) => exp.matches === 'SessionUserMatch')) {
|
|
20
23
|
return {
|
|
21
24
|
matches: 'SessionUserMatch',
|
|
22
|
-
explains
|
|
25
|
+
explains,
|
|
26
|
+
ignoredRoleSessionName
|
|
23
27
|
};
|
|
24
28
|
}
|
|
25
29
|
if (explains.some((exp) => exp.matches === 'SessionRoleMatch')) {
|
|
26
30
|
return {
|
|
27
31
|
matches: 'SessionRoleMatch',
|
|
28
|
-
explains
|
|
32
|
+
explains,
|
|
33
|
+
ignoredRoleSessionName
|
|
29
34
|
};
|
|
30
35
|
}
|
|
31
|
-
// If there was a match,
|
|
36
|
+
// If there was a match, in Discovery mode, return a match and check for ignoredRoleSessionName
|
|
32
37
|
if (simulationParameters.simulationMode === 'Discovery' &&
|
|
33
|
-
analyses.some((any) => any.explain.matches === 'Match'
|
|
38
|
+
analyses.some((any) => any.explain.matches === 'Match')) {
|
|
39
|
+
// The session role name could have been ignored in any statement
|
|
34
40
|
return {
|
|
35
41
|
matches: 'Match',
|
|
36
42
|
explains,
|
|
37
|
-
ignoredRoleSessionName
|
|
43
|
+
ignoredRoleSessionName
|
|
38
44
|
};
|
|
39
45
|
}
|
|
40
46
|
if (explains.some((exp) => exp.matches === 'AccountLevelMatch')) {
|
|
41
47
|
return {
|
|
42
48
|
matches: 'AccountLevelMatch',
|
|
43
|
-
explains
|
|
49
|
+
explains,
|
|
50
|
+
ignoredRoleSessionName
|
|
44
51
|
};
|
|
45
52
|
}
|
|
46
53
|
return {
|
|
47
54
|
matches: 'NoMatch',
|
|
48
|
-
explains
|
|
55
|
+
explains,
|
|
56
|
+
ignoredRoleSessionName
|
|
49
57
|
};
|
|
50
58
|
}
|
|
51
59
|
/**
|
|
@@ -55,10 +63,10 @@ export function requestMatchesPrincipal(request, principal, simulationParameters
|
|
|
55
63
|
* @param notPrincipal the list of principals in the NotPrincipal element of the Statement
|
|
56
64
|
* @returns
|
|
57
65
|
*/
|
|
58
|
-
export function requestMatchesNotPrincipal(request, notPrincipal, simulationParameters) {
|
|
66
|
+
export function requestMatchesNotPrincipal(request, notPrincipal, simulationParameters, allowOrDeny) {
|
|
59
67
|
// const matches = notPrincipal.map(principalStatement => requestMatchesPrincipalStatement(request, principalStatement))
|
|
60
68
|
const analyses = notPrincipal.map((principalStatement) => {
|
|
61
|
-
const analysis = requestMatchesPrincipalStatement(request, principalStatement, simulationParameters);
|
|
69
|
+
const analysis = requestMatchesPrincipalStatement(request, principalStatement, simulationParameters, allowOrDeny);
|
|
62
70
|
/**
|
|
63
71
|
* Need to do research on this. If there is an account level match on a NotPrincipal, does that
|
|
64
72
|
* mean it tentatively matches the NotPrincipal, or does it mean it does not match the NotPrincipal?
|
|
@@ -95,7 +103,7 @@ export function requestMatchesNotPrincipal(request, notPrincipal, simulationPara
|
|
|
95
103
|
* @param principalStatement the principal statement to check the request against
|
|
96
104
|
* @returns if the request matches the principal statement, and if so, how it matches
|
|
97
105
|
*/
|
|
98
|
-
export function requestMatchesPrincipalStatement(request, principalStatement, simulationParameters) {
|
|
106
|
+
export function requestMatchesPrincipalStatement(request, principalStatement, simulationParameters, allowOrDeny) {
|
|
99
107
|
if (principalStatement.isServicePrincipal()) {
|
|
100
108
|
if (principalStatement.service() === request.principal.value()) {
|
|
101
109
|
return {
|
|
@@ -211,7 +219,7 @@ export function requestMatchesPrincipalStatement(request, principalStatement, si
|
|
|
211
219
|
- The principal in the request is a Role or assumed role ARN
|
|
212
220
|
- The base role ARN of the principal in the request matches the base role ARN in the statement
|
|
213
221
|
Then:
|
|
214
|
-
- Return a Match for the principal
|
|
222
|
+
- Return a Match for the principal if Allow, or NoMatch if Deny
|
|
215
223
|
- Indicate that the role session name was ignored for evaluation purposes
|
|
216
224
|
*/
|
|
217
225
|
if (simulationParameters.simulationMode === 'Discovery' &&
|
|
@@ -222,12 +230,13 @@ export function requestMatchesPrincipalStatement(request, principalStatement, si
|
|
|
222
230
|
requestRoleArn = convertAssumedRoleArnToRoleArn(requestRoleArn);
|
|
223
231
|
}
|
|
224
232
|
if (principalRoleArn === requestRoleArn) {
|
|
233
|
+
const discoveryMatch = allowOrDeny === 'Allow' ? 'Match' : 'NoMatch';
|
|
225
234
|
return {
|
|
226
235
|
explain: {
|
|
227
|
-
matches:
|
|
236
|
+
matches: discoveryMatch,
|
|
228
237
|
principal: principalStatement.value()
|
|
229
238
|
},
|
|
230
|
-
ignoredRoleSessionName: true // This is a role session
|
|
239
|
+
ignoredRoleSessionName: true // This is a role session match with the session name ignored
|
|
231
240
|
};
|
|
232
241
|
}
|
|
233
242
|
}
|
|
@@ -260,11 +269,11 @@ export function userArnFromFederatedUserArn(federatedUserArn) {
|
|
|
260
269
|
*/
|
|
261
270
|
export function requestMatchesStatementPrincipals(request, statement, simulationParameters) {
|
|
262
271
|
if (statement.isPrincipalStatement()) {
|
|
263
|
-
const { matches, explains, ignoredRoleSessionName } = requestMatchesPrincipal(request, statement.principals(), simulationParameters);
|
|
272
|
+
const { matches, explains, ignoredRoleSessionName } = requestMatchesPrincipal(request, statement.principals(), simulationParameters, statement.effect());
|
|
264
273
|
return { matches, details: { principals: explains }, ignoredRoleSessionName };
|
|
265
274
|
}
|
|
266
275
|
else if (statement.isNotPrincipalStatement()) {
|
|
267
|
-
const { matches, explains } = requestMatchesNotPrincipal(request, statement.notPrincipals(), simulationParameters);
|
|
276
|
+
const { matches, explains } = requestMatchesNotPrincipal(request, statement.notPrincipals(), simulationParameters, statement.effect());
|
|
268
277
|
return { matches, details: { notPrincipals: explains } };
|
|
269
278
|
}
|
|
270
279
|
throw new Error('Statement should have Principal or NotPrincipal');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"principal.js","sourceRoot":"","sources":["../../../src/principal/principal.ts"],"names":[],"mappings":"AACA,OAAO,EACL,8BAA8B,EAC9B,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,0BAA0B,CAAA;AA+BjC;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAmB,EACnB,SAAsB,EACtB,oBAA0C;
|
|
1
|
+
{"version":3,"file":"principal.js","sourceRoot":"","sources":["../../../src/principal/principal.ts"],"names":[],"mappings":"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"}
|