@actsecurity/iam-lens 0.1.162 → 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,7 +1,6 @@
|
|
|
1
1
|
import { actionSupportsAwsResourceInfoContextKeys, bucketArn, convertAssumedRoleArnToRoleArn, isS3BucketOrObjectArn, splitArnParts } from '@actsecurity/iam-utils';
|
|
2
2
|
import { IamCollectClient } from '../collect/client.js';
|
|
3
3
|
import { isArnPrincipal, isServicePrincipal } from '../principals.js';
|
|
4
|
-
import {} from './simulate.js';
|
|
5
4
|
/**
|
|
6
5
|
* Placeholder for the caller account AWS supplies on a service-mediated KMS request.
|
|
7
6
|
*
|
|
@@ -40,6 +39,33 @@ export const CONTEXT_KEYS = {
|
|
|
40
39
|
vpcEndpointOrgPaths: 'aws:VpceOrgPaths',
|
|
41
40
|
vpcArn: 'aws:SourceVpcArn'
|
|
42
41
|
};
|
|
42
|
+
const anonymousPrincipalContextKeys = new Set([
|
|
43
|
+
'aws:assumedroot',
|
|
44
|
+
'aws:ec2instancesourceprivateipv4',
|
|
45
|
+
'aws:ec2instancesourcevpc',
|
|
46
|
+
'aws:federatedprovider',
|
|
47
|
+
'aws:multifactorauthage',
|
|
48
|
+
'aws:multifactorauthpresent',
|
|
49
|
+
'aws:sourceidentity',
|
|
50
|
+
'aws:tokenissuetime',
|
|
51
|
+
'aws:username',
|
|
52
|
+
'aws:userid',
|
|
53
|
+
'kms:calleraccount'
|
|
54
|
+
]);
|
|
55
|
+
/**
|
|
56
|
+
* Determine whether a context key requires an authenticated principal or its credentials.
|
|
57
|
+
*
|
|
58
|
+
* Anonymous requests cannot supply these keys as overrides because AWS treats the corresponding
|
|
59
|
+
* principal identity as absent. Principal-prefixed keys include fixed keys such as
|
|
60
|
+
* `aws:PrincipalArn` and dynamic keys such as `aws:PrincipalTag/team`.
|
|
61
|
+
*
|
|
62
|
+
* @param key context key name to classify
|
|
63
|
+
* @returns whether the key is unavailable to anonymous requests
|
|
64
|
+
*/
|
|
65
|
+
export function isAnonymousPrincipalContextKey(key) {
|
|
66
|
+
const normalizedKey = key.toLowerCase();
|
|
67
|
+
return (normalizedKey.startsWith('aws:principal') || anonymousPrincipalContextKeys.has(normalizedKey));
|
|
68
|
+
}
|
|
43
69
|
/**
|
|
44
70
|
* Checks if a context has a specific key (case-insensitive).
|
|
45
71
|
*
|
|
@@ -69,20 +95,22 @@ export function contextValue(context, key) {
|
|
|
69
95
|
* @param service the service the request is for
|
|
70
96
|
* @param contextKeyOverrides the context key overrides to apply
|
|
71
97
|
* @param resolvedPrincipalArnForContext canonical principal ARN to use for role-backed context keys
|
|
98
|
+
* @param options controls collected resource metadata lookups
|
|
72
99
|
* @returns a promise that resolves to the context keys for the simulation request
|
|
73
100
|
*/
|
|
74
|
-
export async function createContextKeys(collectClient, simulationRequest, service, contextKeyOverrides, resolvedPrincipalArnForContext) {
|
|
101
|
+
export async function createContextKeys(collectClient, simulationRequest, service, contextKeyOverrides, resolvedPrincipalArnForContext, options = {}) {
|
|
75
102
|
const contextKeys = {
|
|
76
103
|
'aws:SecureTransport': 'true',
|
|
77
104
|
'aws:CurrentTime': new Date().toISOString(),
|
|
78
105
|
'aws:EpochTime': Math.floor(Date.now() / 1000).toString()
|
|
79
106
|
};
|
|
80
|
-
|
|
81
|
-
|
|
107
|
+
const principal = simulationRequest.principal;
|
|
108
|
+
if (principal && isArnPrincipal(principal)) {
|
|
109
|
+
const arnParts = splitArnParts(principal);
|
|
82
110
|
const principalArnForContext = resolvedPrincipalArnForContext ??
|
|
83
111
|
(arnParts.resourceType === 'assumed-role'
|
|
84
|
-
? convertAssumedRoleArnToRoleArn(
|
|
85
|
-
:
|
|
112
|
+
? convertAssumedRoleArnToRoleArn(principal)
|
|
113
|
+
: principal);
|
|
86
114
|
contextKeys['aws:PrincipalArn'] = principalArnForContext;
|
|
87
115
|
const principalAccountId = arnParts.accountId;
|
|
88
116
|
contextKeys['aws:PrincipalAccount'] = arnParts.accountId || '';
|
|
@@ -100,13 +128,13 @@ export async function createContextKeys(collectClient, simulationRequest, servic
|
|
|
100
128
|
if (service.toLowerCase() === 'kms') {
|
|
101
129
|
contextKeys['kms:CallerAccount'] = principalAccountId;
|
|
102
130
|
}
|
|
103
|
-
if (
|
|
131
|
+
if (principal.endsWith(':root')) {
|
|
104
132
|
contextKeys['aws:PrincipalType'] = 'Account';
|
|
105
133
|
contextKeys['aws:userid'] = principalAccountId;
|
|
106
134
|
}
|
|
107
135
|
else if (arnParts.resourceType === 'user') {
|
|
108
136
|
contextKeys['aws:PrincipalType'] = 'User';
|
|
109
|
-
const userUniqueId = await collectClient.getUniqueIdForIamResource(
|
|
137
|
+
const userUniqueId = await collectClient.getUniqueIdForIamResource(principal);
|
|
110
138
|
contextKeys['aws:userid'] = userUniqueId || 'UNKNOWN';
|
|
111
139
|
const userName = arnParts.resourcePath?.split('/').at(-1);
|
|
112
140
|
contextKeys['aws:username'] = userName;
|
|
@@ -120,7 +148,7 @@ export async function createContextKeys(collectClient, simulationRequest, servic
|
|
|
120
148
|
//TODO: Set aws:userId for role principals
|
|
121
149
|
if (arnParts.resourceType === 'assumed-role') {
|
|
122
150
|
const sessionName = arnParts.resourcePath?.split('/').at(-1);
|
|
123
|
-
const roleArn = convertAssumedRoleArnToRoleArn(
|
|
151
|
+
const roleArn = convertAssumedRoleArnToRoleArn(principal);
|
|
124
152
|
const roleUniqueId = await collectClient.getUniqueIdForIamResource(roleArn);
|
|
125
153
|
contextKeys['aws:userid'] = `${roleUniqueId || 'UNKNOWN'}:${sessionName}`;
|
|
126
154
|
}
|
|
@@ -137,7 +165,7 @@ export async function createContextKeys(collectClient, simulationRequest, servic
|
|
|
137
165
|
}
|
|
138
166
|
}
|
|
139
167
|
let resourceTagsAreKnown = false;
|
|
140
|
-
if (simulationRequest.resourceArn) {
|
|
168
|
+
if (simulationRequest.resourceArn && options.includeResourceMetadata !== false) {
|
|
141
169
|
const isBucket = isS3BucketOrObjectArn(simulationRequest.resourceArn);
|
|
142
170
|
const { tags: resourceTags, present: resourceTagsPreset } = await collectClient.getTagsForResource(isBucket ? bucketArn(simulationRequest.resourceArn) : simulationRequest.resourceArn, simulationRequest.resourceAccount);
|
|
143
171
|
resourceTagsAreKnown = resourceTagsPreset;
|
|
@@ -149,9 +177,9 @@ export async function createContextKeys(collectClient, simulationRequest, servic
|
|
|
149
177
|
}
|
|
150
178
|
}
|
|
151
179
|
//Service Principal context keys
|
|
152
|
-
if (isServicePrincipal(
|
|
180
|
+
if (principal && isServicePrincipal(principal)) {
|
|
153
181
|
contextKeys['aws:PrincipalIsAWSService'] = 'true';
|
|
154
|
-
contextKeys['aws:PrincipalServiceName'] =
|
|
182
|
+
contextKeys['aws:PrincipalServiceName'] = principal;
|
|
155
183
|
contextKeys['aws:SourceAccount'] = simulationRequest.resourceAccount;
|
|
156
184
|
contextKeys['aws:SourceOwner'] = simulationRequest.resourceAccount;
|
|
157
185
|
contextKeys['aws:SourceOrgID'] = contextKeys['aws:ResourceOrgID'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextKeys.js","sourceRoot":"","sources":["../../../src/simulate/contextKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wCAAwC,EACxC,SAAS,EACT,8BAA8B,EAC9B,qBAAqB,EACrB,aAAa,EACd,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;
|
|
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,56 @@
|
|
|
1
|
+
import { createValidatedPolicy, validateResourcePolicy, validateTrustPolicy } from '@actsecurity/iam-policy';
|
|
2
|
+
import { AssumeRoleActions } from '../utils/sts.js';
|
|
3
|
+
export const syntheticResourcePolicyName = 'iam-lens:synthetic-resource-allow-all';
|
|
4
|
+
export const syntheticTrustPolicyName = 'iam-lens:synthetic-trust-allow-all';
|
|
5
|
+
export const syntheticIdentityPolicy = {
|
|
6
|
+
name: 'iam-lens:synthetic-identity-allow-all',
|
|
7
|
+
policy: {
|
|
8
|
+
Version: '2012-10-17',
|
|
9
|
+
Statement: {
|
|
10
|
+
Effect: 'Allow',
|
|
11
|
+
Action: '*',
|
|
12
|
+
Resource: '*'
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
export const syntheticTrustPolicy = {
|
|
17
|
+
Version: '2012-10-17',
|
|
18
|
+
Statement: {
|
|
19
|
+
Effect: 'Allow',
|
|
20
|
+
Principal: '*',
|
|
21
|
+
Action: '*'
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Build and validate the caller-supplied or synthetic external resource policy.
|
|
26
|
+
*
|
|
27
|
+
* @param request the external-resource request
|
|
28
|
+
* @returns a validated resource or trust policy
|
|
29
|
+
*/
|
|
30
|
+
export function externalResourcePolicy(request) {
|
|
31
|
+
const useTrustPolicy = AssumeRoleActions.has(request.action.toLowerCase());
|
|
32
|
+
const policyDocument = request.resourcePolicy ??
|
|
33
|
+
(useTrustPolicy
|
|
34
|
+
? syntheticTrustPolicy
|
|
35
|
+
: makeSyntheticResourcePolicy(request.resourceArn || '*'));
|
|
36
|
+
const name = useTrustPolicy ? syntheticTrustPolicyName : syntheticResourcePolicyName;
|
|
37
|
+
return createValidatedPolicy(policyDocument, useTrustPolicy ? validateTrustPolicy : validateResourcePolicy, { name });
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Build the default resource policy for an external resource.
|
|
41
|
+
*
|
|
42
|
+
* @param resourceArn the concrete or wildcard resource to allow
|
|
43
|
+
* @returns an allow-all resource policy document
|
|
44
|
+
*/
|
|
45
|
+
function makeSyntheticResourcePolicy(resourceArn) {
|
|
46
|
+
return {
|
|
47
|
+
Version: '2012-10-17',
|
|
48
|
+
Statement: {
|
|
49
|
+
Effect: 'Allow',
|
|
50
|
+
Principal: '*',
|
|
51
|
+
Action: '*',
|
|
52
|
+
Resource: resourceArn
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=generatedPolicies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generatedPolicies.js","sourceRoot":"","sources":["../../../src/simulate/generatedPolicies.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EAEpB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAGnD,MAAM,CAAC,MAAM,2BAA2B,GAAG,uCAAuC,CAAA;AAClF,MAAM,CAAC,MAAM,wBAAwB,GAAG,oCAAoC,CAAA;AAE5E,MAAM,CAAC,MAAM,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;AAEV,MAAM,CAAC,MAAM,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,MAAM,UAAU,sBAAsB,CACpC,OAAkC;IAElC,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IAC1E,MAAM,cAAc,GAClB,OAAO,CAAC,cAAc;QACtB,CAAC,cAAc;YACb,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,2BAA2B,CAAC,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,CAAA;IAC9D,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,2BAA2B,CAAA;IACpF,OAAO,qBAAqB,CAC1B,cAAc,EACd,cAAc,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,sBAAsB,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":"AAEA,OAAO,EAEL,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAEzB,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,2BAA2B,CAAA;AAQlC,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAanF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,EAEL,KAAK,WAAW,EAKjB,MAAM,kBAAkB,CAAA;AAKzB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IAE/B;;OAEG;IACH,eAAe,EAAE,MAAM,GAAG,SAAS,CAAA;IAEnC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;;OAGG;IACH,iBAAiB,EAAE,WAAW,CAAA;IAE9B;;OAEG;IACH,cAAc,EAAE,cAAc,CAAA;IAE9B;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAA;IAE/B;;OAEG;IACH,aAAa,CAAC,EAAE,GAAG,CAAA;IAEnB;;OAEG;IACH,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAA;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CACtD,iBAAiB,EACjB,WAAW,GAAG,aAAa,GAAG,eAAe,CAC9C;IACC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iCAAkC,SAAQ,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC;IAC/F;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;IAE9B;;OAEG;IACH,MAAM,EAAE,oBAAoB,CAAA;CAC7B;AAOD;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG;IAC7E;;OAEG;IACH,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAE7B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACzC,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,gBAAgB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAA;KAAE,EAAE,CAAA;IAEjD;;OAEG;IACH,sBAAsB,EAAE,qBAAqB,EAAE,CAAA;IAE/C;;OAEG;IACH,0BAA0B,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAA;KAAE,EAAE,GAAG,SAAS,CAAA;IAEvE;;OAEG;IACH,oBAAoB,EAAE,qBAAqB,EAAE,CAAA;CAC9C;AAiBD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,gBAAgB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAEhC;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,iBAAiB,EAAE,0BAA0B,EAC7C,aAAa,EAAE,gBAAgB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAMhC;AAED;;;;;;;;GAQG;AACH,wBAAsB,gCAAgC,CACpD,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,gBAAgB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAEhC;AAED;;;;;;;GAOG;AACH,wBAAsB,+BAA+B,CACnD,iBAAiB,EAAE,iCAAiC,EACpD,aAAa,EAAE,gBAAgB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAEhC;AAwXD;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,IAAI,CACrB,yBAAyB,EACzB,mBAAmB,GAAG,gBAAgB,GAAG,WAAW,CACrD,GACA,6BAA6B,CA6B/B;AA4KD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GAAG,SAAS,EAClD,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAQT"}
|