@cloud-copilot/iam-simulate 0.1.12 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/StatementAnalysis.d.ts +14 -0
- package/dist/cjs/StatementAnalysis.d.ts.map +1 -1
- package/dist/cjs/StatementAnalysis.js +51 -0
- package/dist/cjs/StatementAnalysis.js.map +1 -1
- package/dist/cjs/action/action.d.ts +13 -3
- package/dist/cjs/action/action.d.ts.map +1 -1
- package/dist/cjs/action/action.js +43 -21
- package/dist/cjs/action/action.js.map +1 -1
- package/dist/cjs/condition/BaseConditionOperator.d.ts +6 -1
- package/dist/cjs/condition/BaseConditionOperator.d.ts.map +1 -1
- package/dist/cjs/condition/arn/ArnEquals.d.ts.map +1 -1
- package/dist/cjs/condition/arn/ArnEquals.js +2 -1
- package/dist/cjs/condition/arn/ArnEquals.js.map +1 -1
- package/dist/cjs/condition/arn/ArnLike.d.ts.map +1 -1
- package/dist/cjs/condition/arn/ArnLike.js +8 -40
- package/dist/cjs/condition/arn/ArnLike.js.map +1 -1
- package/dist/cjs/condition/arn/ArnNotEquals.d.ts.map +1 -1
- package/dist/cjs/condition/arn/ArnNotEquals.js +2 -1
- package/dist/cjs/condition/arn/ArnNotEquals.js.map +1 -1
- package/dist/cjs/condition/arn/ArnNotLike.d.ts.map +1 -1
- package/dist/cjs/condition/arn/ArnNotLike.js +8 -3
- package/dist/cjs/condition/arn/ArnNotLike.js.map +1 -1
- package/dist/cjs/condition/arn/arn.d.ts +12 -0
- package/dist/cjs/condition/arn/arn.d.ts.map +1 -0
- package/dist/cjs/condition/arn/arn.js +68 -0
- package/dist/cjs/condition/arn/arn.js.map +1 -0
- package/dist/cjs/condition/baseConditionperatorTests.d.ts +7 -1
- package/dist/cjs/condition/baseConditionperatorTests.d.ts.map +1 -1
- package/dist/cjs/condition/baseConditionperatorTests.js +17 -1
- package/dist/cjs/condition/baseConditionperatorTests.js.map +1 -1
- package/dist/cjs/condition/binary/BinaryEquals.d.ts.map +1 -1
- package/dist/cjs/condition/binary/BinaryEquals.js +14 -2
- package/dist/cjs/condition/binary/BinaryEquals.js.map +1 -1
- package/dist/cjs/condition/boolean/Bool.d.ts.map +1 -1
- package/dist/cjs/condition/boolean/Bool.js +36 -7
- package/dist/cjs/condition/boolean/Bool.js.map +1 -1
- package/dist/cjs/condition/condition.d.ts +46 -3
- package/dist/cjs/condition/condition.d.ts.map +1 -1
- package/dist/cjs/condition/condition.js +242 -48
- package/dist/cjs/condition/condition.js.map +1 -1
- package/dist/cjs/condition/conditionUtil.d.ts +10 -0
- package/dist/cjs/condition/conditionUtil.d.ts.map +1 -0
- package/dist/cjs/condition/conditionUtil.js +16 -0
- package/dist/cjs/condition/conditionUtil.js.map +1 -0
- package/dist/cjs/condition/date/DateEquals.d.ts.map +1 -1
- package/dist/cjs/condition/date/DateEquals.js +7 -2
- package/dist/cjs/condition/date/DateEquals.js.map +1 -1
- package/dist/cjs/condition/date/DateGreaterThan.d.ts.map +1 -1
- package/dist/cjs/condition/date/DateGreaterThan.js +7 -2
- package/dist/cjs/condition/date/DateGreaterThan.js.map +1 -1
- package/dist/cjs/condition/date/DateGreaterThanEquals.d.ts.map +1 -1
- package/dist/cjs/condition/date/DateGreaterThanEquals.js +7 -2
- package/dist/cjs/condition/date/DateGreaterThanEquals.js.map +1 -1
- package/dist/cjs/condition/date/DateLessThan.d.ts.map +1 -1
- package/dist/cjs/condition/date/DateLessThan.js +7 -2
- package/dist/cjs/condition/date/DateLessThan.js.map +1 -1
- package/dist/cjs/condition/date/DateLessThanEquals.d.ts.map +1 -1
- package/dist/cjs/condition/date/DateLessThanEquals.js +7 -2
- package/dist/cjs/condition/date/DateLessThanEquals.js.map +1 -1
- package/dist/cjs/condition/date/DateNotEquals.d.ts.map +1 -1
- package/dist/cjs/condition/date/DateNotEquals.js +11 -18
- package/dist/cjs/condition/date/DateNotEquals.js.map +1 -1
- package/dist/cjs/condition/date/date.d.ts +2 -1
- package/dist/cjs/condition/date/date.d.ts.map +1 -1
- package/dist/cjs/condition/date/date.js +20 -5
- package/dist/cjs/condition/date/date.js.map +1 -1
- package/dist/cjs/condition/ipaddress/IpAddress.d.ts.map +1 -1
- package/dist/cjs/condition/ipaddress/IpAddress.js +9 -16
- package/dist/cjs/condition/ipaddress/IpAddress.js.map +1 -1
- package/dist/cjs/condition/ipaddress/NotIpAddress.d.ts.map +1 -1
- package/dist/cjs/condition/ipaddress/NotIpAddress.js +9 -20
- package/dist/cjs/condition/ipaddress/NotIpAddress.js.map +1 -1
- package/dist/cjs/condition/ipaddress/ip.d.ts +10 -0
- package/dist/cjs/condition/ipaddress/ip.d.ts.map +1 -0
- package/dist/cjs/condition/ipaddress/ip.js +57 -0
- package/dist/cjs/condition/ipaddress/ip.js.map +1 -0
- package/dist/cjs/condition/numeric/NumericEquals.d.ts.map +1 -1
- package/dist/cjs/condition/numeric/NumericEquals.js +7 -2
- package/dist/cjs/condition/numeric/NumericEquals.js.map +1 -1
- package/dist/cjs/condition/numeric/NumericGreaterThan.d.ts.map +1 -1
- package/dist/cjs/condition/numeric/NumericGreaterThan.js +7 -2
- package/dist/cjs/condition/numeric/NumericGreaterThan.js.map +1 -1
- package/dist/cjs/condition/numeric/NumericGreaterThanEquals.d.ts.map +1 -1
- package/dist/cjs/condition/numeric/NumericGreaterThanEquals.js +7 -2
- package/dist/cjs/condition/numeric/NumericGreaterThanEquals.js.map +1 -1
- package/dist/cjs/condition/numeric/NumericLessThan.d.ts.map +1 -1
- package/dist/cjs/condition/numeric/NumericLessThan.js +7 -2
- package/dist/cjs/condition/numeric/NumericLessThan.js.map +1 -1
- package/dist/cjs/condition/numeric/NumericLessThanEquals.d.ts.map +1 -1
- package/dist/cjs/condition/numeric/NumericLessThanEquals.js +7 -2
- package/dist/cjs/condition/numeric/NumericLessThanEquals.js.map +1 -1
- package/dist/cjs/condition/numeric/NumericNotEquals.d.ts.map +1 -1
- package/dist/cjs/condition/numeric/NumericNotEquals.js +11 -18
- package/dist/cjs/condition/numeric/NumericNotEquals.js.map +1 -1
- package/dist/cjs/condition/numeric/numeric.d.ts +2 -1
- package/dist/cjs/condition/numeric/numeric.d.ts.map +1 -1
- package/dist/cjs/condition/numeric/numeric.js +18 -3
- package/dist/cjs/condition/numeric/numeric.js.map +1 -1
- package/dist/cjs/condition/string/StringEquals.d.ts.map +1 -1
- package/dist/cjs/condition/string/StringEquals.js +24 -3
- package/dist/cjs/condition/string/StringEquals.js.map +1 -1
- package/dist/cjs/condition/string/StringEqualsIgnoreCase.d.ts.map +1 -1
- package/dist/cjs/condition/string/StringEqualsIgnoreCase.js +23 -5
- package/dist/cjs/condition/string/StringEqualsIgnoreCase.js.map +1 -1
- package/dist/cjs/condition/string/StringLike.d.ts.map +1 -1
- package/dist/cjs/condition/string/StringLike.js +24 -3
- package/dist/cjs/condition/string/StringLike.js.map +1 -1
- package/dist/cjs/condition/string/StringNotEquals.d.ts.map +1 -1
- package/dist/cjs/condition/string/StringNotEquals.js +24 -3
- package/dist/cjs/condition/string/StringNotEquals.js.map +1 -1
- package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.d.ts.map +1 -1
- package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.js +25 -3
- package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.js.map +1 -1
- package/dist/cjs/condition/string/StringNotLike.d.ts.map +1 -1
- package/dist/cjs/condition/string/StringNotLike.js +25 -3
- package/dist/cjs/condition/string/StringNotLike.js.map +1 -1
- package/dist/cjs/core_engine/coreSimulatorEngine.d.ts +10 -7
- package/dist/cjs/core_engine/coreSimulatorEngine.d.ts.map +1 -1
- package/dist/cjs/core_engine/coreSimulatorEngine.js +148 -28
- package/dist/cjs/core_engine/coreSimulatorEngine.js.map +1 -1
- package/dist/cjs/evaluate.d.ts +47 -0
- package/dist/cjs/evaluate.d.ts.map +1 -1
- package/dist/cjs/explain/displayExplainCli.d.ts +3 -0
- package/dist/cjs/explain/displayExplainCli.d.ts.map +1 -0
- package/dist/cjs/explain/displayExplainCli.js +249 -0
- package/dist/cjs/explain/displayExplainCli.js.map +1 -0
- package/dist/cjs/explain/statementExplain.d.ts +51 -0
- package/dist/cjs/explain/statementExplain.d.ts.map +1 -0
- package/dist/cjs/explain/statementExplain.js +7 -0
- package/dist/cjs/explain/statementExplain.js.map +1 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/principal/principal.d.ts +28 -6
- package/dist/cjs/principal/principal.d.ts.map +1 -1
- package/dist/cjs/principal/principal.js +146 -40
- package/dist/cjs/principal/principal.js.map +1 -1
- package/dist/cjs/resource/resource.d.ts +13 -3
- package/dist/cjs/resource/resource.d.ts.map +1 -1
- package/dist/cjs/resource/resource.js +68 -15
- package/dist/cjs/resource/resource.js.map +1 -1
- package/dist/cjs/services/DefaultServiceAuthorizer.d.ts +2 -34
- package/dist/cjs/services/DefaultServiceAuthorizer.d.ts.map +1 -1
- package/dist/cjs/services/DefaultServiceAuthorizer.js +95 -131
- package/dist/cjs/services/DefaultServiceAuthorizer.js.map +1 -1
- package/dist/cjs/services/ServiceAuthorizer.d.ts +6 -7
- package/dist/cjs/services/ServiceAuthorizer.d.ts.map +1 -1
- package/dist/cjs/simulation_engine/simulation.d.ts +4 -0
- package/dist/cjs/simulation_engine/simulation.d.ts.map +1 -1
- package/dist/cjs/simulation_engine/simulationEngine.d.ts +2 -4
- package/dist/cjs/simulation_engine/simulationEngine.d.ts.map +1 -1
- package/dist/cjs/simulation_engine/simulationEngine.js +16 -4
- package/dist/cjs/simulation_engine/simulationEngine.js.map +1 -1
- package/dist/cjs/simulation_engine/unsafeSimulationEngine.d.ts.map +1 -1
- package/dist/cjs/simulation_engine/unsafeSimulationEngine.js +5 -2
- package/dist/cjs/simulation_engine/unsafeSimulationEngine.js.map +1 -1
- package/dist/cjs/util.d.ts +31 -3
- package/dist/cjs/util.d.ts.map +1 -1
- package/dist/cjs/util.js +74 -32
- package/dist/cjs/util.js.map +1 -1
- package/dist/esm/StatementAnalysis.d.ts +14 -0
- package/dist/esm/StatementAnalysis.d.ts.map +1 -1
- package/dist/esm/StatementAnalysis.js +48 -1
- package/dist/esm/StatementAnalysis.js.map +1 -1
- package/dist/esm/action/action.d.ts +13 -3
- package/dist/esm/action/action.d.ts.map +1 -1
- package/dist/esm/action/action.js +43 -21
- package/dist/esm/action/action.js.map +1 -1
- package/dist/esm/condition/BaseConditionOperator.d.ts +6 -1
- package/dist/esm/condition/BaseConditionOperator.d.ts.map +1 -1
- package/dist/esm/condition/arn/ArnEquals.d.ts.map +1 -1
- package/dist/esm/condition/arn/ArnEquals.js +2 -1
- package/dist/esm/condition/arn/ArnEquals.js.map +1 -1
- package/dist/esm/condition/arn/ArnLike.d.ts.map +1 -1
- package/dist/esm/condition/arn/ArnLike.js +8 -40
- package/dist/esm/condition/arn/ArnLike.js.map +1 -1
- package/dist/esm/condition/arn/ArnNotEquals.d.ts.map +1 -1
- package/dist/esm/condition/arn/ArnNotEquals.js +2 -1
- package/dist/esm/condition/arn/ArnNotEquals.js.map +1 -1
- package/dist/esm/condition/arn/ArnNotLike.d.ts.map +1 -1
- package/dist/esm/condition/arn/ArnNotLike.js +8 -3
- package/dist/esm/condition/arn/ArnNotLike.js.map +1 -1
- package/dist/esm/condition/arn/arn.d.ts +12 -0
- package/dist/esm/condition/arn/arn.d.ts.map +1 -0
- package/dist/esm/condition/arn/arn.js +65 -0
- package/dist/esm/condition/arn/arn.js.map +1 -0
- package/dist/esm/condition/baseConditionperatorTests.d.ts +7 -1
- package/dist/esm/condition/baseConditionperatorTests.d.ts.map +1 -1
- package/dist/esm/condition/baseConditionperatorTests.js +17 -1
- package/dist/esm/condition/baseConditionperatorTests.js.map +1 -1
- package/dist/esm/condition/binary/BinaryEquals.d.ts.map +1 -1
- package/dist/esm/condition/binary/BinaryEquals.js +14 -2
- package/dist/esm/condition/binary/BinaryEquals.js.map +1 -1
- package/dist/esm/condition/boolean/Bool.d.ts.map +1 -1
- package/dist/esm/condition/boolean/Bool.js +37 -8
- package/dist/esm/condition/boolean/Bool.js.map +1 -1
- package/dist/esm/condition/condition.d.ts +46 -3
- package/dist/esm/condition/condition.d.ts.map +1 -1
- package/dist/esm/condition/condition.js +239 -48
- package/dist/esm/condition/condition.js.map +1 -1
- package/dist/esm/condition/conditionUtil.d.ts +10 -0
- package/dist/esm/condition/conditionUtil.d.ts.map +1 -0
- package/dist/esm/condition/conditionUtil.js +13 -0
- package/dist/esm/condition/conditionUtil.js.map +1 -0
- package/dist/esm/condition/date/DateEquals.d.ts.map +1 -1
- package/dist/esm/condition/date/DateEquals.js +7 -2
- package/dist/esm/condition/date/DateEquals.js.map +1 -1
- package/dist/esm/condition/date/DateGreaterThan.d.ts.map +1 -1
- package/dist/esm/condition/date/DateGreaterThan.js +7 -2
- package/dist/esm/condition/date/DateGreaterThan.js.map +1 -1
- package/dist/esm/condition/date/DateGreaterThanEquals.d.ts.map +1 -1
- package/dist/esm/condition/date/DateGreaterThanEquals.js +7 -2
- package/dist/esm/condition/date/DateGreaterThanEquals.js.map +1 -1
- package/dist/esm/condition/date/DateLessThan.d.ts.map +1 -1
- package/dist/esm/condition/date/DateLessThan.js +7 -2
- package/dist/esm/condition/date/DateLessThan.js.map +1 -1
- package/dist/esm/condition/date/DateLessThanEquals.d.ts.map +1 -1
- package/dist/esm/condition/date/DateLessThanEquals.js +7 -2
- package/dist/esm/condition/date/DateLessThanEquals.js.map +1 -1
- package/dist/esm/condition/date/DateNotEquals.d.ts.map +1 -1
- package/dist/esm/condition/date/DateNotEquals.js +12 -19
- package/dist/esm/condition/date/DateNotEquals.js.map +1 -1
- package/dist/esm/condition/date/date.d.ts +2 -1
- package/dist/esm/condition/date/date.d.ts.map +1 -1
- package/dist/esm/condition/date/date.js +20 -5
- package/dist/esm/condition/date/date.js.map +1 -1
- package/dist/esm/condition/ipaddress/IpAddress.d.ts.map +1 -1
- package/dist/esm/condition/ipaddress/IpAddress.js +9 -16
- package/dist/esm/condition/ipaddress/IpAddress.js.map +1 -1
- package/dist/esm/condition/ipaddress/NotIpAddress.d.ts.map +1 -1
- package/dist/esm/condition/ipaddress/NotIpAddress.js +9 -20
- package/dist/esm/condition/ipaddress/NotIpAddress.js.map +1 -1
- package/dist/esm/condition/ipaddress/ip.d.ts +10 -0
- package/dist/esm/condition/ipaddress/ip.d.ts.map +1 -0
- package/dist/esm/condition/ipaddress/ip.js +54 -0
- package/dist/esm/condition/ipaddress/ip.js.map +1 -0
- package/dist/esm/condition/numeric/NumericEquals.d.ts.map +1 -1
- package/dist/esm/condition/numeric/NumericEquals.js +7 -2
- package/dist/esm/condition/numeric/NumericEquals.js.map +1 -1
- package/dist/esm/condition/numeric/NumericGreaterThan.d.ts.map +1 -1
- package/dist/esm/condition/numeric/NumericGreaterThan.js +7 -2
- package/dist/esm/condition/numeric/NumericGreaterThan.js.map +1 -1
- package/dist/esm/condition/numeric/NumericGreaterThanEquals.d.ts.map +1 -1
- package/dist/esm/condition/numeric/NumericGreaterThanEquals.js +7 -2
- package/dist/esm/condition/numeric/NumericGreaterThanEquals.js.map +1 -1
- package/dist/esm/condition/numeric/NumericLessThan.d.ts.map +1 -1
- package/dist/esm/condition/numeric/NumericLessThan.js +7 -2
- package/dist/esm/condition/numeric/NumericLessThan.js.map +1 -1
- package/dist/esm/condition/numeric/NumericLessThanEquals.d.ts.map +1 -1
- package/dist/esm/condition/numeric/NumericLessThanEquals.js +7 -2
- package/dist/esm/condition/numeric/NumericLessThanEquals.js.map +1 -1
- package/dist/esm/condition/numeric/NumericNotEquals.d.ts.map +1 -1
- package/dist/esm/condition/numeric/NumericNotEquals.js +12 -19
- package/dist/esm/condition/numeric/NumericNotEquals.js.map +1 -1
- package/dist/esm/condition/numeric/numeric.d.ts +2 -1
- package/dist/esm/condition/numeric/numeric.d.ts.map +1 -1
- package/dist/esm/condition/numeric/numeric.js +18 -3
- package/dist/esm/condition/numeric/numeric.js.map +1 -1
- package/dist/esm/condition/string/StringEquals.d.ts.map +1 -1
- package/dist/esm/condition/string/StringEquals.js +25 -4
- package/dist/esm/condition/string/StringEquals.js.map +1 -1
- package/dist/esm/condition/string/StringEqualsIgnoreCase.d.ts.map +1 -1
- package/dist/esm/condition/string/StringEqualsIgnoreCase.js +24 -6
- package/dist/esm/condition/string/StringEqualsIgnoreCase.js.map +1 -1
- package/dist/esm/condition/string/StringLike.d.ts.map +1 -1
- package/dist/esm/condition/string/StringLike.js +25 -4
- package/dist/esm/condition/string/StringLike.js.map +1 -1
- package/dist/esm/condition/string/StringNotEquals.d.ts.map +1 -1
- package/dist/esm/condition/string/StringNotEquals.js +25 -4
- package/dist/esm/condition/string/StringNotEquals.js.map +1 -1
- package/dist/esm/condition/string/StringNotEqualsIgnoreCase.d.ts.map +1 -1
- package/dist/esm/condition/string/StringNotEqualsIgnoreCase.js +25 -3
- package/dist/esm/condition/string/StringNotEqualsIgnoreCase.js.map +1 -1
- package/dist/esm/condition/string/StringNotLike.d.ts.map +1 -1
- package/dist/esm/condition/string/StringNotLike.js +25 -3
- package/dist/esm/condition/string/StringNotLike.js.map +1 -1
- package/dist/esm/core_engine/coreSimulatorEngine.d.ts +10 -7
- package/dist/esm/core_engine/coreSimulatorEngine.d.ts.map +1 -1
- package/dist/esm/core_engine/coreSimulatorEngine.js +147 -28
- package/dist/esm/core_engine/coreSimulatorEngine.js.map +1 -1
- package/dist/esm/evaluate.d.ts +47 -0
- package/dist/esm/evaluate.d.ts.map +1 -1
- package/dist/esm/explain/displayExplainCli.d.ts +3 -0
- package/dist/esm/explain/displayExplainCli.d.ts.map +1 -0
- package/dist/esm/explain/displayExplainCli.js +246 -0
- package/dist/esm/explain/displayExplainCli.js.map +1 -0
- package/dist/esm/explain/statementExplain.d.ts +51 -0
- package/dist/esm/explain/statementExplain.d.ts.map +1 -0
- package/dist/esm/explain/statementExplain.js +6 -0
- package/dist/esm/explain/statementExplain.js.map +1 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/principal/principal.d.ts +28 -6
- package/dist/esm/principal/principal.d.ts.map +1 -1
- package/dist/esm/principal/principal.js +144 -38
- package/dist/esm/principal/principal.js.map +1 -1
- package/dist/esm/resource/resource.d.ts +13 -3
- package/dist/esm/resource/resource.d.ts.map +1 -1
- package/dist/esm/resource/resource.js +69 -16
- package/dist/esm/resource/resource.js.map +1 -1
- package/dist/esm/services/DefaultServiceAuthorizer.d.ts +2 -34
- package/dist/esm/services/DefaultServiceAuthorizer.d.ts.map +1 -1
- package/dist/esm/services/DefaultServiceAuthorizer.js +95 -131
- package/dist/esm/services/DefaultServiceAuthorizer.js.map +1 -1
- package/dist/esm/services/ServiceAuthorizer.d.ts +6 -7
- package/dist/esm/services/ServiceAuthorizer.d.ts.map +1 -1
- package/dist/esm/simulation_engine/simulation.d.ts +4 -0
- package/dist/esm/simulation_engine/simulation.d.ts.map +1 -1
- package/dist/esm/simulation_engine/simulationEngine.d.ts +2 -4
- package/dist/esm/simulation_engine/simulationEngine.d.ts.map +1 -1
- package/dist/esm/simulation_engine/simulationEngine.js +16 -4
- package/dist/esm/simulation_engine/simulationEngine.js.map +1 -1
- package/dist/esm/simulation_engine/unsafeSimulationEngine.d.ts.map +1 -1
- package/dist/esm/simulation_engine/unsafeSimulationEngine.js +5 -2
- package/dist/esm/simulation_engine/unsafeSimulationEngine.js.map +1 -1
- package/dist/esm/util.d.ts +31 -3
- package/dist/esm/util.d.ts.map +1 -1
- package/dist/esm/util.js +70 -31
- package/dist/esm/util.js.map +1 -1
- package/package.json +2 -2
- package/dist/cjs/SCPAnalysis.d.ts +0 -6
- package/dist/cjs/SCPAnalysis.d.ts.map +0 -1
- package/dist/cjs/SCPAnalysis.js +0 -3
- package/dist/cjs/SCPAnalysis.js.map +0 -1
- package/dist/esm/SCPAnalysis.d.ts +0 -6
- package/dist/esm/SCPAnalysis.d.ts.map +0 -1
- package/dist/esm/SCPAnalysis.js +0 -2
- package/dist/esm/SCPAnalysis.js.map +0 -1
package/dist/cjs/util.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.convertIamString = convertIamString;
|
|
4
4
|
exports.splitArnParts = splitArnParts;
|
|
5
5
|
exports.getResourceSegments = getResourceSegments;
|
|
6
6
|
exports.isDefined = isDefined;
|
|
@@ -10,41 +10,37 @@ exports.getResourceTypesForAction = getResourceTypesForAction;
|
|
|
10
10
|
exports.convertResourcePatternToRegex = convertResourcePatternToRegex;
|
|
11
11
|
exports.lowerCaseAll = lowerCaseAll;
|
|
12
12
|
exports.getVariablesFromString = getVariablesFromString;
|
|
13
|
+
exports.isAssumedRoleArn = isAssumedRoleArn;
|
|
14
|
+
exports.isIamUserArn = isIamUserArn;
|
|
15
|
+
exports.isFederatedUserArn = isFederatedUserArn;
|
|
13
16
|
const iam_data_1 = require("@cloud-copilot/iam-data");
|
|
14
17
|
const matchesNothing = new RegExp('a^');
|
|
15
18
|
const defaultStringReplaceOptions = {
|
|
16
|
-
replaceWildcards: true
|
|
19
|
+
replaceWildcards: true,
|
|
20
|
+
convertToRegex: true
|
|
17
21
|
};
|
|
18
|
-
|
|
19
|
-
* This will convert a string to a regex that can be used to match against a string.
|
|
20
|
-
* This will replace any variables in the string with the value of the variable in the request context.
|
|
21
|
-
*
|
|
22
|
-
* @param value the string to convert to a regex
|
|
23
|
-
* @param requestContext the request context to get the variable values from
|
|
24
|
-
* @returns a regex that can be used to match against a string
|
|
25
|
-
*/
|
|
26
|
-
function convertIamStringToRegex(value, request, replaceOptions) {
|
|
22
|
+
function convertIamString(value, request, replaceOptions) {
|
|
27
23
|
const options = { ...defaultStringReplaceOptions, ...replaceOptions };
|
|
28
|
-
|
|
24
|
+
const errors = [];
|
|
29
25
|
const newValue = value.replaceAll(/(\$\{.*?\})|(\*)|(\?)/ig, (match, args) => {
|
|
30
26
|
if (match == "?") {
|
|
31
|
-
return replacementValue('\\?', '.', options
|
|
27
|
+
return replacementValue(match, '\\?', '.', options);
|
|
32
28
|
// return '.'
|
|
33
29
|
}
|
|
34
30
|
else if (match == "*") {
|
|
35
|
-
return replacementValue('\\*', ".*?", options
|
|
31
|
+
return replacementValue(match, '\\*', ".*?", options);
|
|
36
32
|
// return ".*?"
|
|
37
33
|
}
|
|
38
34
|
else if (match == "${*}") {
|
|
39
|
-
return replacementValue("\\$\\{\\*\\}", "\\*", options
|
|
35
|
+
return replacementValue(match, "\\$\\{\\*\\}", "\\*", options);
|
|
40
36
|
// return "\\*"
|
|
41
37
|
}
|
|
42
38
|
else if (match == "${?}") {
|
|
43
|
-
return replacementValue("\\$\\{\\?\\}", "\\?", options
|
|
39
|
+
return replacementValue(match, "\\$\\{\\?\\}", "\\?", options);
|
|
44
40
|
// return "\\?"
|
|
45
41
|
}
|
|
46
42
|
else if (match == "${$}") {
|
|
47
|
-
return replacementValue("\\$\\{\\$\\}", "\\$", options
|
|
43
|
+
return replacementValue(match, "\\$\\{\\$\\}", "\\$", options);
|
|
48
44
|
// return "\\$"
|
|
49
45
|
}
|
|
50
46
|
//
|
|
@@ -59,30 +55,40 @@ function convertIamStringToRegex(value, request, replaceOptions) {
|
|
|
59
55
|
}
|
|
60
56
|
}
|
|
61
57
|
const variableName = defaultParts.at(0).trim();
|
|
62
|
-
const requestValue = getContextSingleValue(request, variableName);
|
|
58
|
+
const { value: requestValue, error: requestValueError } = getContextSingleValue(request, variableName);
|
|
63
59
|
if (requestValue) {
|
|
64
|
-
|
|
60
|
+
//TODO: Maybe escpae the * in the resolved value to ${*}
|
|
61
|
+
return options.convertToRegex ? escapeRegexCharacters(requestValue) : requestValue;
|
|
65
62
|
}
|
|
66
63
|
else if (defaultValue) {
|
|
67
64
|
/*
|
|
68
65
|
TODO: What happens in a request if a multi value context key is used in a string and there
|
|
69
66
|
is a default value? Will it use the default value or will it fail the condition test?
|
|
70
67
|
*/
|
|
71
|
-
|
|
68
|
+
//TODO: Maybe escpae the * in the resolved value to ${*}
|
|
69
|
+
return options.convertToRegex ? escapeRegexCharacters(defaultValue) : defaultValue;
|
|
72
70
|
}
|
|
73
71
|
else {
|
|
74
|
-
|
|
72
|
+
if (requestValueError == 'missing') {
|
|
73
|
+
errors.push(`{${variableName}} not found in request context, and no default value provided. This will never match`);
|
|
74
|
+
}
|
|
75
|
+
else if (requestValueError == 'multivalue') {
|
|
76
|
+
errors.push(`{${variableName}} is a multi value context key, and cannot be used for replacement. This will never match`);
|
|
77
|
+
}
|
|
75
78
|
/*
|
|
76
79
|
https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-no-value
|
|
77
80
|
*/
|
|
78
|
-
return
|
|
81
|
+
return match;
|
|
79
82
|
}
|
|
80
83
|
throw new Error('This should never happen');
|
|
81
84
|
});
|
|
82
|
-
if (
|
|
83
|
-
return
|
|
85
|
+
if (!options.convertToRegex) {
|
|
86
|
+
return newValue;
|
|
84
87
|
}
|
|
85
|
-
|
|
88
|
+
if (errors.length > 0) {
|
|
89
|
+
return { pattern: matchesNothing, errors };
|
|
90
|
+
}
|
|
91
|
+
return { pattern: new RegExp('^' + newValue + '$') };
|
|
86
92
|
}
|
|
87
93
|
/**
|
|
88
94
|
* Replace regex characters in a string with their escaped versions
|
|
@@ -102,27 +108,33 @@ function escapeRegexCharacters(str) {
|
|
|
102
108
|
*/
|
|
103
109
|
function getContextSingleValue(request, contextKeyName) {
|
|
104
110
|
if (!request.contextKeyExists(contextKeyName)) {
|
|
105
|
-
return
|
|
111
|
+
return {
|
|
112
|
+
error: 'missing'
|
|
113
|
+
};
|
|
106
114
|
}
|
|
107
115
|
const keyValue = request.getContextKeyValue(contextKeyName);
|
|
108
116
|
if (keyValue.isStringValue()) {
|
|
109
|
-
return keyValue.value;
|
|
117
|
+
return { value: keyValue.value };
|
|
110
118
|
}
|
|
111
|
-
return
|
|
119
|
+
return { error: 'multivalue' };
|
|
112
120
|
}
|
|
113
121
|
/**
|
|
114
122
|
* Get the replacement value for a string
|
|
115
123
|
*
|
|
124
|
+
* @param originalString the original string to replace the value of
|
|
116
125
|
* @param rawString the string to replace the value in
|
|
117
126
|
* @param wildcard the value to replace the wildcard with
|
|
118
127
|
* @param replaceWildcards if the wildcard or raw string should be used
|
|
119
128
|
* @returns
|
|
120
129
|
*/
|
|
121
|
-
function replacementValue(
|
|
122
|
-
if (
|
|
123
|
-
return
|
|
130
|
+
function replacementValue(original, escaped, regex, options) {
|
|
131
|
+
if (!options.convertToRegex) {
|
|
132
|
+
return original;
|
|
133
|
+
}
|
|
134
|
+
if (options.replaceWildcards) {
|
|
135
|
+
return regex;
|
|
124
136
|
}
|
|
125
|
-
return
|
|
137
|
+
return escaped;
|
|
126
138
|
}
|
|
127
139
|
/**
|
|
128
140
|
* Split an ARN into its parts
|
|
@@ -275,4 +287,34 @@ function getVariablesFromString(value) {
|
|
|
275
287
|
}
|
|
276
288
|
return [];
|
|
277
289
|
}
|
|
290
|
+
const assumedRoleArnRegex = /^arn:aws:sts::\d{12}:assumed-role\/.*$/;
|
|
291
|
+
/**
|
|
292
|
+
* Tests if a principal string is an assumed role ARN
|
|
293
|
+
*
|
|
294
|
+
* @param principal the principal string to test
|
|
295
|
+
* @returns true if the principal is an assumed role ARN, false otherwise
|
|
296
|
+
*/
|
|
297
|
+
function isAssumedRoleArn(principal) {
|
|
298
|
+
return assumedRoleArnRegex.test(principal);
|
|
299
|
+
}
|
|
300
|
+
const userArnRegex = /^arn:aws:iam::\d{12}:user\/.*$/;
|
|
301
|
+
/**
|
|
302
|
+
* Test if a principal string is an IAM user ARN
|
|
303
|
+
*
|
|
304
|
+
* @param principal the principal string to test
|
|
305
|
+
* @returns true if the principal is an IAM user ARN, false otherwise
|
|
306
|
+
*/
|
|
307
|
+
function isIamUserArn(principal) {
|
|
308
|
+
return userArnRegex.test(principal);
|
|
309
|
+
}
|
|
310
|
+
const federatedUserArnRegex = /^arn:aws:sts::\d{12}:federated-user\/.*$/;
|
|
311
|
+
/**
|
|
312
|
+
* Test if a principal string is a federated user ARN
|
|
313
|
+
*
|
|
314
|
+
* @param principal the principal string to test
|
|
315
|
+
* @returns true if the principal is a federated user ARN, false otherwise
|
|
316
|
+
*/
|
|
317
|
+
function isFederatedUserArn(principal) {
|
|
318
|
+
return federatedUserArnRegex.test(principal);
|
|
319
|
+
}
|
|
278
320
|
//# sourceMappingURL=util.js.map
|
package/dist/cjs/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Statement } from "@cloud-copilot/iam-policy";
|
|
2
2
|
import { ConditionMatchResult } from "./condition/condition.js";
|
|
3
|
+
import { StatementExplain } from "./explain/statementExplain.js";
|
|
3
4
|
import { PrincipalMatchResult } from "./principal/principal.js";
|
|
4
5
|
/**
|
|
5
6
|
* The result of analyzing a statement against a request.
|
|
@@ -22,6 +23,19 @@ export interface StatementAnalysis {
|
|
|
22
23
|
* Whether the Principal or NotPrincipal – if any – matches the request.
|
|
23
24
|
*/
|
|
24
25
|
principalMatch: PrincipalMatchResult;
|
|
26
|
+
/**
|
|
27
|
+
* Whether the Conditions matches the request.
|
|
28
|
+
*/
|
|
25
29
|
conditionMatch: ConditionMatchResult;
|
|
30
|
+
explain?: StatementExplain;
|
|
26
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Checks if a statement is an identity statement that allows the request.
|
|
34
|
+
*
|
|
35
|
+
* @param statement The statement to check.
|
|
36
|
+
* @returns Whether the statement is an identity statement that allows the request.
|
|
37
|
+
*/
|
|
38
|
+
export declare function identityStatementAllows(statement: StatementAnalysis): boolean;
|
|
39
|
+
export declare function identityStatementExplicitDeny(statement: StatementAnalysis): boolean;
|
|
40
|
+
export declare function statementMatches(analysis: Pick<StatementAnalysis, 'actionMatch' | 'conditionMatch' | 'principalMatch' | 'resourceMatch'>): boolean;
|
|
27
41
|
//# sourceMappingURL=StatementAnalysis.d.ts.map
|
|
@@ -1 +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;
|
|
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,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,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;IAEpC;;OAEG;IACH,cAAc,EAAE,oBAAoB,CAAA;IAEpC,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAQ7E;AAsBD,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAQnF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,aAAa,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,eAAe,CAAC,GAAG,OAAO,CAKlJ"}
|
|
@@ -1,2 +1,49 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Checks if a statement is an identity statement that allows the request.
|
|
3
|
+
*
|
|
4
|
+
* @param statement The statement to check.
|
|
5
|
+
* @returns Whether the statement is an identity statement that allows the request.
|
|
6
|
+
*/
|
|
7
|
+
export function identityStatementAllows(statement) {
|
|
8
|
+
if (statement.resourceMatch &&
|
|
9
|
+
statement.actionMatch &&
|
|
10
|
+
statement.conditionMatch === 'Match' &&
|
|
11
|
+
statement.statement.effect() === 'Allow') {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
// export function identityStatementUknownAllow(statement: StatementAnalysis): boolean {
|
|
17
|
+
// if(statement.resourceMatch &&
|
|
18
|
+
// statement.actionMatch &&
|
|
19
|
+
// statement.conditionMatch === 'Unknown' &&
|
|
20
|
+
// statement.statement.effect() === 'Allow') {
|
|
21
|
+
// return true;
|
|
22
|
+
// }
|
|
23
|
+
// return false
|
|
24
|
+
// }
|
|
25
|
+
// export function identityStatementUknownDeny(statement: StatementAnalysis): boolean {
|
|
26
|
+
// if(statement.resourceMatch &&
|
|
27
|
+
// statement.actionMatch &&
|
|
28
|
+
// statement.conditionMatch === 'Unknown' &&
|
|
29
|
+
// statement.statement.effect() === 'Deny') {
|
|
30
|
+
// return true;
|
|
31
|
+
// }
|
|
32
|
+
// return false
|
|
33
|
+
// }
|
|
34
|
+
export function identityStatementExplicitDeny(statement) {
|
|
35
|
+
if (statement.resourceMatch &&
|
|
36
|
+
statement.actionMatch &&
|
|
37
|
+
statement.conditionMatch === 'Match' &&
|
|
38
|
+
statement.statement.effect() === 'Deny') {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
export function statementMatches(analysis) {
|
|
44
|
+
return analysis.resourceMatch &&
|
|
45
|
+
analysis.actionMatch &&
|
|
46
|
+
analysis.conditionMatch === 'Match' &&
|
|
47
|
+
['Match', 'AccountLevelMatch', 'SessionRoleMatch', 'SessionUserMatch'].includes(analysis.principalMatch);
|
|
48
|
+
}
|
|
2
49
|
//# sourceMappingURL=StatementAnalysis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatementAnalysis.js","sourceRoot":"","sources":["../../src/StatementAnalysis.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"StatementAnalysis.js","sourceRoot":"","sources":["../../src/StatementAnalysis.ts"],"names":[],"mappings":"AAsCA;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAA4B;IAClE,IAAG,SAAS,CAAC,aAAa;QACxB,SAAS,CAAC,WAAW;QACrB,SAAS,CAAC,cAAc,KAAK,OAAO;QACpC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,OAAO,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,wFAAwF;AACxF,kCAAkC;AAClC,+BAA+B;AAC/B,gDAAgD;AAChD,kDAAkD;AAClD,qBAAqB;AACrB,MAAM;AACN,iBAAiB;AACjB,IAAI;AAEJ,uFAAuF;AACvF,kCAAkC;AAClC,+BAA+B;AAC/B,gDAAgD;AAChD,iDAAiD;AACjD,qBAAqB;AACrB,MAAM;AACN,iBAAiB;AACjB,IAAI;AAEJ,MAAM,UAAU,6BAA6B,CAAC,SAA4B;IACxE,IAAG,SAAS,CAAC,aAAa;QACxB,SAAS,CAAC,WAAW;QACrB,SAAS,CAAC,cAAc,KAAK,OAAO;QACpC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAwG;IACvI,OAAO,QAAQ,CAAC,aAAa;QAC3B,QAAQ,CAAC,WAAW;QACpB,QAAQ,CAAC,cAAc,KAAK,OAAO;QACnC,CAAC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC7G,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Action, Statement } from "@cloud-copilot/iam-policy";
|
|
2
|
+
import { ActionExplain, StatementExplain } from "../explain/statementExplain.js";
|
|
2
3
|
import { AwsRequest } from "../request/request.js";
|
|
3
4
|
/**
|
|
4
5
|
* Check if a request matches the Action or NotAction elements of a statement.
|
|
@@ -7,7 +8,10 @@ import { AwsRequest } from "../request/request.js";
|
|
|
7
8
|
* @param statement the statement to check against
|
|
8
9
|
* @returns true if the request matches the Action or NotAction in the statement, false otherwise
|
|
9
10
|
*/
|
|
10
|
-
export declare function requestMatchesStatementActions(request: AwsRequest, statement: Statement):
|
|
11
|
+
export declare function requestMatchesStatementActions(request: AwsRequest, statement: Statement): {
|
|
12
|
+
matches: boolean;
|
|
13
|
+
details: Pick<StatementExplain, 'actions' | 'notActions'>;
|
|
14
|
+
};
|
|
11
15
|
/**
|
|
12
16
|
* Check if a request matches a set of actions.
|
|
13
17
|
*
|
|
@@ -15,7 +19,10 @@ export declare function requestMatchesStatementActions(request: AwsRequest, stat
|
|
|
15
19
|
* @param actions the actions to check against
|
|
16
20
|
* @returns true if the request matches any of the actions, false otherwise
|
|
17
21
|
*/
|
|
18
|
-
export declare function requestMatchesActions(request: AwsRequest, actions: Action[]):
|
|
22
|
+
export declare function requestMatchesActions(request: AwsRequest, actions: Action[]): {
|
|
23
|
+
matches: boolean;
|
|
24
|
+
explains: ActionExplain[];
|
|
25
|
+
};
|
|
19
26
|
/**
|
|
20
27
|
* Check if a request does not match a set of actions.
|
|
21
28
|
*
|
|
@@ -23,5 +30,8 @@ export declare function requestMatchesActions(request: AwsRequest, actions: Acti
|
|
|
23
30
|
* @param actions the actions to check against
|
|
24
31
|
* @returns true if the request does not match any of the actions, false if the request matches any of the actions
|
|
25
32
|
*/
|
|
26
|
-
export declare function requestMatchesNotActions(request: AwsRequest, actions: Action[]):
|
|
33
|
+
export declare function requestMatchesNotActions(request: AwsRequest, actions: Action[]): {
|
|
34
|
+
matches: boolean;
|
|
35
|
+
explains: ActionExplain[];
|
|
36
|
+
};
|
|
27
37
|
//# sourceMappingURL=action.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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,aAAa,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,YAAY,CAAC,CAAA;CAAC,CAevK;AAiBD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAA;CAAC,CAI3H;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAA;CAAC,CAS9H"}
|
|
@@ -7,10 +7,18 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export function requestMatchesStatementActions(request, statement) {
|
|
9
9
|
if (statement.isActionStatement()) {
|
|
10
|
-
|
|
10
|
+
const { matches, explains } = requestMatchesActions(request, statement.actions());
|
|
11
|
+
if (!statement.actionIsArray()) {
|
|
12
|
+
return { matches, details: { actions: explains[0] } };
|
|
13
|
+
}
|
|
14
|
+
return { matches, details: { actions: explains } };
|
|
11
15
|
}
|
|
12
16
|
else if (statement.isNotActionStatement()) {
|
|
13
|
-
|
|
17
|
+
const { matches, explains } = requestMatchesNotActions(request, statement.notActions());
|
|
18
|
+
if (!statement.notActionIsArray()) {
|
|
19
|
+
return { matches, details: { notActions: explains[0] } };
|
|
20
|
+
}
|
|
21
|
+
return { matches, details: { notActions: explains } };
|
|
14
22
|
}
|
|
15
23
|
throw new Error('Statement has neither Actions nor NotActions');
|
|
16
24
|
}
|
|
@@ -35,24 +43,9 @@ function convertActionToRegex(action) {
|
|
|
35
43
|
* @returns true if the request matches any of the actions, false otherwise
|
|
36
44
|
*/
|
|
37
45
|
export function requestMatchesActions(request, actions) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
else if (action.isServiceAction()) {
|
|
43
|
-
if (request.action.service() != action.service()) {
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
const actionRegex = convertActionToRegex(action.action());
|
|
47
|
-
if (actionRegex.test(request.action.action())) {
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
throw new Error('Unknown action type');
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return false;
|
|
46
|
+
const explains = actions.map(action => requestMatchesSingleAction(request, action));
|
|
47
|
+
const matches = explains.some(explain => explain.matches);
|
|
48
|
+
return { matches, explains };
|
|
56
49
|
}
|
|
57
50
|
/**
|
|
58
51
|
* Check if a request does not match a set of actions.
|
|
@@ -62,6 +55,35 @@ export function requestMatchesActions(request, actions) {
|
|
|
62
55
|
* @returns true if the request does not match any of the actions, false if the request matches any of the actions
|
|
63
56
|
*/
|
|
64
57
|
export function requestMatchesNotActions(request, actions) {
|
|
65
|
-
|
|
58
|
+
const explains = actions.map(action => {
|
|
59
|
+
const explain = requestMatchesSingleAction(request, action);
|
|
60
|
+
explain.matches = !explain.matches;
|
|
61
|
+
return explain;
|
|
62
|
+
});
|
|
63
|
+
const matches = !explains.some(explain => !explain.matches);
|
|
64
|
+
return { matches, explains };
|
|
65
|
+
}
|
|
66
|
+
function requestMatchesSingleAction(request, action) {
|
|
67
|
+
if (action.isWildcardAction()) {
|
|
68
|
+
return {
|
|
69
|
+
action: action.value(),
|
|
70
|
+
matches: true,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
else if (action.isServiceAction()) {
|
|
74
|
+
if (request.action.service() != action.service()) {
|
|
75
|
+
return {
|
|
76
|
+
action: action.value(),
|
|
77
|
+
matches: false,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const actionRegex = convertActionToRegex(action.action());
|
|
81
|
+
const matches = actionRegex.test(request.action.action());
|
|
82
|
+
return {
|
|
83
|
+
action: action.value(),
|
|
84
|
+
matches
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
throw new Error('Unknown action type');
|
|
66
88
|
}
|
|
67
89
|
//# sourceMappingURL=action.js.map
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/action/action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import { ConditionValueExplain } from "../explain/statementExplain.js";
|
|
1
2
|
import { AwsRequest } from "../request/request.js";
|
|
2
3
|
export interface BaseConditionOperator {
|
|
3
4
|
name: string;
|
|
4
|
-
matches: (request: AwsRequest, keyValue: string, policyValues: string[]) =>
|
|
5
|
+
matches: (request: AwsRequest, keyValue: string, policyValues: string[]) => {
|
|
6
|
+
matches: boolean;
|
|
7
|
+
explains: ConditionValueExplain[];
|
|
8
|
+
};
|
|
5
9
|
allowsVariables: boolean;
|
|
6
10
|
allowsWildcards: boolean;
|
|
11
|
+
isNegative: boolean;
|
|
7
12
|
}
|
|
8
13
|
//# sourceMappingURL=BaseConditionOperator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseConditionOperator.d.ts","sourceRoot":"","sources":["../../../src/condition/BaseConditionOperator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"BaseConditionOperator.d.ts","sourceRoot":"","sources":["../../../src/condition/BaseConditionOperator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAA;KAAE,CAAA;IACnI,eAAe,EAAE,OAAO,CAAA;IACxB,eAAe,EAAE,OAAO,CAAA;IACxB,UAAU,EAAE,OAAO,CAAA;CACpB"}
|
|
@@ -1 +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,
|
|
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,qBAMvB,CAAA"}
|
|
@@ -3,6 +3,7 @@ export const ArnEquals = {
|
|
|
3
3
|
name: 'ArnEquals',
|
|
4
4
|
matches: ArnLike.matches,
|
|
5
5
|
allowsVariables: ArnLike.allowsVariables,
|
|
6
|
-
allowsWildcards: ArnLike.allowsWildcards
|
|
6
|
+
allowsWildcards: ArnLike.allowsWildcards,
|
|
7
|
+
isNegative: ArnLike.isNegative
|
|
7
8
|
};
|
|
8
9
|
//# sourceMappingURL=ArnEquals.js.map
|
|
@@ -1 +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;
|
|
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;IACxC,UAAU,EAAE,OAAO,CAAC,UAAU;CAC/B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArnLike.d.ts","sourceRoot":"","sources":["../../../../src/condition/arn/ArnLike.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ArnLike.d.ts","sourceRoot":"","sources":["../../../../src/condition/arn/ArnLike.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,eAAO,MAAM,OAAO,EAAE,qBAerB,CAAA"}
|
|
@@ -1,47 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { arnMatches } from "./arn.js";
|
|
2
2
|
export const ArnLike = {
|
|
3
3
|
name: 'ArnLike',
|
|
4
4
|
matches: (request, keyValue, policyValues) => {
|
|
5
|
-
|
|
5
|
+
const explains = policyValues.map(policyArn => arnMatches(policyArn, keyValue, request, true));
|
|
6
|
+
return {
|
|
7
|
+
matches: explains.some(explain => explain.matches),
|
|
8
|
+
explains
|
|
9
|
+
};
|
|
6
10
|
},
|
|
7
11
|
allowsVariables: true,
|
|
8
|
-
allowsWildcards: true
|
|
12
|
+
allowsWildcards: true,
|
|
13
|
+
isNegative: false
|
|
9
14
|
};
|
|
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
15
|
//# sourceMappingURL=ArnLike.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArnLike.js","sourceRoot":"","sources":["../../../../src/condition/arn/ArnLike.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ArnLike.js","sourceRoot":"","sources":["../../../../src/condition/arn/ArnLike.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,CAAC,MAAM,OAAO,GAA0B;IAC5C,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAC/B,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAC5D,CAAA;QAED,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;YAClD,QAAQ;SACT,CAAA;IACH,CAAC;IACD,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE,KAAK;CAClB,CAAA"}
|
|
@@ -1 +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,
|
|
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,qBAM1B,CAAA"}
|
|
@@ -3,6 +3,7 @@ export const ArnNotEquals = {
|
|
|
3
3
|
name: 'ArnNotEquals',
|
|
4
4
|
matches: ArnNotLike.matches,
|
|
5
5
|
allowsVariables: ArnNotLike.allowsVariables,
|
|
6
|
-
allowsWildcards: ArnNotLike.allowsWildcards
|
|
6
|
+
allowsWildcards: ArnNotLike.allowsWildcards,
|
|
7
|
+
isNegative: ArnNotLike.isNegative
|
|
7
8
|
};
|
|
8
9
|
//# sourceMappingURL=ArnNotEquals.js.map
|
|
@@ -1 +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;
|
|
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;IAC3C,UAAU,EAAE,UAAU,CAAC,UAAU;CAClC,CAAA"}
|
|
@@ -1 +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,
|
|
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,qBAexB,CAAA"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { arnMatches } from "./arn.js";
|
|
2
2
|
export const ArnNotLike = {
|
|
3
3
|
name: 'ArnNotLike',
|
|
4
4
|
matches: (request, keyValue, policyValues) => {
|
|
5
|
-
|
|
5
|
+
const explains = policyValues.map(policyArn => arnMatches(policyArn, keyValue, request, false));
|
|
6
|
+
return {
|
|
7
|
+
matches: !explains.some(explain => !explain.matches),
|
|
8
|
+
explains
|
|
9
|
+
};
|
|
6
10
|
},
|
|
7
11
|
allowsVariables: true,
|
|
8
|
-
allowsWildcards: true
|
|
12
|
+
allowsWildcards: true,
|
|
13
|
+
isNegative: true
|
|
9
14
|
};
|
|
10
15
|
//# sourceMappingURL=ArnNotLike.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArnNotLike.js","sourceRoot":"","sources":["../../../../src/condition/arn/ArnNotLike.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ArnNotLike.js","sourceRoot":"","sources":["../../../../src/condition/arn/ArnNotLike.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,CAAC,MAAM,UAAU,GAA0B;IAC/C,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAC/B,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAC7D,CAAA;QAED,OAAO;YACL,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;YACpD,QAAQ;SACT,CAAA;IACH,CAAC;IACD,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE,IAAI;CACjB,CAAA"}
|