@cloud-copilot/iam-simulate 0.1.0 → 0.1.2
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/condition/baseConditionperatorTests.js +1 -1
- package/dist/cjs/condition/baseConditionperatorTests.js.map +1 -1
- package/dist/cjs/core_engine/coreSimulatorEngine.d.ts.map +1 -1
- package/dist/cjs/core_engine/coreSimulatorEngine.js +4 -1
- package/dist/cjs/core_engine/coreSimulatorEngine.js.map +1 -1
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +8 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/request/request.d.ts +9 -3
- package/dist/cjs/request/request.d.ts.map +1 -1
- package/dist/cjs/request/request.js +4 -7
- package/dist/cjs/request/request.js.map +1 -1
- package/dist/cjs/request/requestResource.d.ts +7 -1
- package/dist/cjs/request/requestResource.d.ts.map +1 -1
- package/dist/cjs/request/requestResource.js +6 -1
- package/dist/cjs/request/requestResource.js.map +1 -1
- package/dist/cjs/services/DefaultServiceAuthorizer.d.ts.map +1 -1
- package/dist/cjs/services/DefaultServiceAuthorizer.js +2 -2
- package/dist/cjs/services/DefaultServiceAuthorizer.js.map +1 -1
- package/dist/cjs/simulation_engine/contextKeys.d.ts +3 -0
- package/dist/cjs/simulation_engine/contextKeys.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/contextKeys.js +53 -0
- package/dist/cjs/simulation_engine/contextKeys.js.map +1 -0
- package/dist/cjs/simulation_engine/simulationEngine.d.ts +25 -0
- package/dist/cjs/simulation_engine/simulationEngine.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/simulationEngine.js +38 -0
- package/dist/cjs/simulation_engine/simulationEngine.js.map +1 -0
- package/dist/esm/StatementAnalysis.d.ts +27 -0
- package/dist/esm/StatementAnalysis.d.ts.map +1 -0
- package/dist/esm/StatementAnalysis.js +2 -0
- package/dist/esm/StatementAnalysis.js.map +1 -0
- package/dist/esm/action/action.d.ts +9 -1
- package/dist/esm/action/action.d.ts.map +1 -1
- package/dist/esm/action/action.js +16 -0
- package/dist/esm/action/action.js.map +1 -1
- package/dist/esm/condition/arn/ArnEquals.d.ts +3 -0
- package/dist/esm/condition/arn/ArnEquals.d.ts.map +1 -0
- package/dist/esm/condition/arn/ArnEquals.js +8 -0
- package/dist/esm/condition/arn/ArnEquals.js.map +1 -0
- package/dist/esm/condition/arn/ArnLike.d.ts +3 -0
- package/dist/esm/condition/arn/ArnLike.d.ts.map +1 -0
- package/dist/esm/condition/arn/ArnLike.js +47 -0
- package/dist/esm/condition/arn/ArnLike.js.map +1 -0
- package/dist/esm/condition/arn/ArnNotEquals.d.ts +3 -0
- package/dist/esm/condition/arn/ArnNotEquals.d.ts.map +1 -0
- package/dist/esm/condition/arn/ArnNotEquals.js +8 -0
- package/dist/esm/condition/arn/ArnNotEquals.js.map +1 -0
- package/dist/esm/condition/arn/ArnNotLike.d.ts +3 -0
- package/dist/esm/condition/arn/ArnNotLike.d.ts.map +1 -0
- package/dist/esm/condition/arn/ArnNotLike.js +10 -0
- package/dist/esm/condition/arn/ArnNotLike.js.map +1 -0
- package/dist/esm/condition/baseConditionperatorTests.d.ts +12 -0
- package/dist/esm/condition/baseConditionperatorTests.d.ts.map +1 -0
- package/dist/esm/condition/baseConditionperatorTests.js +18 -0
- package/dist/esm/condition/baseConditionperatorTests.js.map +1 -0
- package/dist/esm/condition/binary/BinaryEquals.d.ts +7 -0
- package/dist/esm/condition/binary/BinaryEquals.d.ts.map +1 -0
- package/dist/esm/condition/binary/BinaryEquals.js +13 -0
- package/dist/esm/condition/binary/BinaryEquals.js.map +1 -0
- package/dist/esm/condition/boolean/Bool.d.ts +3 -0
- package/dist/esm/condition/boolean/Bool.d.ts.map +1 -0
- package/dist/esm/condition/boolean/Bool.js +17 -0
- package/dist/esm/condition/boolean/Bool.js.map +1 -0
- package/dist/esm/condition/condition.d.ts +1 -0
- package/dist/esm/condition/condition.d.ts.map +1 -1
- package/dist/esm/condition/condition.js +60 -11
- package/dist/esm/condition/condition.js.map +1 -1
- package/dist/esm/condition/date/DateEquals.d.ts +3 -0
- package/dist/esm/condition/date/DateEquals.d.ts.map +1 -0
- package/dist/esm/condition/date/DateEquals.js +14 -0
- package/dist/esm/condition/date/DateEquals.js.map +1 -0
- package/dist/esm/condition/date/DateGreaterThan.d.ts +3 -0
- package/dist/esm/condition/date/DateGreaterThan.d.ts.map +1 -0
- package/dist/esm/condition/date/DateGreaterThan.js +14 -0
- package/dist/esm/condition/date/DateGreaterThan.js.map +1 -0
- package/dist/esm/condition/date/DateGreaterThanEquals.d.ts +3 -0
- package/dist/esm/condition/date/DateGreaterThanEquals.d.ts.map +1 -0
- package/dist/esm/condition/date/DateGreaterThanEquals.js +14 -0
- package/dist/esm/condition/date/DateGreaterThanEquals.js.map +1 -0
- package/dist/esm/condition/date/DateLessThan.d.ts +3 -0
- package/dist/esm/condition/date/DateLessThan.d.ts.map +1 -0
- package/dist/esm/condition/date/DateLessThan.js +14 -0
- package/dist/esm/condition/date/DateLessThan.js.map +1 -0
- package/dist/esm/condition/date/DateLessThanEquals.d.ts +3 -0
- package/dist/esm/condition/date/DateLessThanEquals.d.ts.map +1 -0
- package/dist/esm/condition/date/DateLessThanEquals.js +14 -0
- package/dist/esm/condition/date/DateLessThanEquals.js.map +1 -0
- package/dist/esm/condition/date/DateNotEquals.d.ts +3 -0
- package/dist/esm/condition/date/DateNotEquals.d.ts.map +1 -0
- package/dist/esm/condition/date/DateNotEquals.js +26 -0
- package/dist/esm/condition/date/DateNotEquals.js.map +1 -0
- package/dist/esm/condition/date/date.d.ts +17 -0
- package/dist/esm/condition/date/date.d.ts.map +1 -0
- package/dist/esm/condition/date/date.js +38 -0
- package/dist/esm/condition/date/date.js.map +1 -0
- package/dist/esm/condition/ipaddress/IpAddress.d.ts +3 -0
- package/dist/esm/condition/ipaddress/IpAddress.d.ts.map +1 -0
- package/dist/esm/condition/ipaddress/IpAddress.js +24 -0
- package/dist/esm/condition/ipaddress/IpAddress.js.map +1 -0
- package/dist/esm/condition/ipaddress/NotIpAddress.d.ts +3 -0
- package/dist/esm/condition/ipaddress/NotIpAddress.d.ts.map +1 -0
- package/dist/esm/condition/ipaddress/NotIpAddress.js +28 -0
- package/dist/esm/condition/ipaddress/NotIpAddress.js.map +1 -0
- package/dist/esm/condition/ipaddress/ipv4.d.ts +24 -0
- package/dist/esm/condition/ipaddress/ipv4.d.ts.map +1 -0
- package/dist/esm/condition/ipaddress/ipv4.js +54 -0
- package/dist/esm/condition/ipaddress/ipv4.js.map +1 -0
- package/dist/esm/condition/ipaddress/ipv6.d.ts +24 -0
- package/dist/esm/condition/ipaddress/ipv6.d.ts.map +1 -0
- package/dist/esm/condition/ipaddress/ipv6.js +106 -0
- package/dist/esm/condition/ipaddress/ipv6.js.map +1 -0
- package/dist/esm/condition/numeric/NumericEquals.d.ts +3 -0
- package/dist/esm/condition/numeric/NumericEquals.d.ts.map +1 -0
- package/dist/esm/condition/numeric/NumericEquals.js +14 -0
- package/dist/esm/condition/numeric/NumericEquals.js.map +1 -0
- package/dist/esm/condition/numeric/NumericGreaterThan.d.ts +3 -0
- package/dist/esm/condition/numeric/NumericGreaterThan.d.ts.map +1 -0
- package/dist/esm/condition/numeric/NumericGreaterThan.js +14 -0
- package/dist/esm/condition/numeric/NumericGreaterThan.js.map +1 -0
- package/dist/esm/condition/numeric/NumericGreaterThanEquals.d.ts +3 -0
- package/dist/esm/condition/numeric/NumericGreaterThanEquals.d.ts.map +1 -0
- package/dist/esm/condition/numeric/NumericGreaterThanEquals.js +14 -0
- package/dist/esm/condition/numeric/NumericGreaterThanEquals.js.map +1 -0
- package/dist/esm/condition/numeric/NumericLessThan.d.ts +3 -0
- package/dist/esm/condition/numeric/NumericLessThan.d.ts.map +1 -0
- package/dist/esm/condition/numeric/NumericLessThan.js +14 -0
- package/dist/esm/condition/numeric/NumericLessThan.js.map +1 -0
- package/dist/esm/condition/numeric/NumericLessThanEquals.d.ts +3 -0
- package/dist/esm/condition/numeric/NumericLessThanEquals.d.ts.map +1 -0
- package/dist/esm/condition/numeric/NumericLessThanEquals.js +14 -0
- package/dist/esm/condition/numeric/NumericLessThanEquals.js.map +1 -0
- package/dist/esm/condition/numeric/NumericNotEquals.d.ts +3 -0
- package/dist/esm/condition/numeric/NumericNotEquals.d.ts.map +1 -0
- package/dist/esm/condition/numeric/NumericNotEquals.js +26 -0
- package/dist/esm/condition/numeric/NumericNotEquals.js.map +1 -0
- package/dist/esm/condition/numeric/numeric.d.ts +17 -0
- package/dist/esm/condition/numeric/numeric.d.ts.map +1 -0
- package/dist/esm/condition/numeric/numeric.js +37 -0
- package/dist/esm/condition/numeric/numeric.js.map +1 -0
- package/dist/esm/condition/string/StringEquals.d.ts.map +1 -0
- package/dist/esm/condition/string/StringEquals.js.map +1 -0
- package/dist/esm/condition/string/StringEqualsIgnoreCase.d.ts +3 -0
- package/dist/esm/condition/string/StringEqualsIgnoreCase.d.ts.map +1 -0
- package/dist/esm/condition/string/StringEqualsIgnoreCase.js +14 -0
- package/dist/esm/condition/string/StringEqualsIgnoreCase.js.map +1 -0
- package/dist/esm/condition/string/StringLike.d.ts +3 -0
- package/dist/esm/condition/string/StringLike.d.ts.map +1 -0
- package/dist/esm/condition/string/StringLike.js +11 -0
- package/dist/esm/condition/string/StringLike.js.map +1 -0
- package/dist/esm/condition/string/StringNotEquals.d.ts +3 -0
- package/dist/esm/condition/string/StringNotEquals.d.ts.map +1 -0
- package/dist/esm/condition/string/StringNotEquals.js +11 -0
- package/dist/esm/condition/string/StringNotEquals.js.map +1 -0
- package/dist/esm/condition/string/StringNotEqualsIgnoreCase.d.ts +3 -0
- package/dist/esm/condition/string/StringNotEqualsIgnoreCase.d.ts.map +1 -0
- package/dist/esm/condition/string/StringNotEqualsIgnoreCase.js +10 -0
- package/dist/esm/condition/string/StringNotEqualsIgnoreCase.js.map +1 -0
- package/dist/esm/condition/string/StringNotLike.d.ts +3 -0
- package/dist/esm/condition/string/StringNotLike.d.ts.map +1 -0
- package/dist/esm/condition/string/StringNotLike.js +10 -0
- package/dist/esm/condition/string/StringNotLike.js.map +1 -0
- package/dist/esm/core_engine/coreSimulatorEngine.d.ts +44 -0
- package/dist/esm/core_engine/coreSimulatorEngine.d.ts.map +1 -0
- package/dist/esm/core_engine/coreSimulatorEngine.js +58 -0
- package/dist/esm/core_engine/coreSimulatorEngine.js.map +1 -0
- package/dist/esm/evaluate.d.ts +1 -1
- package/dist/esm/evaluate.d.ts.map +1 -1
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/principal/principal.d.ts +1 -2
- package/dist/esm/principal/principal.d.ts.map +1 -1
- package/dist/esm/request/request.d.ts +9 -5
- package/dist/esm/request/request.d.ts.map +1 -1
- package/dist/esm/request/request.js +4 -8
- package/dist/esm/request/request.js.map +1 -1
- package/dist/esm/request/requestResource.d.ts +7 -1
- package/dist/esm/request/requestResource.d.ts.map +1 -1
- package/dist/esm/request/requestResource.js +5 -1
- package/dist/esm/request/requestResource.js.map +1 -1
- package/dist/esm/resource/resource.d.ts +16 -1
- package/dist/esm/resource/resource.d.ts.map +1 -1
- package/dist/esm/resource/resource.js +24 -26
- package/dist/esm/resource/resource.js.map +1 -1
- package/dist/esm/services/DefaultServiceAuthorizer.d.ts +12 -0
- package/dist/esm/services/DefaultServiceAuthorizer.d.ts.map +1 -0
- package/dist/esm/services/DefaultServiceAuthorizer.js +75 -0
- package/dist/esm/services/DefaultServiceAuthorizer.js.map +1 -0
- package/dist/esm/services/ServiceAuthorizer.d.ts +11 -0
- package/dist/esm/services/ServiceAuthorizer.d.ts.map +1 -0
- package/dist/esm/services/ServiceAuthorizer.js +2 -0
- package/dist/esm/services/ServiceAuthorizer.js.map +1 -0
- package/dist/esm/simulation_engine/contextKeys.d.ts +3 -0
- package/dist/esm/simulation_engine/contextKeys.d.ts.map +1 -0
- package/dist/esm/simulation_engine/contextKeys.js +49 -0
- package/dist/esm/simulation_engine/contextKeys.js.map +1 -0
- package/dist/esm/simulation_engine/simulationEngine.d.ts +25 -0
- package/dist/esm/simulation_engine/simulationEngine.d.ts.map +1 -0
- package/dist/esm/simulation_engine/simulationEngine.js +35 -0
- package/dist/esm/simulation_engine/simulationEngine.js.map +1 -0
- package/dist/esm/util.d.ts +32 -0
- package/dist/esm/util.d.ts.map +1 -1
- package/dist/esm/util.js +78 -2
- package/dist/esm/util.js.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/action.d.ts +0 -4
- package/dist/cjs/action.d.ts.map +0 -1
- package/dist/cjs/action.js +0 -21
- package/dist/cjs/action.js.map +0 -1
- package/dist/cjs/condition/strings/StringEquals.d.ts.map +0 -1
- package/dist/cjs/condition/strings/StringEquals.js +0 -14
- package/dist/cjs/condition/strings/StringEquals.js.map +0 -1
- package/dist/cjs/request/requestSupplementalData.d.ts +0 -19
- package/dist/cjs/request/requestSupplementalData.d.ts.map +0 -1
- package/dist/cjs/request/requestSupplementalData.js +0 -37
- package/dist/cjs/request/requestSupplementalData.js.map +0 -1
- package/dist/cjs/request.d.ts +0 -15
- package/dist/cjs/request.d.ts.map +0 -1
- package/dist/cjs/request.js +0 -17
- package/dist/cjs/request.js.map +0 -1
- package/dist/esm/action.d.ts +0 -4
- package/dist/esm/action.d.ts.map +0 -1
- package/dist/esm/action.js +0 -18
- package/dist/esm/action.js.map +0 -1
- package/dist/esm/condition/strings/StringEquals.d.ts +0 -3
- package/dist/esm/condition/strings/StringEquals.d.ts.map +0 -1
- package/dist/esm/condition/strings/StringEquals.js.map +0 -1
- package/dist/esm/request/requestSupplementalData.d.ts +0 -19
- package/dist/esm/request/requestSupplementalData.d.ts.map +0 -1
- package/dist/esm/request/requestSupplementalData.js +0 -30
- package/dist/esm/request/requestSupplementalData.js.map +0 -1
- package/dist/esm/request.d.ts +0 -15
- package/dist/esm/request.d.ts.map +0 -1
- package/dist/esm/request.js +0 -9
- package/dist/esm/request.js.map +0 -1
- /package/dist/{cjs/condition/strings → esm/condition/string}/StringEquals.d.ts +0 -0
- /package/dist/esm/condition/{strings → string}/StringEquals.js +0 -0
|
@@ -9,7 +9,7 @@ function testOperator(name, tests, operator) {
|
|
|
9
9
|
for (const test of tests) {
|
|
10
10
|
it(test.name, () => {
|
|
11
11
|
//Given the request
|
|
12
|
-
const request = new request_js_1.AwsRequestImpl('', '', '', new requestContext_js_1.RequestContextImpl(test.requestContext || {}));
|
|
12
|
+
const request = new request_js_1.AwsRequestImpl('', { resource: '', accountId: '' }, '', new requestContext_js_1.RequestContextImpl(test.requestContext || {}));
|
|
13
13
|
//When the condition is evaluated
|
|
14
14
|
const result = operator.matches(request, test.testValue, test.policyValues);
|
|
15
15
|
//Then the result should be as expected
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseConditionperatorTests.js","sourceRoot":"","sources":["../../../src/condition/baseConditionperatorTests.ts"],"names":[],"mappings":";;AAaA,oCAcC;AA3BD,mCAAyC;AACzC,sDAAsD;AACtD,4DAAyD;AAWzD,SAAgB,YAAY,CAAC,IAAY,EAAE,KAAyB,EAAE,QAA+B;IACnG,IAAA,iBAAQ,EAAC,IAAI,EAAE,EAAE,CAAC,EAAE;QAClB,KAAI,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACxB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;gBACjB,mBAAmB;gBACnB,MAAM,OAAO,GAAG,IAAI,2BAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,sCAAkB,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"baseConditionperatorTests.js","sourceRoot":"","sources":["../../../src/condition/baseConditionperatorTests.ts"],"names":[],"mappings":";;AAaA,oCAcC;AA3BD,mCAAyC;AACzC,sDAAsD;AACtD,4DAAyD;AAWzD,SAAgB,YAAY,CAAC,IAAY,EAAE,KAAyB,EAAE,QAA+B;IACnG,IAAA,iBAAQ,EAAC,IAAI,EAAE,EAAE,CAAC,EAAE;QAClB,KAAI,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACxB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;gBACjB,mBAAmB;gBACnB,MAAM,OAAO,GAAG,IAAI,2BAAc,CAAC,EAAE,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAC,EAAE,EAAE,EAAE,IAAI,sCAAkB,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAA;gBAC5H,iCAAiC;gBACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;gBAE3E,uCAAuC;gBACvC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACpC,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coreSimulatorEngine.d.ts","sourceRoot":"","sources":["../../../src/core_engine/coreSimulatorEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAGnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,OAAO,EAAE,UAAU,CAAC;IAEpB;;OAEG;IACH,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAC3B;AAID;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,oBAAoB,GAAG,gBAAgB,CAOzE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"coreSimulatorEngine.d.ts","sourceRoot":"","sources":["../../../src/core_engine/coreSimulatorEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAGnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,OAAO,EAAE,UAAU,CAAC;IAEpB;;OAEG;IACH,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAC3B;AAID;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,oBAAoB,GAAG,gBAAgB,CAOzE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,iBAAiB,CAMrF;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,GAAG,iBAAiB,EAAE,CAe5G"}
|
|
@@ -33,7 +33,10 @@ function authorize(request) {
|
|
|
33
33
|
*/
|
|
34
34
|
function getServiceAuthorizer(request) {
|
|
35
35
|
const serviceName = request.request.action.service().toLowerCase();
|
|
36
|
-
|
|
36
|
+
if (serviceEngines[serviceName]) {
|
|
37
|
+
return new serviceEngines[serviceName]();
|
|
38
|
+
}
|
|
39
|
+
return new DefaultServiceAuthorizer_js_1.DefaultServiceAuthorizer;
|
|
37
40
|
}
|
|
38
41
|
/**
|
|
39
42
|
* Analyzes a set of identity policies
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coreSimulatorEngine.js","sourceRoot":"","sources":["../../../src/core_engine/coreSimulatorEngine.ts"],"names":[],"mappings":";;AAmCA,8BAOC;AASD,
|
|
1
|
+
{"version":3,"file":"coreSimulatorEngine.js","sourceRoot":"","sources":["../../../src/core_engine/coreSimulatorEngine.ts"],"names":[],"mappings":";;AAmCA,8BAOC;AASD,oDAMC;AASD,0DAeC;AAhFD,mDAAqE;AACrE,4DAAqE;AAGrE,yDAA2E;AAC3E,yFAAmF;AAmBnF,MAAM,cAAc,GAAgD,EAAE,CAAC;AAEvE;;;;;;;GAOG;AACH,SAAgB,SAAS,CAAC,OAA6B;IACrD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5F,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACxD,OAAO,iBAAiB,CAAC,SAAS,CAAC;QACjC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,kBAAkB,EAAE,gBAAgB;KACrC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAAC,OAA6B;IAChE,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;IACnE,IAAG,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,sDAAwB,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAC,gBAA0B,EAAE,OAAmB;IACrF,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,KAAI,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACrC,KAAI,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;YAC3C,QAAQ,CAAC,IAAI,CAAC;gBACZ,SAAS;gBACT,aAAa,EAAE,IAAA,8CAAgC,EAAC,OAAO,EAAE,SAAS,CAAC;gBACnE,WAAW,EAAE,IAAA,0CAA8B,EAAC,OAAO,EAAE,SAAS,CAAC;gBAC/D,cAAc,EAAE,IAAA,uCAAwB,EAAC,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC;gBACzE,cAAc,EAAE,OAAO;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1 +1,5 @@
|
|
|
1
|
+
export { authorize, type AuthorizationRequest } from './core_engine/coreSimulatorEngine.js';
|
|
2
|
+
export { type EvaluationResult } from './evaluate.js';
|
|
3
|
+
export { AwsRequestImpl, type AwsRequest } from './request/request.js';
|
|
4
|
+
export { RequestContextImpl, type RequestContext } from './requestContext.js';
|
|
1
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RequestContextImpl = exports.AwsRequestImpl = exports.authorize = void 0;
|
|
4
|
+
var coreSimulatorEngine_js_1 = require("./core_engine/coreSimulatorEngine.js");
|
|
5
|
+
Object.defineProperty(exports, "authorize", { enumerable: true, get: function () { return coreSimulatorEngine_js_1.authorize; } });
|
|
6
|
+
var request_js_1 = require("./request/request.js");
|
|
7
|
+
Object.defineProperty(exports, "AwsRequestImpl", { enumerable: true, get: function () { return request_js_1.AwsRequestImpl; } });
|
|
8
|
+
var requestContext_js_1 = require("./requestContext.js");
|
|
9
|
+
Object.defineProperty(exports, "RequestContextImpl", { enumerable: true, get: function () { return requestContext_js_1.RequestContextImpl; } });
|
|
2
10
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,+EAA4F;AAAnF,mHAAA,SAAS,OAAA;AAElB,mDAAuE;AAA9D,4GAAA,cAAc,OAAA;AACvB,yDAA8E;AAArE,uHAAA,kBAAkB,OAAA"}
|
|
@@ -14,7 +14,7 @@ export interface AwsRequest {
|
|
|
14
14
|
/**
|
|
15
15
|
* The resource to be acted upon
|
|
16
16
|
*/
|
|
17
|
-
resource
|
|
17
|
+
resource: RequestResource;
|
|
18
18
|
/**
|
|
19
19
|
* The context of the request
|
|
20
20
|
*/
|
|
@@ -37,10 +37,16 @@ export interface AwsRequest {
|
|
|
37
37
|
}
|
|
38
38
|
export declare class AwsRequestImpl implements AwsRequest {
|
|
39
39
|
readonly principalString: string;
|
|
40
|
-
readonly
|
|
40
|
+
readonly resourceIdentifier: {
|
|
41
|
+
resource: string;
|
|
42
|
+
accountId: string;
|
|
43
|
+
};
|
|
41
44
|
readonly actionString: string;
|
|
42
45
|
readonly context: RequestContext;
|
|
43
|
-
constructor(principalString: string,
|
|
46
|
+
constructor(principalString: string, resourceIdentifier: {
|
|
47
|
+
resource: string;
|
|
48
|
+
accountId: string;
|
|
49
|
+
}, actionString: string, context: RequestContext);
|
|
44
50
|
get action(): RequestAction;
|
|
45
51
|
get resource(): RequestResource;
|
|
46
52
|
get principal(): RequestPrincipal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/request/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAqB,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAwB,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAuB,MAAM,sBAAsB,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,gBAAgB,CAAC;IAE5B;;OAEG;IACH,MAAM,EAAE,aAAa,CAAC;IAEtB;;OAEG;IACH,QAAQ,
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/request/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAqB,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAwB,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAuB,MAAM,sBAAsB,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,gBAAgB,CAAC;IAE5B;;OAEG;IACH,MAAM,EAAE,aAAa,CAAC;IAEtB;;OAEG;IACH,QAAQ,EAAE,eAAe,CAAC;IAE1B;;OAEG;IACH,OAAO,EAAE,cAAc,CAAA;IAEvB;;;;;;OAMG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAEvC;;;;;OAKG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;CAC7C;AAED,qBAAa,cAAe,YAAW,UAAU;aAEnB,eAAe,EAAE,MAAM;aACvB,kBAAkB,EAAE;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC;aACzD,YAAY,EAAE,MAAM;aACpB,OAAO,EAAE,cAAc;gBAHvB,eAAe,EAAE,MAAM,EACvB,kBAAkB,EAAE;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,EACzD,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,cAAc;IAInD,IAAI,MAAM,IAAI,aAAa,CAE1B;IAED,IAAI,QAAQ,IAAI,eAAe,CAE9B;IAED,IAAI,SAAS,IAAI,gBAAgB,CAEhC;IAGM,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKtC,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;CAOnD"}
|
|
@@ -6,12 +6,12 @@ const requestPrincipal_js_1 = require("./requestPrincipal.js");
|
|
|
6
6
|
const requestResource_js_1 = require("./requestResource.js");
|
|
7
7
|
class AwsRequestImpl {
|
|
8
8
|
principalString;
|
|
9
|
-
|
|
9
|
+
resourceIdentifier;
|
|
10
10
|
actionString;
|
|
11
11
|
context;
|
|
12
|
-
constructor(principalString,
|
|
12
|
+
constructor(principalString, resourceIdentifier, actionString, context) {
|
|
13
13
|
this.principalString = principalString;
|
|
14
|
-
this.
|
|
14
|
+
this.resourceIdentifier = resourceIdentifier;
|
|
15
15
|
this.actionString = actionString;
|
|
16
16
|
this.context = context;
|
|
17
17
|
}
|
|
@@ -19,10 +19,7 @@ class AwsRequestImpl {
|
|
|
19
19
|
return new requestAction_js_1.RequestActionImpl(this.actionString);
|
|
20
20
|
}
|
|
21
21
|
get resource() {
|
|
22
|
-
|
|
23
|
-
throw new Error('Resource is undefined');
|
|
24
|
-
}
|
|
25
|
-
return new requestResource_js_1.ResourceRequestImpl(this.resourceString);
|
|
22
|
+
return new requestResource_js_1.ResourceRequestImpl(this.resourceIdentifier.resource, this.resourceIdentifier.accountId);
|
|
26
23
|
}
|
|
27
24
|
get principal() {
|
|
28
25
|
return new requestPrincipal_js_1.RequestPrincipalImpl(this.principalString);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/request/request.ts"],"names":[],"mappings":";;;AACA,yDAAsE;AACtE,+DAA+E;AAC/E,6DAA4E;AAyC5E,MAAa,cAAc;IAEG;IACA;IACA;IACA;IAH5B,YAA4B,eAAuB,EACvB,
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/request/request.ts"],"names":[],"mappings":";;;AACA,yDAAsE;AACtE,+DAA+E;AAC/E,6DAA4E;AAyC5E,MAAa,cAAc;IAEG;IACA;IACA;IACA;IAH5B,YAA4B,eAAuB,EACvB,kBAAyD,EACzD,YAAoB,EACpB,OAAuB;QAHvB,oBAAe,GAAf,eAAe,CAAQ;QACvB,uBAAkB,GAAlB,kBAAkB,CAAuC;QACzD,iBAAY,GAAZ,YAAY,CAAQ;QACpB,YAAO,GAAP,OAAO,CAAgB;IAEnD,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,oCAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,wCAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACtG,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,0CAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACxD,CAAC;IAGM,gBAAgB,CAAC,GAAW;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAGM,kBAAkB,CAAC,GAAW;QACnC,IAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAA;QAChD,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;CAEF;AAlCD,wCAkCC"}
|
|
@@ -23,15 +23,21 @@ export interface RequestResource {
|
|
|
23
23
|
* The resource of the ARN
|
|
24
24
|
*/
|
|
25
25
|
resource(): string;
|
|
26
|
+
/**
|
|
27
|
+
* The account ID of the resource, independent of what is in the ARN
|
|
28
|
+
*/
|
|
29
|
+
accountId(): string;
|
|
26
30
|
}
|
|
27
31
|
export declare class ResourceRequestImpl implements RequestResource {
|
|
28
32
|
private readonly rawValue;
|
|
29
|
-
|
|
33
|
+
private readonly accountIdString;
|
|
34
|
+
constructor(rawValue: string, accountIdString: string);
|
|
30
35
|
partition(): string;
|
|
31
36
|
service(): string;
|
|
32
37
|
region(): string;
|
|
33
38
|
account(): string;
|
|
34
39
|
resource(): string;
|
|
35
40
|
value(): string;
|
|
41
|
+
accountId(): string;
|
|
36
42
|
}
|
|
37
43
|
//# sourceMappingURL=requestResource.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestResource.d.ts","sourceRoot":"","sources":["../../../src/request/requestResource.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,IAAI,MAAM,CAAA;IAEf;;OAEG;IACH,SAAS,IAAI,MAAM,CAAA;IAEnB;;OAEG;IACH,OAAO,IAAI,MAAM,CAAA;IAEjB;;OAEG;IACH,MAAM,IAAI,MAAM,CAAA;IAEhB;;OAEG;IACH,OAAO,IAAI,MAAM,CAAA;IAEjB;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"requestResource.d.ts","sourceRoot":"","sources":["../../../src/request/requestResource.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,IAAI,MAAM,CAAA;IAEf;;OAEG;IACH,SAAS,IAAI,MAAM,CAAA;IAEnB;;OAEG;IACH,OAAO,IAAI,MAAM,CAAA;IAEjB;;OAEG;IACH,MAAM,IAAI,MAAM,CAAA;IAEhB;;OAEG;IACH,OAAO,IAAI,MAAM,CAAA;IAEjB;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAA;IAElB;;OAEG;IACH,SAAS,IAAI,MAAM,CAAA;CACpB;AAGD,qBAAa,mBAAoB,YAAW,eAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAU,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAlD,QAAQ,EAAE,MAAM,EAAmB,eAAe,EAAE,MAAM;IAEvF,SAAS,IAAI,MAAM;IAInB,OAAO,IAAI,MAAM;IAIjB,MAAM,IAAI,MAAM;IAIhB,OAAO,IAAI,MAAM;IAIjB,QAAQ,IAAI,MAAM;IAIlB,KAAK,IAAI,MAAM;IAIf,SAAS,IAAI,MAAM;CAGpB"}
|
|
@@ -3,8 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ResourceRequestImpl = void 0;
|
|
4
4
|
class ResourceRequestImpl {
|
|
5
5
|
rawValue;
|
|
6
|
-
|
|
6
|
+
accountIdString;
|
|
7
|
+
constructor(rawValue, accountIdString) {
|
|
7
8
|
this.rawValue = rawValue;
|
|
9
|
+
this.accountIdString = accountIdString;
|
|
8
10
|
}
|
|
9
11
|
partition() {
|
|
10
12
|
return this.value().split(":").at(1);
|
|
@@ -24,6 +26,9 @@ class ResourceRequestImpl {
|
|
|
24
26
|
value() {
|
|
25
27
|
return this.rawValue;
|
|
26
28
|
}
|
|
29
|
+
accountId() {
|
|
30
|
+
return this.accountIdString;
|
|
31
|
+
}
|
|
27
32
|
}
|
|
28
33
|
exports.ResourceRequestImpl = ResourceRequestImpl;
|
|
29
34
|
//# sourceMappingURL=requestResource.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestResource.js","sourceRoot":"","sources":["../../../src/request/requestResource.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"requestResource.js","sourceRoot":"","sources":["../../../src/request/requestResource.ts"],"names":[],"mappings":";;;AAuCA,MAAa,mBAAmB;IACD;IAAmC;IAAhE,YAA6B,QAAgB,EAAmB,eAAuB;QAA1D,aAAQ,GAAR,QAAQ,CAAQ;QAAmB,oBAAe,GAAf,eAAe,CAAQ;IAAI,CAAC;IAE5F,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;IACvC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;IACvC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;IACvC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;IACvC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACnD,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,eAAe,CAAA;IAC7B,CAAC;CACF;AA9BD,kDA8BC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultServiceAuthorizer.d.ts","sourceRoot":"","sources":["../../../src/services/DefaultServiceAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultServiceAuthorizer.d.ts","sourceRoot":"","sources":["../../../src/services/DefaultServiceAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAExF,qBAAa,wBAAyB,YAAW,iBAAiB;IACzD,SAAS,CAAC,OAAO,EAAE,2BAA2B,GAAG,gBAAgB;IAqBjE,uBAAuB,CAAC,OAAO,EAAE,2BAA2B,GAAG,gBAAgB;IAoB/E,uBAAuB,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO;IAU9D,4BAA4B,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO;IAUnE,2BAA2B,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO;IAUlE,6BAA6B,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO;CAS5E"}
|
|
@@ -4,8 +4,8 @@ exports.DefaultServiceAuthorizer = void 0;
|
|
|
4
4
|
class DefaultServiceAuthorizer {
|
|
5
5
|
authorize(request) {
|
|
6
6
|
const identityStatementResult = this.identityStatementResult(request);
|
|
7
|
-
const principalAccount = request.request.
|
|
8
|
-
const resourceAccount = request.request.
|
|
7
|
+
const principalAccount = request.request.principal.accountId();
|
|
8
|
+
const resourceAccount = request.request.resource?.accountId();
|
|
9
9
|
/**
|
|
10
10
|
* Add checks for:
|
|
11
11
|
* * resource policies
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultServiceAuthorizer.js","sourceRoot":"","sources":["../../../src/services/DefaultServiceAuthorizer.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"DefaultServiceAuthorizer.js","sourceRoot":"","sources":["../../../src/services/DefaultServiceAuthorizer.ts"],"names":[],"mappings":";;;AAIA,MAAa,wBAAwB;IAC5B,SAAS,CAAC,OAAoC;QACnD,MAAM,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACtE,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,CAAA;QAC9D,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAA;QAC7D;;;;;;;WAOG;QACH,IAAG,uBAAuB,KAAK,SAAS,EAAE,CAAC;YACzC,IAAG,gBAAgB,KAAK,eAAe,EAAE,CAAC;gBACxC,OAAO,uBAAuB,CAAA;YAChC,CAAC;YACD,OAAO,kBAAkB,CAAA;QAC3B,CAAC;QACD,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAEM,uBAAuB,CAAC,OAAoC;QACjE,MAAM,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC;QACjG,IAAG,YAAY,EAAE,CAAC;YAChB,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAED,MAAM,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,MAAM,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,IAAG,aAAa,EAAE,CAAC;YACjB,OAAO,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9C,CAAC;QAED,MAAM,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC;QACjG,IAAG,aAAa,EAAE,CAAC;YACjB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,kBAAkB,CAAA;IAC3B,CAAC;IAEM,uBAAuB,CAAC,SAA4B;QACzD,IAAG,SAAS,CAAC,aAAa;YACxB,SAAS,CAAC,WAAW;YACrB,SAAS,CAAC,cAAc,KAAK,OAAO;YACpC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,OAAO,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,4BAA4B,CAAC,SAA4B;QAC9D,IAAG,SAAS,CAAC,aAAa;YACxB,SAAS,CAAC,WAAW;YACrB,SAAS,CAAC,cAAc,KAAK,SAAS;YACtC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,OAAO,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAEM,2BAA2B,CAAC,SAA4B;QAC7D,IAAG,SAAS,CAAC,aAAa;YACxB,SAAS,CAAC,WAAW;YACrB,SAAS,CAAC,cAAc,KAAK,SAAS;YACtC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAEM,6BAA6B,CAAC,SAA4B;QAC/D,IAAG,SAAS,CAAC,aAAa;YACxB,SAAS,CAAC,WAAW;YACrB,SAAS,CAAC,cAAc,KAAK,OAAO;YACpC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAjFD,4DAiFC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextKeys.d.ts","sourceRoot":"","sources":["../../../src/simulation_engine/contextKeys.ts"],"names":[],"mappings":"AAEA,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA4BvH;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAsB7D"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.allowedContextKeysForRequest = allowedContextKeysForRequest;
|
|
4
|
+
exports.convertPatternToRegex = convertPatternToRegex;
|
|
5
|
+
const iam_data_1 = require("@cloud-copilot/iam-data");
|
|
6
|
+
async function allowedContextKeysForRequest(service, action, resource) {
|
|
7
|
+
const actionDetails = await (0, iam_data_1.iamActionDetails)(service, action);
|
|
8
|
+
const actionConditionKeys = actionDetails.conditionKeys;
|
|
9
|
+
if (actionDetails.resourceTypes.length === 0) {
|
|
10
|
+
return actionConditionKeys;
|
|
11
|
+
}
|
|
12
|
+
const matchingResourceTypes = [];
|
|
13
|
+
for (const rt of actionDetails.resourceTypes) {
|
|
14
|
+
const resourceType = await (0, iam_data_1.iamResourceTypeDetails)(service, rt.name);
|
|
15
|
+
const pattern = convertPatternToRegex(resourceType.arn);
|
|
16
|
+
const match = resource.match(new RegExp(pattern));
|
|
17
|
+
if (match) {
|
|
18
|
+
matchingResourceTypes.push(resourceType);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (matchingResourceTypes.length != 1) {
|
|
22
|
+
const matchNames = matchingResourceTypes.map(rt => rt.key).join(", ");
|
|
23
|
+
throw new Error(`found ${matchingResourceTypes.length} matching resource types for ${resource}: ${matchNames}`);
|
|
24
|
+
}
|
|
25
|
+
console.log(matchingResourceTypes[0].key);
|
|
26
|
+
return [
|
|
27
|
+
...matchingResourceTypes[0].conditionKeys,
|
|
28
|
+
...actionConditionKeys
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
function convertPatternToRegex(pattern) {
|
|
32
|
+
const regex = pattern.replace(/\$\{.*?\}/g, (match) => {
|
|
33
|
+
const name = match.substring(2, match.length - 1);
|
|
34
|
+
const camelName = name.at(0)?.toLowerCase() + name.substring(1);
|
|
35
|
+
return `(?<${camelName}>(.*?))`;
|
|
36
|
+
});
|
|
37
|
+
return `^${regex}$`;
|
|
38
|
+
// const parts = pattern.split('/')
|
|
39
|
+
// const lastPart = parts[parts.length - 1]
|
|
40
|
+
// const modifiedParts = parts.map((part) => {
|
|
41
|
+
// if (part.startsWith('${') && part.endsWith('}')) {
|
|
42
|
+
// const name = part.substring(2, part.length - 1)
|
|
43
|
+
// const camelName = name.at(0)?.toLowerCase() + name.substring(1)
|
|
44
|
+
// if (part === lastPart) {
|
|
45
|
+
// return `(?<${camelName}>(.*))`
|
|
46
|
+
// }
|
|
47
|
+
// return `(?<${camelName}>([^\/]+))`
|
|
48
|
+
// }
|
|
49
|
+
// return part
|
|
50
|
+
// })
|
|
51
|
+
// return modifiedParts.join('\/')
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=contextKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextKeys.js","sourceRoot":"","sources":["../../../src/simulation_engine/contextKeys.ts"],"names":[],"mappings":";;AAEA,oEA4BC;AAED,sDAsBC;AAtDD,sDAAiG;AAE1F,KAAK,UAAU,4BAA4B,CAAC,OAAe,EAAE,MAAc,EAAE,QAAgB;IAClG,MAAM,aAAa,GAAG,MAAM,IAAA,2BAAgB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9D,MAAM,mBAAmB,GAAG,aAAa,CAAC,aAAa,CAAC;IACxD,IAAG,aAAa,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO,mBAAmB,CAAA;IAC5B,CAAC;IAED,MAAM,qBAAqB,GAAmB,EAAE,CAAC;IACjD,KAAI,MAAM,EAAE,IAAI,aAAa,CAAC,aAAa,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAG,MAAM,IAAA,iCAAsB,EAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,qBAAqB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAClD,IAAG,KAAK,EAAE,CAAC;YACT,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,IAAG,qBAAqB,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,SAAS,qBAAqB,CAAC,MAAM,gCAAgC,QAAQ,KAAK,UAAU,EAAE,CAAC,CAAC;IAClH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAE1C,OAAO;QACL,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC,aAAa;QACzC,GAAG,mBAAmB;KACvB,CAAA;AACH,CAAC;AAED,SAAgB,qBAAqB,CAAC,OAAe;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAC/D,OAAO,MAAM,SAAS,SAAS,CAAA;IACjC,CAAC,CAAC,CAAA;IACF,OAAO,IAAI,KAAK,GAAG,CAAA;IAEnB,mCAAmC;IACnC,2CAA2C;IAC3C,8CAA8C;IAC9C,uDAAuD;IACvD,sDAAsD;IACtD,sEAAsE;IACtE,+BAA+B;IAC/B,uCAAuC;IACvC,QAAQ;IACR,yCAAyC;IACzC,MAAM;IACN,gBAAgB;IAChB,KAAK;IACL,kCAAkC;AACpC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ValidationError } from "@cloud-copilot/iam-policy";
|
|
2
|
+
interface SimulationOptions {
|
|
3
|
+
assumeSecureTransport: boolean;
|
|
4
|
+
}
|
|
5
|
+
interface Simulation {
|
|
6
|
+
request: {
|
|
7
|
+
principal: string;
|
|
8
|
+
action: string;
|
|
9
|
+
resource: {
|
|
10
|
+
resource: string;
|
|
11
|
+
accountId: string;
|
|
12
|
+
};
|
|
13
|
+
contextVariables: Record<string, any>;
|
|
14
|
+
};
|
|
15
|
+
identityPolicies: Record<string, any>[];
|
|
16
|
+
}
|
|
17
|
+
export interface SimulationErrors {
|
|
18
|
+
identityPolicyErrors?: Record<string, ValidationError[]>;
|
|
19
|
+
message: string;
|
|
20
|
+
}
|
|
21
|
+
export interface SimulationResult {
|
|
22
|
+
}
|
|
23
|
+
export declare function runSimulation(simulation: Simulation, simulationOptions: SimulationOptions): Promise<SimulationResult>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=simulationEngine.d.ts.map
|
|
@@ -0,0 +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;AAElF,UAAU,iBAAiB;IACzB,qBAAqB,EAAE,OAAO,CAAA;CAC/B;AAED,UAAU,UAAU;IAClB,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE;YACR,QAAQ,EAAE,MAAM,CAAC;YACjB,SAAS,EAAE,MAAM,CAAA;SAClB,CAAA;QACD,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACvC,CAAA;IAED,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;CACzC;AAED,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,CAoC3H"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runSimulation = runSimulation;
|
|
4
|
+
const iam_data_1 = require("@cloud-copilot/iam-data");
|
|
5
|
+
const iam_policy_1 = require("@cloud-copilot/iam-policy");
|
|
6
|
+
async function runSimulation(simulation, simulationOptions) {
|
|
7
|
+
const identityPolicyErrors = Object.keys(simulation.identityPolicies).reduce((acc, key) => {
|
|
8
|
+
acc[key] == (0, iam_policy_1.validatePolicySyntax)(simulation.identityPolicies[key]);
|
|
9
|
+
return acc;
|
|
10
|
+
}, {});
|
|
11
|
+
const errorCount = Object.values(identityPolicyErrors).flat().length;
|
|
12
|
+
if (errorCount > 0) {
|
|
13
|
+
return {
|
|
14
|
+
identityPolicyErrors
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
if (simulation.request.action.split(":").length != 2) {
|
|
18
|
+
return {
|
|
19
|
+
message: 'invalid.action'
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const [service, action] = simulation.request.action.split(":");
|
|
23
|
+
const validService = await (0, iam_data_1.iamServiceExists)(service);
|
|
24
|
+
if (!validService) {
|
|
25
|
+
return {
|
|
26
|
+
message: 'invalid.service'
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const validAction = await (0, iam_data_1.iamActionExists)(service, action);
|
|
30
|
+
if (!validAction) {
|
|
31
|
+
return {
|
|
32
|
+
message: 'invalid.action'
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
// Implementation goes here
|
|
36
|
+
return {};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=simulationEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simulationEngine.js","sourceRoot":"","sources":["../../../src/simulation_engine/simulationEngine.ts"],"names":[],"mappings":";;AA8BA,sCAoCC;AAlED,sDAA4E;AAC5E,0DAAkF;AA6B3E,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;AAEhC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Statement } from "@cloud-copilot/iam-policy";
|
|
2
|
+
import { ConditionMatchResult } from "./condition/condition.js";
|
|
3
|
+
import { PrincipalMatchResult } from "./principal/principal.js";
|
|
4
|
+
/**
|
|
5
|
+
* The result of analyzing a statement against a request.
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
export interface StatementAnalysis {
|
|
9
|
+
/**
|
|
10
|
+
* The statement being analyzed.
|
|
11
|
+
*/
|
|
12
|
+
statement: Statement;
|
|
13
|
+
/**
|
|
14
|
+
* Whether the Resource or NotResource – if any – matches the request.
|
|
15
|
+
*/
|
|
16
|
+
resourceMatch: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Whether the Action or NotAction matches the request.
|
|
19
|
+
*/
|
|
20
|
+
actionMatch: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Whether the Principal or NotPrincipal – if any – matches the request.
|
|
23
|
+
*/
|
|
24
|
+
principalMatch: PrincipalMatchResult;
|
|
25
|
+
conditionMatch: ConditionMatchResult;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=StatementAnalysis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatementAnalysis.d.ts","sourceRoot":"","sources":["../../src/StatementAnalysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC;IAErB;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,cAAc,EAAE,oBAAoB,CAAA;IACpC,cAAc,EAAE,oBAAoB,CAAA;CACrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatementAnalysis.js","sourceRoot":"","sources":["../../src/StatementAnalysis.ts"],"names":[],"mappings":""}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
-
import { Action } from "@cloud-copilot/iam-policy";
|
|
1
|
+
import { Action, Statement } from "@cloud-copilot/iam-policy";
|
|
2
2
|
import { AwsRequest } from "../request/request.js";
|
|
3
|
+
/**
|
|
4
|
+
* Check if a request matches the Action or NotAction elements of a statement.
|
|
5
|
+
*
|
|
6
|
+
* @param request the request to check
|
|
7
|
+
* @param statement the statement to check against
|
|
8
|
+
* @returns true if the request matches the Action or NotAction in the statement, false otherwise
|
|
9
|
+
*/
|
|
10
|
+
export declare function requestMatchesStatementActions(request: AwsRequest, statement: Statement): boolean;
|
|
3
11
|
/**
|
|
4
12
|
* Check if a request matches a set of actions.
|
|
5
13
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/action/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/action/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAOjG;AAiBD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAiBrF;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAExF"}
|
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if a request matches the Action or NotAction elements of a statement.
|
|
3
|
+
*
|
|
4
|
+
* @param request the request to check
|
|
5
|
+
* @param statement the statement to check against
|
|
6
|
+
* @returns true if the request matches the Action or NotAction in the statement, false otherwise
|
|
7
|
+
*/
|
|
8
|
+
export function requestMatchesStatementActions(request, statement) {
|
|
9
|
+
if (statement.isActionStatement()) {
|
|
10
|
+
return requestMatchesActions(request, statement.actions());
|
|
11
|
+
}
|
|
12
|
+
else if (statement.isNotActionStatement()) {
|
|
13
|
+
return requestMatchesNotActions(request, statement.notActions());
|
|
14
|
+
}
|
|
15
|
+
throw new Error('Statement has neither Actions nor NotActions');
|
|
16
|
+
}
|
|
1
17
|
/**
|
|
2
18
|
* Convert an action action (the part after the colon) to a regular expression.
|
|
3
19
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/action/action.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/action/action.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,UAAU,8BAA8B,CAAC,OAAmB,EAAE,SAAoB;IACtF,IAAG,SAAS,CAAC,iBAAiB,EAAE,EAAE,CAAC;QACjC,OAAO,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;SAAM,IAAI,SAAS,CAAC,oBAAoB,EAAE,EAAE,CAAC;QAC5C,OAAO,wBAAwB,CAAC,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AAClE,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,MAAc;IAC1C,IAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,CAAA;IAC5E,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AACjC,CAAC;AAGD;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAmB,EAAE,OAAiB;IAC1E,KAAI,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,IAAG,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;YACnC,IAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;gBAChD,SAAQ;YACV,CAAC;YACD,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1D,IAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;gBAC7C,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAmB,EAAE,OAAiB;IAC7E,OAAO,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArnEquals.d.ts","sourceRoot":"","sources":["../../../../src/condition/arn/ArnEquals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,eAAO,MAAM,SAAS,EAAE,qBAKvB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArnEquals.js","sourceRoot":"","sources":["../../../../src/condition/arn/ArnEquals.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,MAAM,SAAS,GAA0B;IAC9C,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,OAAO,CAAC,OAAO;IACxB,eAAe,EAAE,OAAO,CAAC,eAAe;IACxC,eAAe,EAAE,OAAO,CAAC,eAAe;CACzC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArnLike.d.ts","sourceRoot":"","sources":["../../../../src/condition/arn/ArnLike.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,eAAO,MAAM,OAAO,EAAE,qBAOrB,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { convertIamStringToRegex, isNotDefined, splitArnParts } from "../../util.js";
|
|
2
|
+
export const ArnLike = {
|
|
3
|
+
name: 'ArnLike',
|
|
4
|
+
matches: (request, keyValue, policyValues) => {
|
|
5
|
+
return policyValues.some(policyArn => arnMatches(policyArn, keyValue, request));
|
|
6
|
+
},
|
|
7
|
+
allowsVariables: true,
|
|
8
|
+
allowsWildcards: true
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Checks to see if a single ARN matches in ArnLike format
|
|
12
|
+
*
|
|
13
|
+
* @param policyArn the ARN to check against
|
|
14
|
+
* @param requestArn the ARN to check
|
|
15
|
+
* @param request the request to check
|
|
16
|
+
* @returns if the ARN matches
|
|
17
|
+
*/
|
|
18
|
+
function arnMatches(policyArn, requestArn, request) {
|
|
19
|
+
const policyParts = splitArnParts(policyArn);
|
|
20
|
+
const requestParts = splitArnParts(requestArn);
|
|
21
|
+
// If any of the parts are missing, return false
|
|
22
|
+
if (isNotDefined(policyParts.partition) ||
|
|
23
|
+
isNotDefined(policyParts.service) ||
|
|
24
|
+
isNotDefined(policyParts.region) ||
|
|
25
|
+
isNotDefined(policyParts.accountId) ||
|
|
26
|
+
isNotDefined(policyParts.resource)) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
// If any of the parts are missing, return false
|
|
30
|
+
if (isNotDefined(requestParts.partition) ||
|
|
31
|
+
isNotDefined(requestParts.service) ||
|
|
32
|
+
isNotDefined(requestParts.region) ||
|
|
33
|
+
isNotDefined(requestParts.accountId) ||
|
|
34
|
+
isNotDefined(requestParts.resource)) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
const replaceAndMatch = (policyPart, requestPart) => {
|
|
38
|
+
const pattern = convertIamStringToRegex(policyPart, request, { replaceWildcards: true });
|
|
39
|
+
return pattern.test(requestPart);
|
|
40
|
+
};
|
|
41
|
+
return replaceAndMatch(policyParts.partition, requestParts.partition) &&
|
|
42
|
+
replaceAndMatch(policyParts.service, requestParts.service) &&
|
|
43
|
+
replaceAndMatch(policyParts.region, requestParts.region) &&
|
|
44
|
+
replaceAndMatch(policyParts.accountId, requestParts.accountId) &&
|
|
45
|
+
replaceAndMatch(policyParts.resource, requestParts.resource);
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=ArnLike.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArnLike.js","sourceRoot":"","sources":["../../../../src/condition/arn/ArnLike.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGrF,MAAM,CAAC,MAAM,OAAO,GAA0B;IAC5C,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;QAC3C,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IACjF,CAAC;IACD,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;CACtB,CAAA;AAED;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,SAAiB,EAAE,UAAkB,EAAE,OAAmB;IAC5E,MAAM,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IAC5C,MAAM,YAAY,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;IAC9C,gDAAgD;IAChD,IAAG,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC;QACnC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC;QACjC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC;QAChC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC;QACnC,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,gDAAgD;IAChD,IAAG,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC;QACpC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC;QAClC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC;QACjC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC;QACpC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,eAAe,GAAG,CAAC,UAAkB,EAAE,WAAmB,EAAW,EAAE;QAC3E,MAAM,OAAO,GAAG,uBAAuB,CAAC,UAAU,EAAE,OAAO,EAAE,EAAC,gBAAgB,EAAE,IAAI,EAAC,CAAC,CAAA;QACtF,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAClC,CAAC,CAAA;IAED,OAAO,eAAe,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC;QAC9D,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC;QAC1D,eAAe,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;QACxD,eAAe,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC;QAC9D,eAAe,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;AAErE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArnNotEquals.d.ts","sourceRoot":"","sources":["../../../../src/condition/arn/ArnNotEquals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,eAAO,MAAM,YAAY,EAAE,qBAK1B,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ArnNotLike } from "./ArnNotLike.js";
|
|
2
|
+
export const ArnNotEquals = {
|
|
3
|
+
name: 'ArnNotEquals',
|
|
4
|
+
matches: ArnNotLike.matches,
|
|
5
|
+
allowsVariables: ArnNotLike.allowsVariables,
|
|
6
|
+
allowsWildcards: ArnNotLike.allowsWildcards
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=ArnNotEquals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArnNotEquals.js","sourceRoot":"","sources":["../../../../src/condition/arn/ArnNotEquals.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,IAAI,EAAE,cAAc;IACpB,OAAO,EAAE,UAAU,CAAC,OAAO;IAC3B,eAAe,EAAE,UAAU,CAAC,eAAe;IAC3C,eAAe,EAAE,UAAU,CAAC,eAAe;CAC5C,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArnNotLike.d.ts","sourceRoot":"","sources":["../../../../src/condition/arn/ArnNotLike.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,eAAO,MAAM,UAAU,EAAE,qBAOxB,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ArnLike } from "./ArnLike.js";
|
|
2
|
+
export const ArnNotLike = {
|
|
3
|
+
name: 'ArnNotLike',
|
|
4
|
+
matches: (request, keyValue, policyValues) => {
|
|
5
|
+
return !ArnLike.matches(request, keyValue, policyValues);
|
|
6
|
+
},
|
|
7
|
+
allowsVariables: true,
|
|
8
|
+
allowsWildcards: true
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=ArnNotLike.js.map
|