@actsecurity/iam-lens 0.1.163 → 0.1.164
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/README.md +30 -1
- package/dist/cjs/cli.js +38 -15
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/principals.d.ts +1 -0
- package/dist/cjs/principals.d.ts.map +1 -1
- package/dist/cjs/principals.js +5 -2
- package/dist/cjs/principals.js.map +1 -1
- package/dist/cjs/simulate/cliVariant.d.ts +116 -0
- package/dist/cjs/simulate/cliVariant.d.ts.map +1 -0
- package/dist/cjs/simulate/cliVariant.js +87 -0
- package/dist/cjs/simulate/cliVariant.js.map +1 -0
- package/dist/cjs/simulate/contextKeys.d.ts +23 -2
- package/dist/cjs/simulate/contextKeys.d.ts.map +1 -1
- package/dist/cjs/simulate/contextKeys.js +41 -11
- package/dist/cjs/simulate/contextKeys.js.map +1 -1
- package/dist/cjs/simulate/generatedPolicies.d.ts +23 -0
- package/dist/cjs/simulate/generatedPolicies.d.ts.map +1 -0
- package/dist/cjs/simulate/generatedPolicies.js +60 -0
- package/dist/cjs/simulate/generatedPolicies.js.map +1 -0
- package/dist/cjs/simulate/simulate.d.ts +107 -21
- package/dist/cjs/simulate/simulate.d.ts.map +1 -1
- package/dist/cjs/simulate/simulate.js +351 -190
- package/dist/cjs/simulate/simulate.js.map +1 -1
- package/dist/esm/cli.js +39 -16
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/principals.d.ts +1 -0
- package/dist/esm/principals.d.ts.map +1 -1
- package/dist/esm/principals.js +5 -2
- package/dist/esm/principals.js.map +1 -1
- package/dist/esm/simulate/cliVariant.d.ts +116 -0
- package/dist/esm/simulate/cliVariant.d.ts.map +1 -0
- package/dist/esm/simulate/cliVariant.js +84 -0
- package/dist/esm/simulate/cliVariant.js.map +1 -0
- package/dist/esm/simulate/contextKeys.d.ts +23 -2
- package/dist/esm/simulate/contextKeys.d.ts.map +1 -1
- package/dist/esm/simulate/contextKeys.js +40 -12
- package/dist/esm/simulate/contextKeys.js.map +1 -1
- package/dist/esm/simulate/generatedPolicies.d.ts +23 -0
- package/dist/esm/simulate/generatedPolicies.d.ts.map +1 -0
- package/dist/esm/simulate/generatedPolicies.js +56 -0
- package/dist/esm/simulate/generatedPolicies.js.map +1 -0
- package/dist/esm/simulate/simulate.d.ts +107 -21
- package/dist/esm/simulate/simulate.d.ts.map +1 -1
- package/dist/esm/simulate/simulate.js +350 -192
- package/dist/esm/simulate/simulate.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CONTEXT_KEYS = exports.knownContextKeys = exports.servicePrincipalKmsCallerAccountPlaceholder = void 0;
|
|
4
|
+
exports.isAnonymousPrincipalContextKey = isAnonymousPrincipalContextKey;
|
|
4
5
|
exports.contextHasKey = contextHasKey;
|
|
5
6
|
exports.contextValue = contextValue;
|
|
6
7
|
exports.createContextKeys = createContextKeys;
|
|
@@ -46,6 +47,33 @@ exports.CONTEXT_KEYS = {
|
|
|
46
47
|
vpcEndpointOrgPaths: 'aws:VpceOrgPaths',
|
|
47
48
|
vpcArn: 'aws:SourceVpcArn'
|
|
48
49
|
};
|
|
50
|
+
const anonymousPrincipalContextKeys = new Set([
|
|
51
|
+
'aws:assumedroot',
|
|
52
|
+
'aws:ec2instancesourceprivateipv4',
|
|
53
|
+
'aws:ec2instancesourcevpc',
|
|
54
|
+
'aws:federatedprovider',
|
|
55
|
+
'aws:multifactorauthage',
|
|
56
|
+
'aws:multifactorauthpresent',
|
|
57
|
+
'aws:sourceidentity',
|
|
58
|
+
'aws:tokenissuetime',
|
|
59
|
+
'aws:username',
|
|
60
|
+
'aws:userid',
|
|
61
|
+
'kms:calleraccount'
|
|
62
|
+
]);
|
|
63
|
+
/**
|
|
64
|
+
* Determine whether a context key requires an authenticated principal or its credentials.
|
|
65
|
+
*
|
|
66
|
+
* Anonymous requests cannot supply these keys as overrides because AWS treats the corresponding
|
|
67
|
+
* principal identity as absent. Principal-prefixed keys include fixed keys such as
|
|
68
|
+
* `aws:PrincipalArn` and dynamic keys such as `aws:PrincipalTag/team`.
|
|
69
|
+
*
|
|
70
|
+
* @param key context key name to classify
|
|
71
|
+
* @returns whether the key is unavailable to anonymous requests
|
|
72
|
+
*/
|
|
73
|
+
function isAnonymousPrincipalContextKey(key) {
|
|
74
|
+
const normalizedKey = key.toLowerCase();
|
|
75
|
+
return (normalizedKey.startsWith('aws:principal') || anonymousPrincipalContextKeys.has(normalizedKey));
|
|
76
|
+
}
|
|
49
77
|
/**
|
|
50
78
|
* Checks if a context has a specific key (case-insensitive).
|
|
51
79
|
*
|
|
@@ -75,20 +103,22 @@ function contextValue(context, key) {
|
|
|
75
103
|
* @param service the service the request is for
|
|
76
104
|
* @param contextKeyOverrides the context key overrides to apply
|
|
77
105
|
* @param resolvedPrincipalArnForContext canonical principal ARN to use for role-backed context keys
|
|
106
|
+
* @param options controls collected resource metadata lookups
|
|
78
107
|
* @returns a promise that resolves to the context keys for the simulation request
|
|
79
108
|
*/
|
|
80
|
-
async function createContextKeys(collectClient, simulationRequest, service, contextKeyOverrides, resolvedPrincipalArnForContext) {
|
|
109
|
+
async function createContextKeys(collectClient, simulationRequest, service, contextKeyOverrides, resolvedPrincipalArnForContext, options = {}) {
|
|
81
110
|
const contextKeys = {
|
|
82
111
|
'aws:SecureTransport': 'true',
|
|
83
112
|
'aws:CurrentTime': new Date().toISOString(),
|
|
84
113
|
'aws:EpochTime': Math.floor(Date.now() / 1000).toString()
|
|
85
114
|
};
|
|
86
|
-
|
|
87
|
-
|
|
115
|
+
const principal = simulationRequest.principal;
|
|
116
|
+
if (principal && (0, principals_js_1.isArnPrincipal)(principal)) {
|
|
117
|
+
const arnParts = (0, iam_utils_1.splitArnParts)(principal);
|
|
88
118
|
const principalArnForContext = resolvedPrincipalArnForContext ??
|
|
89
119
|
(arnParts.resourceType === 'assumed-role'
|
|
90
|
-
? (0, iam_utils_1.convertAssumedRoleArnToRoleArn)(
|
|
91
|
-
:
|
|
120
|
+
? (0, iam_utils_1.convertAssumedRoleArnToRoleArn)(principal)
|
|
121
|
+
: principal);
|
|
92
122
|
contextKeys['aws:PrincipalArn'] = principalArnForContext;
|
|
93
123
|
const principalAccountId = arnParts.accountId;
|
|
94
124
|
contextKeys['aws:PrincipalAccount'] = arnParts.accountId || '';
|
|
@@ -106,13 +136,13 @@ async function createContextKeys(collectClient, simulationRequest, service, cont
|
|
|
106
136
|
if (service.toLowerCase() === 'kms') {
|
|
107
137
|
contextKeys['kms:CallerAccount'] = principalAccountId;
|
|
108
138
|
}
|
|
109
|
-
if (
|
|
139
|
+
if (principal.endsWith(':root')) {
|
|
110
140
|
contextKeys['aws:PrincipalType'] = 'Account';
|
|
111
141
|
contextKeys['aws:userid'] = principalAccountId;
|
|
112
142
|
}
|
|
113
143
|
else if (arnParts.resourceType === 'user') {
|
|
114
144
|
contextKeys['aws:PrincipalType'] = 'User';
|
|
115
|
-
const userUniqueId = await collectClient.getUniqueIdForIamResource(
|
|
145
|
+
const userUniqueId = await collectClient.getUniqueIdForIamResource(principal);
|
|
116
146
|
contextKeys['aws:userid'] = userUniqueId || 'UNKNOWN';
|
|
117
147
|
const userName = arnParts.resourcePath?.split('/').at(-1);
|
|
118
148
|
contextKeys['aws:username'] = userName;
|
|
@@ -126,7 +156,7 @@ async function createContextKeys(collectClient, simulationRequest, service, cont
|
|
|
126
156
|
//TODO: Set aws:userId for role principals
|
|
127
157
|
if (arnParts.resourceType === 'assumed-role') {
|
|
128
158
|
const sessionName = arnParts.resourcePath?.split('/').at(-1);
|
|
129
|
-
const roleArn = (0, iam_utils_1.convertAssumedRoleArnToRoleArn)(
|
|
159
|
+
const roleArn = (0, iam_utils_1.convertAssumedRoleArnToRoleArn)(principal);
|
|
130
160
|
const roleUniqueId = await collectClient.getUniqueIdForIamResource(roleArn);
|
|
131
161
|
contextKeys['aws:userid'] = `${roleUniqueId || 'UNKNOWN'}:${sessionName}`;
|
|
132
162
|
}
|
|
@@ -143,7 +173,7 @@ async function createContextKeys(collectClient, simulationRequest, service, cont
|
|
|
143
173
|
}
|
|
144
174
|
}
|
|
145
175
|
let resourceTagsAreKnown = false;
|
|
146
|
-
if (simulationRequest.resourceArn) {
|
|
176
|
+
if (simulationRequest.resourceArn && options.includeResourceMetadata !== false) {
|
|
147
177
|
const isBucket = (0, iam_utils_1.isS3BucketOrObjectArn)(simulationRequest.resourceArn);
|
|
148
178
|
const { tags: resourceTags, present: resourceTagsPreset } = await collectClient.getTagsForResource(isBucket ? (0, iam_utils_1.bucketArn)(simulationRequest.resourceArn) : simulationRequest.resourceArn, simulationRequest.resourceAccount);
|
|
149
179
|
resourceTagsAreKnown = resourceTagsPreset;
|
|
@@ -155,9 +185,9 @@ async function createContextKeys(collectClient, simulationRequest, service, cont
|
|
|
155
185
|
}
|
|
156
186
|
}
|
|
157
187
|
//Service Principal context keys
|
|
158
|
-
if ((0, principals_js_1.isServicePrincipal)(
|
|
188
|
+
if (principal && (0, principals_js_1.isServicePrincipal)(principal)) {
|
|
159
189
|
contextKeys['aws:PrincipalIsAWSService'] = 'true';
|
|
160
|
-
contextKeys['aws:PrincipalServiceName'] =
|
|
190
|
+
contextKeys['aws:PrincipalServiceName'] = principal;
|
|
161
191
|
contextKeys['aws:SourceAccount'] = simulationRequest.resourceAccount;
|
|
162
192
|
contextKeys['aws:SourceOwner'] = simulationRequest.resourceAccount;
|
|
163
193
|
contextKeys['aws:SourceOrgID'] = contextKeys['aws:ResourceOrgID'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextKeys.js","sourceRoot":"","sources":["../../../src/simulate/contextKeys.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"contextKeys.js","sourceRoot":"","sources":["../../../src/simulate/contextKeys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ValidatedPolicy } from '@actsecurity/iam-policy';
|
|
2
|
+
import type { InternalSimulationRequest, PrincipalPolicyInputs } from './simulate.js';
|
|
3
|
+
export declare const syntheticResourcePolicyName = "iam-lens:synthetic-resource-allow-all";
|
|
4
|
+
export declare const syntheticTrustPolicyName = "iam-lens:synthetic-trust-allow-all";
|
|
5
|
+
export declare const syntheticIdentityPolicy: PrincipalPolicyInputs['identityPolicies'][number];
|
|
6
|
+
export declare const syntheticTrustPolicy: {
|
|
7
|
+
readonly Version: "2012-10-17";
|
|
8
|
+
readonly Statement: {
|
|
9
|
+
readonly Effect: "Allow";
|
|
10
|
+
readonly Principal: "*";
|
|
11
|
+
readonly Action: "*";
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Build and validate the caller-supplied or synthetic external resource policy.
|
|
16
|
+
*
|
|
17
|
+
* @param request the external-resource request
|
|
18
|
+
* @returns a validated resource or trust policy
|
|
19
|
+
*/
|
|
20
|
+
export declare function externalResourcePolicy(request: InternalSimulationRequest): ValidatedPolicy<{
|
|
21
|
+
name: string;
|
|
22
|
+
}>;
|
|
23
|
+
//# sourceMappingURL=generatedPolicies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generatedPolicies.d.ts","sourceRoot":"","sources":["../../../src/simulate/generatedPolicies.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAErF,eAAO,MAAM,2BAA2B,0CAA0C,CAAA;AAClF,eAAO,MAAM,wBAAwB,uCAAuC,CAAA;AAE5E,eAAO,MAAM,uBAAuB,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAU5E,CAAA;AAEV,eAAO,MAAM,oBAAoB;;;;;;;CAOvB,CAAA;AAEV;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,yBAAyB,GACjC,eAAe,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAanC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.syntheticTrustPolicy = exports.syntheticIdentityPolicy = exports.syntheticTrustPolicyName = exports.syntheticResourcePolicyName = void 0;
|
|
4
|
+
exports.externalResourcePolicy = externalResourcePolicy;
|
|
5
|
+
const iam_policy_1 = require("@actsecurity/iam-policy");
|
|
6
|
+
const sts_js_1 = require("../utils/sts.js");
|
|
7
|
+
exports.syntheticResourcePolicyName = 'iam-lens:synthetic-resource-allow-all';
|
|
8
|
+
exports.syntheticTrustPolicyName = 'iam-lens:synthetic-trust-allow-all';
|
|
9
|
+
exports.syntheticIdentityPolicy = {
|
|
10
|
+
name: 'iam-lens:synthetic-identity-allow-all',
|
|
11
|
+
policy: {
|
|
12
|
+
Version: '2012-10-17',
|
|
13
|
+
Statement: {
|
|
14
|
+
Effect: 'Allow',
|
|
15
|
+
Action: '*',
|
|
16
|
+
Resource: '*'
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
exports.syntheticTrustPolicy = {
|
|
21
|
+
Version: '2012-10-17',
|
|
22
|
+
Statement: {
|
|
23
|
+
Effect: 'Allow',
|
|
24
|
+
Principal: '*',
|
|
25
|
+
Action: '*'
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Build and validate the caller-supplied or synthetic external resource policy.
|
|
30
|
+
*
|
|
31
|
+
* @param request the external-resource request
|
|
32
|
+
* @returns a validated resource or trust policy
|
|
33
|
+
*/
|
|
34
|
+
function externalResourcePolicy(request) {
|
|
35
|
+
const useTrustPolicy = sts_js_1.AssumeRoleActions.has(request.action.toLowerCase());
|
|
36
|
+
const policyDocument = request.resourcePolicy ??
|
|
37
|
+
(useTrustPolicy
|
|
38
|
+
? exports.syntheticTrustPolicy
|
|
39
|
+
: makeSyntheticResourcePolicy(request.resourceArn || '*'));
|
|
40
|
+
const name = useTrustPolicy ? exports.syntheticTrustPolicyName : exports.syntheticResourcePolicyName;
|
|
41
|
+
return (0, iam_policy_1.createValidatedPolicy)(policyDocument, useTrustPolicy ? iam_policy_1.validateTrustPolicy : iam_policy_1.validateResourcePolicy, { name });
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Build the default resource policy for an external resource.
|
|
45
|
+
*
|
|
46
|
+
* @param resourceArn the concrete or wildcard resource to allow
|
|
47
|
+
* @returns an allow-all resource policy document
|
|
48
|
+
*/
|
|
49
|
+
function makeSyntheticResourcePolicy(resourceArn) {
|
|
50
|
+
return {
|
|
51
|
+
Version: '2012-10-17',
|
|
52
|
+
Statement: {
|
|
53
|
+
Effect: 'Allow',
|
|
54
|
+
Principal: '*',
|
|
55
|
+
Action: '*',
|
|
56
|
+
Resource: resourceArn
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=generatedPolicies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generatedPolicies.js","sourceRoot":"","sources":["../../../src/simulate/generatedPolicies.ts"],"names":[],"mappings":";;;AAuCA,wDAeC;AAtDD,wDAKgC;AAChC,4CAAmD;AAGtC,QAAA,2BAA2B,GAAG,uCAAuC,CAAA;AACrE,QAAA,wBAAwB,GAAG,oCAAoC,CAAA;AAE/D,QAAA,uBAAuB,GAAsD;IACxF,IAAI,EAAE,uCAAuC;IAC7C,MAAM,EAAE;QACN,OAAO,EAAE,YAAY;QACrB,SAAS,EAAE;YACT,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,GAAG;SACd;KACF;CACO,CAAA;AAEG,QAAA,oBAAoB,GAAG;IAClC,OAAO,EAAE,YAAY;IACrB,SAAS,EAAE;QACT,MAAM,EAAE,OAAO;QACf,SAAS,EAAE,GAAG;QACd,MAAM,EAAE,GAAG;KACZ;CACO,CAAA;AAEV;;;;;GAKG;AACH,SAAgB,sBAAsB,CACpC,OAAkC;IAElC,MAAM,cAAc,GAAG,0BAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IAC1E,MAAM,cAAc,GAClB,OAAO,CAAC,cAAc;QACtB,CAAC,cAAc;YACb,CAAC,CAAC,4BAAoB;YACtB,CAAC,CAAC,2BAA2B,CAAC,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,CAAA;IAC9D,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,gCAAwB,CAAC,CAAC,CAAC,mCAA2B,CAAA;IACpF,OAAO,IAAA,kCAAqB,EAC1B,cAAc,EACd,cAAc,CAAC,CAAC,CAAC,gCAAmB,CAAC,CAAC,CAAC,mCAAsB,EAC7D,EAAE,IAAI,EAAE,CACT,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,2BAA2B,CAAC,WAAmB;IACtD,OAAO;QACL,OAAO,EAAE,YAAY;QACrB,SAAS,EAAE;YACT,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,GAAG;YACd,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,WAAW;SACtB;KACF,CAAA;AACH,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type DiscoveryContextKeyConstraint, type EvaluationResult, type RunSimulationResults, type Simulation, type SimulationMode } from '@actsecurity/iam-simulate';
|
|
2
|
-
import { IamCollectClient } from '../collect/client.js';
|
|
2
|
+
import { IamCollectClient, type SimulationOrgPolicies } from '../collect/client.js';
|
|
3
3
|
import { type S3AbacOverride } from '../utils/s3Abac.js';
|
|
4
4
|
import { type ContextKeys } from './contextKeys.js';
|
|
5
5
|
/**
|
|
6
|
-
* The request details for simulating an IAM request.
|
|
6
|
+
* The request details for simulating an IAM request from a collected principal.
|
|
7
7
|
*/
|
|
8
8
|
export interface SimulationRequest {
|
|
9
9
|
/**
|
|
@@ -31,10 +31,6 @@ export interface SimulationRequest {
|
|
|
31
31
|
* The simulation mode to use for the request.
|
|
32
32
|
*/
|
|
33
33
|
simulationMode: SimulationMode;
|
|
34
|
-
/**
|
|
35
|
-
* Whether to ignore missing principal errors.
|
|
36
|
-
*/
|
|
37
|
-
ignoreMissingPrincipal?: boolean;
|
|
38
34
|
/**
|
|
39
35
|
* Override for S3 ABAC settings for the simulation.
|
|
40
36
|
*/
|
|
@@ -49,7 +45,31 @@ export interface SimulationRequest {
|
|
|
49
45
|
additionalStrictContextKeys?: string[];
|
|
50
46
|
}
|
|
51
47
|
/**
|
|
52
|
-
*
|
|
48
|
+
* An unsigned simulation request against a concrete resource ARN.
|
|
49
|
+
* Anonymous requests have no identity, session, permission-boundary, or SCP inputs.
|
|
50
|
+
*/
|
|
51
|
+
export interface AnonymousSimulationRequest extends Omit<SimulationRequest, 'principal' | 'resourceArn' | 'sessionPolicy'> {
|
|
52
|
+
/**
|
|
53
|
+
* The concrete resource ARN to access. Anonymous wildcard-only requests are unsupported.
|
|
54
|
+
*/
|
|
55
|
+
resourceArn: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* A simulation request targeting a resource that is not expected to exist in the collected dataset.
|
|
59
|
+
*/
|
|
60
|
+
export interface ExternalResourceSimulationRequest extends Omit<SimulationRequest, 'resourceArn'> {
|
|
61
|
+
/**
|
|
62
|
+
* The concrete ARN of the resource outside the collected dataset.
|
|
63
|
+
*/
|
|
64
|
+
resourceArn: string;
|
|
65
|
+
/**
|
|
66
|
+
* Optional raw resource policy, or trust policy for an STS assume-role action, to use instead of
|
|
67
|
+
* the synthetic allow-all policy.
|
|
68
|
+
*/
|
|
69
|
+
resourcePolicy?: Record<string, unknown>;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The result of a simulation request, containing the normalized request and evaluation result.
|
|
53
73
|
*/
|
|
54
74
|
export interface SimulateRequestResult {
|
|
55
75
|
/**
|
|
@@ -62,29 +82,95 @@ export interface SimulateRequestResult {
|
|
|
62
82
|
result: RunSimulationResults;
|
|
63
83
|
}
|
|
64
84
|
/**
|
|
65
|
-
*
|
|
85
|
+
* Normalized request shape shared by authenticated and anonymous orchestration.
|
|
86
|
+
*/
|
|
87
|
+
export type InternalSimulationRequest = Omit<SimulationRequest, 'principal'> & {
|
|
88
|
+
/**
|
|
89
|
+
* Authenticated principal string, or undefined for an anonymous request.
|
|
90
|
+
*/
|
|
91
|
+
principal: string | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Caller-supplied external resource or trust policy.
|
|
94
|
+
*/
|
|
95
|
+
resourcePolicy?: Record<string, unknown>;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Fully prepared principal-side policy inputs for an iam-simulate request.
|
|
99
|
+
*/
|
|
100
|
+
export interface PrincipalPolicyInputs {
|
|
101
|
+
/**
|
|
102
|
+
* Identity policies applicable to the request principal.
|
|
103
|
+
*/
|
|
104
|
+
identityPolicies: {
|
|
105
|
+
name: string;
|
|
106
|
+
policy: any;
|
|
107
|
+
}[];
|
|
108
|
+
/**
|
|
109
|
+
* Service control policy hierarchies applicable to the principal.
|
|
110
|
+
*/
|
|
111
|
+
serviceControlPolicies: SimulationOrgPolicies[];
|
|
112
|
+
/**
|
|
113
|
+
* Permission boundary applicable to the principal, when one exists.
|
|
114
|
+
*/
|
|
115
|
+
permissionBoundaryPolicies: {
|
|
116
|
+
name: string;
|
|
117
|
+
policy: any;
|
|
118
|
+
}[] | undefined;
|
|
119
|
+
/**
|
|
120
|
+
* RCP hierarchy for the principal account, used by collected wildcard-only requests.
|
|
121
|
+
*/
|
|
122
|
+
principalAccountRcps: SimulationOrgPolicies[];
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Simulate an IAM request using the collected policies for both the principal and resource.
|
|
66
126
|
*
|
|
67
|
-
* @param simulationRequest the simulation request details
|
|
68
|
-
* @param collectClient the IAM collect client to use for data access
|
|
69
|
-
* @returns the
|
|
127
|
+
* @param simulationRequest the simulation request details
|
|
128
|
+
* @param collectClient the IAM collect client to use for data access
|
|
129
|
+
* @returns the normalized request and simulation result
|
|
70
130
|
*/
|
|
71
131
|
export declare function simulateRequest(simulationRequest: SimulationRequest, collectClient: IamCollectClient): Promise<SimulateRequestResult>;
|
|
72
132
|
/**
|
|
73
|
-
*
|
|
133
|
+
* Simulate an unsigned request against a concrete resource ARN.
|
|
74
134
|
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
*
|
|
135
|
+
* @param simulationRequest the anonymous request details
|
|
136
|
+
* @param collectClient the IAM collect client to use for data access
|
|
137
|
+
* @returns the normalized anonymous request and simulation result
|
|
138
|
+
*/
|
|
139
|
+
export declare function simulateAnonymousRequest(simulationRequest: AnonymousSimulationRequest, collectClient: IamCollectClient): Promise<SimulateRequestResult>;
|
|
140
|
+
/**
|
|
141
|
+
* Simulate a request from an uncollected principal that has a synthetic administrator identity policy.
|
|
142
|
+
* SCPs and permission boundaries do not apply, while resource-side controls still apply.
|
|
143
|
+
* Wildcard-only actions are unsupported.
|
|
144
|
+
*
|
|
145
|
+
* @param simulationRequest the external principal request details
|
|
146
|
+
* @param collectClient the IAM collect client to use for resource-side data access
|
|
147
|
+
* @returns the normalized request and simulation result
|
|
148
|
+
*/
|
|
149
|
+
export declare function simulateExternalPrincipalRequest(simulationRequest: SimulationRequest, collectClient: IamCollectClient): Promise<SimulateRequestResult>;
|
|
150
|
+
/**
|
|
151
|
+
* Simulate a collected principal accessing a resource outside the collected dataset.
|
|
152
|
+
* Wildcard-only actions are unsupported.
|
|
153
|
+
*
|
|
154
|
+
* @param simulationRequest the external resource request and optional resource/trust policy
|
|
155
|
+
* @param collectClient the IAM collect client to use for principal-side data access
|
|
156
|
+
* @returns the normalized request and simulation result
|
|
157
|
+
*/
|
|
158
|
+
export declare function simulateExternalResourceRequest(simulationRequest: ExternalResourceSimulationRequest, collectClient: IamCollectClient): Promise<SimulateRequestResult>;
|
|
159
|
+
/**
|
|
160
|
+
* Convert an iam-lens strict context key into an iam-simulate Discovery constraint.
|
|
82
161
|
*
|
|
83
162
|
* @param keyName the literal context key or slash-delimited key pattern
|
|
84
|
-
* @param simulationRequest the request whose context
|
|
163
|
+
* @param simulationRequest the normalized request whose context certainty is modeled
|
|
85
164
|
* @returns the Discovery constraint to pass to iam-simulate
|
|
86
165
|
* @internal
|
|
87
166
|
*/
|
|
88
|
-
export declare function discoveryConstraintForStrictKey(keyName: string, simulationRequest:
|
|
167
|
+
export declare function discoveryConstraintForStrictKey(keyName: string, simulationRequest: Pick<InternalSimulationRequest, 'customContextKeys' | 'simulationMode' | 'principal'>): DiscoveryContextKeyConstraint;
|
|
168
|
+
/**
|
|
169
|
+
* Compare an actual simulation decision with an optional expected result.
|
|
170
|
+
*
|
|
171
|
+
* @param expected expected result or AnyDeny
|
|
172
|
+
* @param result actual evaluation result
|
|
173
|
+
* @returns whether the result satisfies the expectation
|
|
174
|
+
*/
|
|
89
175
|
export declare function resultMatchesExpectation(expected: EvaluationResult | 'AnyDeny' | undefined, result: EvaluationResult): boolean;
|
|
90
176
|
//# sourceMappingURL=simulate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulate.d.ts","sourceRoot":"","sources":["../../../src/simulate/simulate.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"simulate.d.ts","sourceRoot":"","sources":["../../../src/simulate/simulate.ts"],"names":[],"mappings":"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"}
|