@actsecurity/iam-simulate 0.1.173
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/LICENSE.txt +661 -0
- package/README.md +257 -0
- package/dist/cjs/StatementAnalysis.d.ts +63 -0
- package/dist/cjs/StatementAnalysis.d.ts.map +1 -0
- package/dist/cjs/StatementAnalysis.js +48 -0
- package/dist/cjs/StatementAnalysis.js.map +1 -0
- package/dist/cjs/action/action.d.ts +37 -0
- package/dist/cjs/action/action.d.ts.map +1 -0
- package/dist/cjs/action/action.js +102 -0
- package/dist/cjs/action/action.js.map +1 -0
- package/dist/cjs/analysis/allowedConditions.d.ts +61 -0
- package/dist/cjs/analysis/allowedConditions.d.ts.map +1 -0
- package/dist/cjs/analysis/allowedConditions.js +395 -0
- package/dist/cjs/analysis/allowedConditions.js.map +1 -0
- package/dist/cjs/analysis/analyzeResults.d.ts +99 -0
- package/dist/cjs/analysis/analyzeResults.d.ts.map +1 -0
- package/dist/cjs/analysis/analyzeResults.js +187 -0
- package/dist/cjs/analysis/analyzeResults.js.map +1 -0
- package/dist/cjs/condition/BaseConditionOperator.d.ts +13 -0
- package/dist/cjs/condition/BaseConditionOperator.d.ts.map +1 -0
- package/dist/cjs/condition/BaseConditionOperator.js +3 -0
- package/dist/cjs/condition/BaseConditionOperator.js.map +1 -0
- package/dist/cjs/condition/arn/ArnEquals.d.ts +3 -0
- package/dist/cjs/condition/arn/ArnEquals.d.ts.map +1 -0
- package/dist/cjs/condition/arn/ArnEquals.js +12 -0
- package/dist/cjs/condition/arn/ArnEquals.js.map +1 -0
- package/dist/cjs/condition/arn/ArnLike.d.ts +3 -0
- package/dist/cjs/condition/arn/ArnLike.d.ts.map +1 -0
- package/dist/cjs/condition/arn/ArnLike.js +18 -0
- package/dist/cjs/condition/arn/ArnLike.js.map +1 -0
- package/dist/cjs/condition/arn/ArnNotEquals.d.ts +3 -0
- package/dist/cjs/condition/arn/ArnNotEquals.d.ts.map +1 -0
- package/dist/cjs/condition/arn/ArnNotEquals.js +12 -0
- package/dist/cjs/condition/arn/ArnNotEquals.js.map +1 -0
- package/dist/cjs/condition/arn/ArnNotLike.d.ts +3 -0
- package/dist/cjs/condition/arn/ArnNotLike.d.ts.map +1 -0
- package/dist/cjs/condition/arn/ArnNotLike.js +18 -0
- package/dist/cjs/condition/arn/ArnNotLike.js.map +1 -0
- 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 +71 -0
- package/dist/cjs/condition/arn/arn.js.map +1 -0
- package/dist/cjs/condition/binary/BinaryEquals.d.ts +7 -0
- package/dist/cjs/condition/binary/BinaryEquals.d.ts.map +1 -0
- package/dist/cjs/condition/binary/BinaryEquals.js +28 -0
- package/dist/cjs/condition/binary/BinaryEquals.js.map +1 -0
- package/dist/cjs/condition/boolean/Bool.d.ts +3 -0
- package/dist/cjs/condition/boolean/Bool.d.ts.map +1 -0
- package/dist/cjs/condition/boolean/Bool.js +54 -0
- package/dist/cjs/condition/boolean/Bool.js.map +1 -0
- package/dist/cjs/condition/condition.d.ts +26 -0
- package/dist/cjs/condition/condition.d.ts.map +1 -0
- package/dist/cjs/condition/condition.js +665 -0
- package/dist/cjs/condition/condition.js.map +1 -0
- 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 +19 -0
- package/dist/cjs/condition/conditionUtil.js.map +1 -0
- package/dist/cjs/condition/date/DateEquals.d.ts +3 -0
- package/dist/cjs/condition/date/DateEquals.d.ts.map +1 -0
- package/dist/cjs/condition/date/DateEquals.js +22 -0
- package/dist/cjs/condition/date/DateEquals.js.map +1 -0
- package/dist/cjs/condition/date/DateGreaterThan.d.ts +3 -0
- package/dist/cjs/condition/date/DateGreaterThan.d.ts.map +1 -0
- package/dist/cjs/condition/date/DateGreaterThan.js +22 -0
- package/dist/cjs/condition/date/DateGreaterThan.js.map +1 -0
- package/dist/cjs/condition/date/DateGreaterThanEquals.d.ts +3 -0
- package/dist/cjs/condition/date/DateGreaterThanEquals.d.ts.map +1 -0
- package/dist/cjs/condition/date/DateGreaterThanEquals.js +22 -0
- package/dist/cjs/condition/date/DateGreaterThanEquals.js.map +1 -0
- package/dist/cjs/condition/date/DateLessThan.d.ts +3 -0
- package/dist/cjs/condition/date/DateLessThan.d.ts.map +1 -0
- package/dist/cjs/condition/date/DateLessThan.js +22 -0
- package/dist/cjs/condition/date/DateLessThan.js.map +1 -0
- package/dist/cjs/condition/date/DateLessThanEquals.d.ts +3 -0
- package/dist/cjs/condition/date/DateLessThanEquals.d.ts.map +1 -0
- package/dist/cjs/condition/date/DateLessThanEquals.js +22 -0
- package/dist/cjs/condition/date/DateLessThanEquals.js.map +1 -0
- package/dist/cjs/condition/date/DateNotEquals.d.ts +3 -0
- package/dist/cjs/condition/date/DateNotEquals.d.ts.map +1 -0
- package/dist/cjs/condition/date/DateNotEquals.js +22 -0
- package/dist/cjs/condition/date/DateNotEquals.js.map +1 -0
- package/dist/cjs/condition/date/date.d.ts +18 -0
- package/dist/cjs/condition/date/date.d.ts.map +1 -0
- package/dist/cjs/condition/date/date.js +57 -0
- package/dist/cjs/condition/date/date.js.map +1 -0
- package/dist/cjs/condition/ipaddress/IpAddress.d.ts +3 -0
- package/dist/cjs/condition/ipaddress/IpAddress.d.ts.map +1 -0
- package/dist/cjs/condition/ipaddress/IpAddress.js +20 -0
- package/dist/cjs/condition/ipaddress/IpAddress.js.map +1 -0
- package/dist/cjs/condition/ipaddress/NotIpAddress.d.ts +3 -0
- package/dist/cjs/condition/ipaddress/NotIpAddress.d.ts.map +1 -0
- package/dist/cjs/condition/ipaddress/NotIpAddress.js +20 -0
- package/dist/cjs/condition/ipaddress/NotIpAddress.js.map +1 -0
- package/dist/cjs/condition/ipaddress/ip.d.ts +11 -0
- package/dist/cjs/condition/ipaddress/ip.d.ts.map +1 -0
- package/dist/cjs/condition/ipaddress/ip.js +70 -0
- package/dist/cjs/condition/ipaddress/ip.js.map +1 -0
- package/dist/cjs/condition/ipaddress/ipv4.d.ts +24 -0
- package/dist/cjs/condition/ipaddress/ipv4.d.ts.map +1 -0
- package/dist/cjs/condition/ipaddress/ipv4.js +59 -0
- package/dist/cjs/condition/ipaddress/ipv4.js.map +1 -0
- package/dist/cjs/condition/ipaddress/ipv6.d.ts +24 -0
- package/dist/cjs/condition/ipaddress/ipv6.d.ts.map +1 -0
- package/dist/cjs/condition/ipaddress/ipv6.js +111 -0
- package/dist/cjs/condition/ipaddress/ipv6.js.map +1 -0
- package/dist/cjs/condition/numeric/NumericEquals.d.ts +3 -0
- package/dist/cjs/condition/numeric/NumericEquals.d.ts.map +1 -0
- package/dist/cjs/condition/numeric/NumericEquals.js +22 -0
- package/dist/cjs/condition/numeric/NumericEquals.js.map +1 -0
- package/dist/cjs/condition/numeric/NumericGreaterThan.d.ts +3 -0
- package/dist/cjs/condition/numeric/NumericGreaterThan.d.ts.map +1 -0
- package/dist/cjs/condition/numeric/NumericGreaterThan.js +22 -0
- package/dist/cjs/condition/numeric/NumericGreaterThan.js.map +1 -0
- package/dist/cjs/condition/numeric/NumericGreaterThanEquals.d.ts +3 -0
- package/dist/cjs/condition/numeric/NumericGreaterThanEquals.d.ts.map +1 -0
- package/dist/cjs/condition/numeric/NumericGreaterThanEquals.js +22 -0
- package/dist/cjs/condition/numeric/NumericGreaterThanEquals.js.map +1 -0
- package/dist/cjs/condition/numeric/NumericLessThan.d.ts +3 -0
- package/dist/cjs/condition/numeric/NumericLessThan.d.ts.map +1 -0
- package/dist/cjs/condition/numeric/NumericLessThan.js +22 -0
- package/dist/cjs/condition/numeric/NumericLessThan.js.map +1 -0
- package/dist/cjs/condition/numeric/NumericLessThanEquals.d.ts +3 -0
- package/dist/cjs/condition/numeric/NumericLessThanEquals.d.ts.map +1 -0
- package/dist/cjs/condition/numeric/NumericLessThanEquals.js +22 -0
- package/dist/cjs/condition/numeric/NumericLessThanEquals.js.map +1 -0
- package/dist/cjs/condition/numeric/NumericNotEquals.d.ts +3 -0
- package/dist/cjs/condition/numeric/NumericNotEquals.d.ts.map +1 -0
- package/dist/cjs/condition/numeric/NumericNotEquals.js +22 -0
- package/dist/cjs/condition/numeric/NumericNotEquals.js.map +1 -0
- package/dist/cjs/condition/numeric/numeric.d.ts +18 -0
- package/dist/cjs/condition/numeric/numeric.d.ts.map +1 -0
- package/dist/cjs/condition/numeric/numeric.js +56 -0
- package/dist/cjs/condition/numeric/numeric.js.map +1 -0
- package/dist/cjs/condition/string/StringEquals.d.ts +3 -0
- package/dist/cjs/condition/string/StringEquals.d.ts.map +1 -0
- package/dist/cjs/condition/string/StringEquals.js +35 -0
- package/dist/cjs/condition/string/StringEquals.js.map +1 -0
- package/dist/cjs/condition/string/StringEqualsIgnoreCase.d.ts +3 -0
- package/dist/cjs/condition/string/StringEqualsIgnoreCase.d.ts.map +1 -0
- package/dist/cjs/condition/string/StringEqualsIgnoreCase.js +35 -0
- package/dist/cjs/condition/string/StringEqualsIgnoreCase.js.map +1 -0
- package/dist/cjs/condition/string/StringLike.d.ts +3 -0
- package/dist/cjs/condition/string/StringLike.d.ts.map +1 -0
- package/dist/cjs/condition/string/StringLike.js +35 -0
- package/dist/cjs/condition/string/StringLike.js.map +1 -0
- package/dist/cjs/condition/string/StringNotEquals.d.ts +3 -0
- package/dist/cjs/condition/string/StringNotEquals.d.ts.map +1 -0
- package/dist/cjs/condition/string/StringNotEquals.js +35 -0
- package/dist/cjs/condition/string/StringNotEquals.js.map +1 -0
- package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.d.ts +3 -0
- package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.d.ts.map +1 -0
- package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.js +35 -0
- package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.js.map +1 -0
- package/dist/cjs/condition/string/StringNotLike.d.ts +3 -0
- package/dist/cjs/condition/string/StringNotLike.d.ts.map +1 -0
- package/dist/cjs/condition/string/StringNotLike.js +35 -0
- package/dist/cjs/condition/string/StringNotLike.js.map +1 -0
- package/dist/cjs/context_keys/contextKeyTypes.d.ts +19 -0
- package/dist/cjs/context_keys/contextKeyTypes.d.ts.map +1 -0
- package/dist/cjs/context_keys/contextKeyTypes.js +27 -0
- package/dist/cjs/context_keys/contextKeyTypes.js.map +1 -0
- package/dist/cjs/context_keys/contextKeys.d.ts +24 -0
- package/dist/cjs/context_keys/contextKeys.d.ts.map +1 -0
- package/dist/cjs/context_keys/contextKeys.js +121 -0
- package/dist/cjs/context_keys/contextKeys.js.map +1 -0
- package/dist/cjs/context_keys/discoveryContextKeyConstraints.d.ts +103 -0
- package/dist/cjs/context_keys/discoveryContextKeyConstraints.d.ts.map +1 -0
- package/dist/cjs/context_keys/discoveryContextKeyConstraints.js +153 -0
- package/dist/cjs/context_keys/discoveryContextKeyConstraints.js.map +1 -0
- package/dist/cjs/context_keys/findContextKeys.d.ts +19 -0
- package/dist/cjs/context_keys/findContextKeys.d.ts.map +1 -0
- package/dist/cjs/context_keys/findContextKeys.js +58 -0
- package/dist/cjs/context_keys/findContextKeys.js.map +1 -0
- package/dist/cjs/core_engine/CoreSimulatorEngine.d.ts +134 -0
- package/dist/cjs/core_engine/CoreSimulatorEngine.d.ts.map +1 -0
- package/dist/cjs/core_engine/CoreSimulatorEngine.js +444 -0
- package/dist/cjs/core_engine/CoreSimulatorEngine.js.map +1 -0
- package/dist/cjs/evaluate.d.ts +199 -0
- package/dist/cjs/evaluate.d.ts.map +1 -0
- package/dist/cjs/evaluate.js +3 -0
- package/dist/cjs/evaluate.js.map +1 -0
- 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 +260 -0
- package/dist/cjs/explain/displayExplainCli.js.map +1 -0
- package/dist/cjs/explain/statementExplain.d.ts +161 -0
- package/dist/cjs/explain/statementExplain.d.ts.map +1 -0
- package/dist/cjs/explain/statementExplain.js +33 -0
- package/dist/cjs/explain/statementExplain.js.map +1 -0
- package/dist/cjs/global_conditions/globalConditionKeys.d.ts +3 -0
- package/dist/cjs/global_conditions/globalConditionKeys.d.ts.map +1 -0
- package/dist/cjs/global_conditions/globalConditionKeys.js +12 -0
- package/dist/cjs/global_conditions/globalConditionKeys.js.map +1 -0
- package/dist/cjs/index.d.ts +16 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +25 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/policyType.d.ts +13 -0
- package/dist/cjs/policyType.d.ts.map +1 -0
- package/dist/cjs/policyType.js +3 -0
- package/dist/cjs/policyType.js.map +1 -0
- package/dist/cjs/principal/principal.d.ts +61 -0
- package/dist/cjs/principal/principal.d.ts.map +1 -0
- package/dist/cjs/principal/principal.js +357 -0
- package/dist/cjs/principal/principal.js.map +1 -0
- package/dist/cjs/request/request.d.ts +66 -0
- package/dist/cjs/request/request.d.ts.map +1 -0
- package/dist/cjs/request/request.js +42 -0
- package/dist/cjs/request/request.js.map +1 -0
- package/dist/cjs/request/requestAction.d.ts +27 -0
- package/dist/cjs/request/requestAction.d.ts.map +1 -0
- package/dist/cjs/request/requestAction.js +20 -0
- package/dist/cjs/request/requestAction.js.map +1 -0
- package/dist/cjs/request/requestPrincipal.d.ts +92 -0
- package/dist/cjs/request/requestPrincipal.d.ts.map +1 -0
- package/dist/cjs/request/requestPrincipal.js +88 -0
- package/dist/cjs/request/requestPrincipal.js.map +1 -0
- package/dist/cjs/request/requestResource.d.ts +55 -0
- package/dist/cjs/request/requestResource.d.ts.map +1 -0
- package/dist/cjs/request/requestResource.js +40 -0
- package/dist/cjs/request/requestResource.js.map +1 -0
- package/dist/cjs/requestContext.d.ts +63 -0
- package/dist/cjs/requestContext.d.ts.map +1 -0
- package/dist/cjs/requestContext.js +46 -0
- package/dist/cjs/requestContext.js.map +1 -0
- package/dist/cjs/resource/resource.d.ts +54 -0
- package/dist/cjs/resource/resource.d.ts.map +1 -0
- package/dist/cjs/resource/resource.js +585 -0
- package/dist/cjs/resource/resource.js.map +1 -0
- package/dist/cjs/services/DefaultServiceAuthorizer.d.ts +182 -0
- package/dist/cjs/services/DefaultServiceAuthorizer.d.ts.map +1 -0
- package/dist/cjs/services/DefaultServiceAuthorizer.js +625 -0
- package/dist/cjs/services/DefaultServiceAuthorizer.js.map +1 -0
- package/dist/cjs/services/IamServiceAuthorizer.d.ts +10 -0
- package/dist/cjs/services/IamServiceAuthorizer.d.ts.map +1 -0
- package/dist/cjs/services/IamServiceAuthorizer.js +65 -0
- package/dist/cjs/services/IamServiceAuthorizer.js.map +1 -0
- package/dist/cjs/services/KmsServiceAuthorizer.d.ts +29 -0
- package/dist/cjs/services/KmsServiceAuthorizer.d.ts.map +1 -0
- package/dist/cjs/services/KmsServiceAuthorizer.js +83 -0
- package/dist/cjs/services/KmsServiceAuthorizer.js.map +1 -0
- package/dist/cjs/services/ServiceAuthorizer.d.ts +27 -0
- package/dist/cjs/services/ServiceAuthorizer.d.ts.map +1 -0
- package/dist/cjs/services/ServiceAuthorizer.js +3 -0
- package/dist/cjs/services/ServiceAuthorizer.js.map +1 -0
- package/dist/cjs/services/StsServiceAuthorizer.d.ts +19 -0
- package/dist/cjs/services/StsServiceAuthorizer.d.ts.map +1 -0
- package/dist/cjs/services/StsServiceAuthorizer.js +45 -0
- package/dist/cjs/services/StsServiceAuthorizer.js.map +1 -0
- package/dist/cjs/services/s3/S3ServiceAuthorizer.d.ts +24 -0
- package/dist/cjs/services/s3/S3ServiceAuthorizer.d.ts.map +1 -0
- package/dist/cjs/services/s3/S3ServiceAuthorizer.js +79 -0
- package/dist/cjs/services/s3/S3ServiceAuthorizer.js.map +1 -0
- package/dist/cjs/services/s3/s3BlockPublicAccess.d.ts +50 -0
- package/dist/cjs/services/s3/s3BlockPublicAccess.d.ts.map +1 -0
- package/dist/cjs/services/s3/s3BlockPublicAccess.js +301 -0
- package/dist/cjs/services/s3/s3BlockPublicAccess.js.map +1 -0
- package/dist/cjs/simulation_engine/contextKeys.d.ts +13 -0
- package/dist/cjs/simulation_engine/contextKeys.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/contextKeys.js +58 -0
- package/dist/cjs/simulation_engine/contextKeys.js.map +1 -0
- package/dist/cjs/simulation_engine/overallResult.d.ts +13 -0
- package/dist/cjs/simulation_engine/overallResult.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/overallResult.js +35 -0
- package/dist/cjs/simulation_engine/overallResult.js.map +1 -0
- package/dist/cjs/simulation_engine/policyResources.d.ts +44 -0
- package/dist/cjs/simulation_engine/policyResources.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/policyResources.js +120 -0
- package/dist/cjs/simulation_engine/policyResources.js.map +1 -0
- package/dist/cjs/simulation_engine/resourceTypes.d.ts +11 -0
- package/dist/cjs/simulation_engine/resourceTypes.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/resourceTypes.js +26 -0
- package/dist/cjs/simulation_engine/resourceTypes.js.map +1 -0
- package/dist/cjs/simulation_engine/simulation.d.ts +114 -0
- package/dist/cjs/simulation_engine/simulation.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/simulation.js +35 -0
- package/dist/cjs/simulation_engine/simulation.js.map +1 -0
- package/dist/cjs/simulation_engine/simulationEngine.d.ts +128 -0
- package/dist/cjs/simulation_engine/simulationEngine.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/simulationEngine.js +432 -0
- package/dist/cjs/simulation_engine/simulationEngine.js.map +1 -0
- package/dist/cjs/simulation_engine/simulationOptions.d.ts +21 -0
- package/dist/cjs/simulation_engine/simulationOptions.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/simulationOptions.js +3 -0
- package/dist/cjs/simulation_engine/simulationOptions.js.map +1 -0
- package/dist/cjs/simulation_engine/unsafeSimulationEngine.d.ts +13 -0
- package/dist/cjs/simulation_engine/unsafeSimulationEngine.d.ts.map +1 -0
- package/dist/cjs/simulation_engine/unsafeSimulationEngine.js +62 -0
- package/dist/cjs/simulation_engine/unsafeSimulationEngine.js.map +1 -0
- package/dist/cjs/util/resourceStrings.d.ts +19 -0
- package/dist/cjs/util/resourceStrings.d.ts.map +1 -0
- package/dist/cjs/util/resourceStrings.js +107 -0
- package/dist/cjs/util/resourceStrings.js.map +1 -0
- package/dist/cjs/util.d.ts +90 -0
- package/dist/cjs/util.d.ts.map +1 -0
- package/dist/cjs/util.js +350 -0
- package/dist/cjs/util.js.map +1 -0
- package/dist/esm/StatementAnalysis.d.ts +63 -0
- package/dist/esm/StatementAnalysis.d.ts.map +1 -0
- package/dist/esm/StatementAnalysis.js +46 -0
- package/dist/esm/StatementAnalysis.js.map +1 -0
- package/dist/esm/action/action.d.ts +37 -0
- package/dist/esm/action/action.d.ts.map +1 -0
- package/dist/esm/action/action.js +100 -0
- package/dist/esm/action/action.js.map +1 -0
- package/dist/esm/analysis/allowedConditions.d.ts +61 -0
- package/dist/esm/analysis/allowedConditions.d.ts.map +1 -0
- package/dist/esm/analysis/allowedConditions.js +382 -0
- package/dist/esm/analysis/allowedConditions.js.map +1 -0
- package/dist/esm/analysis/analyzeResults.d.ts +99 -0
- package/dist/esm/analysis/analyzeResults.d.ts.map +1 -0
- package/dist/esm/analysis/analyzeResults.js +183 -0
- package/dist/esm/analysis/analyzeResults.js.map +1 -0
- package/dist/esm/condition/BaseConditionOperator.d.ts +13 -0
- package/dist/esm/condition/BaseConditionOperator.d.ts.map +1 -0
- package/dist/esm/condition/BaseConditionOperator.js +3 -0
- package/dist/esm/condition/BaseConditionOperator.js.map +1 -0
- 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 +10 -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 +16 -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 +10 -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 +16 -0
- package/dist/esm/condition/arn/ArnNotLike.js.map +1 -0
- 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 +70 -0
- package/dist/esm/condition/arn/arn.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 +27 -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 +53 -0
- package/dist/esm/condition/boolean/Bool.js.map +1 -0
- package/dist/esm/condition/condition.d.ts +26 -0
- package/dist/esm/condition/condition.d.ts.map +1 -0
- package/dist/esm/condition/condition.js +666 -0
- package/dist/esm/condition/condition.js.map +1 -0
- 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 +17 -0
- package/dist/esm/condition/conditionUtil.js.map +1 -0
- 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 +20 -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 +20 -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 +20 -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 +20 -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 +20 -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 +20 -0
- package/dist/esm/condition/date/DateNotEquals.js.map +1 -0
- package/dist/esm/condition/date/date.d.ts +18 -0
- package/dist/esm/condition/date/date.d.ts.map +1 -0
- package/dist/esm/condition/date/date.js +54 -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 +18 -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 +18 -0
- package/dist/esm/condition/ipaddress/NotIpAddress.js.map +1 -0
- package/dist/esm/condition/ipaddress/ip.d.ts +11 -0
- package/dist/esm/condition/ipaddress/ip.d.ts.map +1 -0
- package/dist/esm/condition/ipaddress/ip.js +68 -0
- package/dist/esm/condition/ipaddress/ip.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 +20 -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 +20 -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 +20 -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 +20 -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 +20 -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 +20 -0
- package/dist/esm/condition/numeric/NumericNotEquals.js.map +1 -0
- package/dist/esm/condition/numeric/numeric.d.ts +18 -0
- package/dist/esm/condition/numeric/numeric.d.ts.map +1 -0
- package/dist/esm/condition/numeric/numeric.js +53 -0
- package/dist/esm/condition/numeric/numeric.js.map +1 -0
- package/dist/esm/condition/string/StringEquals.d.ts +3 -0
- package/dist/esm/condition/string/StringEquals.d.ts.map +1 -0
- package/dist/esm/condition/string/StringEquals.js +34 -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 +34 -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 +34 -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 +34 -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 +34 -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 +34 -0
- package/dist/esm/condition/string/StringNotLike.js.map +1 -0
- package/dist/esm/context_keys/contextKeyTypes.d.ts +19 -0
- package/dist/esm/context_keys/contextKeyTypes.d.ts.map +1 -0
- package/dist/esm/context_keys/contextKeyTypes.js +23 -0
- package/dist/esm/context_keys/contextKeyTypes.js.map +1 -0
- package/dist/esm/context_keys/contextKeys.d.ts +24 -0
- package/dist/esm/context_keys/contextKeys.d.ts.map +1 -0
- package/dist/esm/context_keys/contextKeys.js +117 -0
- package/dist/esm/context_keys/contextKeys.js.map +1 -0
- package/dist/esm/context_keys/discoveryContextKeyConstraints.d.ts +103 -0
- package/dist/esm/context_keys/discoveryContextKeyConstraints.d.ts.map +1 -0
- package/dist/esm/context_keys/discoveryContextKeyConstraints.js +149 -0
- package/dist/esm/context_keys/discoveryContextKeyConstraints.js.map +1 -0
- package/dist/esm/context_keys/findContextKeys.d.ts +19 -0
- package/dist/esm/context_keys/findContextKeys.d.ts.map +1 -0
- package/dist/esm/context_keys/findContextKeys.js +55 -0
- package/dist/esm/context_keys/findContextKeys.js.map +1 -0
- package/dist/esm/core_engine/CoreSimulatorEngine.d.ts +134 -0
- package/dist/esm/core_engine/CoreSimulatorEngine.d.ts.map +1 -0
- package/dist/esm/core_engine/CoreSimulatorEngine.js +441 -0
- package/dist/esm/core_engine/CoreSimulatorEngine.js.map +1 -0
- package/dist/esm/evaluate.d.ts +199 -0
- package/dist/esm/evaluate.d.ts.map +1 -0
- package/dist/esm/evaluate.js +2 -0
- package/dist/esm/evaluate.js.map +1 -0
- 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 +258 -0
- package/dist/esm/explain/displayExplainCli.js.map +1 -0
- package/dist/esm/explain/statementExplain.d.ts +161 -0
- package/dist/esm/explain/statementExplain.d.ts.map +1 -0
- package/dist/esm/explain/statementExplain.js +30 -0
- package/dist/esm/explain/statementExplain.js.map +1 -0
- package/dist/esm/global_conditions/globalConditionKeys.d.ts +3 -0
- package/dist/esm/global_conditions/globalConditionKeys.d.ts.map +1 -0
- package/dist/esm/global_conditions/globalConditionKeys.js +9 -0
- package/dist/esm/global_conditions/globalConditionKeys.js.map +1 -0
- package/dist/esm/index.d.ts +16 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/policyType.d.ts +13 -0
- package/dist/esm/policyType.d.ts.map +1 -0
- package/dist/esm/policyType.js +2 -0
- package/dist/esm/policyType.js.map +1 -0
- package/dist/esm/principal/principal.d.ts +61 -0
- package/dist/esm/principal/principal.d.ts.map +1 -0
- package/dist/esm/principal/principal.js +354 -0
- package/dist/esm/principal/principal.js.map +1 -0
- package/dist/esm/request/request.d.ts +66 -0
- package/dist/esm/request/request.d.ts.map +1 -0
- package/dist/esm/request/request.js +34 -0
- package/dist/esm/request/request.js.map +1 -0
- package/dist/esm/request/requestAction.d.ts +27 -0
- package/dist/esm/request/requestAction.d.ts.map +1 -0
- package/dist/esm/request/requestAction.js +15 -0
- package/dist/esm/request/requestAction.js.map +1 -0
- package/dist/esm/request/requestPrincipal.d.ts +92 -0
- package/dist/esm/request/requestPrincipal.d.ts.map +1 -0
- package/dist/esm/request/requestPrincipal.js +80 -0
- package/dist/esm/request/requestPrincipal.js.map +1 -0
- package/dist/esm/request/requestResource.d.ts +55 -0
- package/dist/esm/request/requestResource.d.ts.map +1 -0
- package/dist/esm/request/requestResource.js +34 -0
- package/dist/esm/request/requestResource.js.map +1 -0
- package/dist/esm/requestContext.d.ts +63 -0
- package/dist/esm/requestContext.d.ts.map +1 -0
- package/dist/esm/requestContext.js +39 -0
- package/dist/esm/requestContext.js.map +1 -0
- package/dist/esm/resource/resource.d.ts +54 -0
- package/dist/esm/resource/resource.d.ts.map +1 -0
- package/dist/esm/resource/resource.js +582 -0
- package/dist/esm/resource/resource.js.map +1 -0
- package/dist/esm/services/DefaultServiceAuthorizer.d.ts +182 -0
- package/dist/esm/services/DefaultServiceAuthorizer.d.ts.map +1 -0
- package/dist/esm/services/DefaultServiceAuthorizer.js +623 -0
- package/dist/esm/services/DefaultServiceAuthorizer.js.map +1 -0
- package/dist/esm/services/IamServiceAuthorizer.d.ts +10 -0
- package/dist/esm/services/IamServiceAuthorizer.d.ts.map +1 -0
- package/dist/esm/services/IamServiceAuthorizer.js +63 -0
- package/dist/esm/services/IamServiceAuthorizer.js.map +1 -0
- package/dist/esm/services/KmsServiceAuthorizer.d.ts +29 -0
- package/dist/esm/services/KmsServiceAuthorizer.d.ts.map +1 -0
- package/dist/esm/services/KmsServiceAuthorizer.js +82 -0
- package/dist/esm/services/KmsServiceAuthorizer.js.map +1 -0
- package/dist/esm/services/ServiceAuthorizer.d.ts +27 -0
- package/dist/esm/services/ServiceAuthorizer.d.ts.map +1 -0
- package/dist/esm/services/ServiceAuthorizer.js +5 -0
- package/dist/esm/services/ServiceAuthorizer.js.map +1 -0
- package/dist/esm/services/StsServiceAuthorizer.d.ts +19 -0
- package/dist/esm/services/StsServiceAuthorizer.d.ts.map +1 -0
- package/dist/esm/services/StsServiceAuthorizer.js +44 -0
- package/dist/esm/services/StsServiceAuthorizer.js.map +1 -0
- package/dist/esm/services/s3/S3ServiceAuthorizer.d.ts +24 -0
- package/dist/esm/services/s3/S3ServiceAuthorizer.d.ts.map +1 -0
- package/dist/esm/services/s3/S3ServiceAuthorizer.js +76 -0
- package/dist/esm/services/s3/S3ServiceAuthorizer.js.map +1 -0
- package/dist/esm/services/s3/s3BlockPublicAccess.d.ts +50 -0
- package/dist/esm/services/s3/s3BlockPublicAccess.d.ts.map +1 -0
- package/dist/esm/services/s3/s3BlockPublicAccess.js +299 -0
- package/dist/esm/services/s3/s3BlockPublicAccess.js.map +1 -0
- package/dist/esm/simulation_engine/contextKeys.d.ts +13 -0
- package/dist/esm/simulation_engine/contextKeys.d.ts.map +1 -0
- package/dist/esm/simulation_engine/contextKeys.js +55 -0
- package/dist/esm/simulation_engine/contextKeys.js.map +1 -0
- package/dist/esm/simulation_engine/overallResult.d.ts +13 -0
- package/dist/esm/simulation_engine/overallResult.d.ts.map +1 -0
- package/dist/esm/simulation_engine/overallResult.js +32 -0
- package/dist/esm/simulation_engine/overallResult.js.map +1 -0
- package/dist/esm/simulation_engine/policyResources.d.ts +44 -0
- package/dist/esm/simulation_engine/policyResources.d.ts.map +1 -0
- package/dist/esm/simulation_engine/policyResources.js +117 -0
- package/dist/esm/simulation_engine/policyResources.js.map +1 -0
- package/dist/esm/simulation_engine/resourceTypes.d.ts +11 -0
- package/dist/esm/simulation_engine/resourceTypes.d.ts.map +1 -0
- package/dist/esm/simulation_engine/resourceTypes.js +23 -0
- package/dist/esm/simulation_engine/resourceTypes.js.map +1 -0
- package/dist/esm/simulation_engine/simulation.d.ts +114 -0
- package/dist/esm/simulation_engine/simulation.d.ts.map +1 -0
- package/dist/esm/simulation_engine/simulation.js +30 -0
- package/dist/esm/simulation_engine/simulation.js.map +1 -0
- package/dist/esm/simulation_engine/simulationEngine.d.ts +128 -0
- package/dist/esm/simulation_engine/simulationEngine.d.ts.map +1 -0
- package/dist/esm/simulation_engine/simulationEngine.js +430 -0
- package/dist/esm/simulation_engine/simulationEngine.js.map +1 -0
- package/dist/esm/simulation_engine/simulationOptions.d.ts +21 -0
- package/dist/esm/simulation_engine/simulationOptions.d.ts.map +1 -0
- package/dist/esm/simulation_engine/simulationOptions.js +3 -0
- package/dist/esm/simulation_engine/simulationOptions.js.map +1 -0
- package/dist/esm/simulation_engine/unsafeSimulationEngine.d.ts +13 -0
- package/dist/esm/simulation_engine/unsafeSimulationEngine.d.ts.map +1 -0
- package/dist/esm/simulation_engine/unsafeSimulationEngine.js +62 -0
- package/dist/esm/simulation_engine/unsafeSimulationEngine.js.map +1 -0
- package/dist/esm/util/resourceStrings.d.ts +19 -0
- package/dist/esm/util/resourceStrings.d.ts.map +1 -0
- package/dist/esm/util/resourceStrings.js +103 -0
- package/dist/esm/util/resourceStrings.js.map +1 -0
- package/dist/esm/util.d.ts +90 -0
- package/dist/esm/util.d.ts.map +1 -0
- package/dist/esm/util.js +341 -0
- package/dist/esm/util.js.map +1 -0
- package/package.json +119 -0
|
@@ -0,0 +1,625 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DefaultServiceAuthorizer = void 0;
|
|
4
|
+
const allowedConditions_js_1 = require("../analysis/allowedConditions.js");
|
|
5
|
+
const iam_utils_1 = require("@actsecurity/iam-utils");
|
|
6
|
+
const requestPrincipal_js_1 = require("../request/requestPrincipal.js");
|
|
7
|
+
/**
|
|
8
|
+
* This helper class keeps track of which factors are blocking a request and what the overall result is
|
|
9
|
+
* based on those blocks.
|
|
10
|
+
*/
|
|
11
|
+
class BlockedByLog {
|
|
12
|
+
coreResult;
|
|
13
|
+
blockedBy = new Set();
|
|
14
|
+
result;
|
|
15
|
+
/**
|
|
16
|
+
* Create the BlockedByLog
|
|
17
|
+
*
|
|
18
|
+
* @param coreResult the core result of the authorization. Is the request allowed or denied based on the core policies (identity, resource, session).
|
|
19
|
+
*/
|
|
20
|
+
constructor(coreResult) {
|
|
21
|
+
this.coreResult = coreResult;
|
|
22
|
+
this.result = coreResult;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Add a blocking factor to the log and update the overall result accordingly.
|
|
26
|
+
*
|
|
27
|
+
* @param reason the reason for the block.
|
|
28
|
+
* @param result the result of the block (ImplicitlyDenied, ExplicitlyDenied)
|
|
29
|
+
*/
|
|
30
|
+
add(reason, result) {
|
|
31
|
+
if (this.coreResult === 'Allowed' && result !== 'Allowed') {
|
|
32
|
+
this.blockedBy.add(reason);
|
|
33
|
+
}
|
|
34
|
+
this.setResult(result);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Calculates and sets the new overall result based on the new block reason and the previous result.
|
|
38
|
+
*
|
|
39
|
+
* The result can only be modified down so Allowed -> ImplicitlyDenied -> ExplicitlyDenied.
|
|
40
|
+
*
|
|
41
|
+
* @param newResult the result of the new block reason being added.
|
|
42
|
+
*/
|
|
43
|
+
setResult(newResult) {
|
|
44
|
+
// Explicit denies override everything
|
|
45
|
+
if (this.result === 'ExplicitlyDenied') {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (newResult === 'ExplicitlyDenied') {
|
|
49
|
+
this.result = 'ExplicitlyDenied';
|
|
50
|
+
}
|
|
51
|
+
else if (newResult === 'ImplicitlyDenied') {
|
|
52
|
+
this.result = 'ImplicitlyDenied';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get the overall result after all blocks (if any) have been added.
|
|
57
|
+
*
|
|
58
|
+
* @returns the overall result after all blocks (if any) have been added.
|
|
59
|
+
*/
|
|
60
|
+
getResult() {
|
|
61
|
+
return this.result;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get the list of reasons that are blocking the request after the core result.
|
|
65
|
+
*
|
|
66
|
+
* @returns an array of reasons that are blocking the request after the core result.
|
|
67
|
+
*/
|
|
68
|
+
getBlockedBy() {
|
|
69
|
+
return Array.from(this.blockedBy);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The default authorizer for services.
|
|
74
|
+
*/
|
|
75
|
+
class DefaultServiceAuthorizer {
|
|
76
|
+
/**
|
|
77
|
+
* Authorize a service request after all policy analysis has been completed.
|
|
78
|
+
*
|
|
79
|
+
* @param request the service authorization request containing all analyses
|
|
80
|
+
* @returns the result of the authorization
|
|
81
|
+
*/
|
|
82
|
+
authorize(request) {
|
|
83
|
+
const scpResult = request.scpAnalysis.result;
|
|
84
|
+
const rcpResult = request.rcpAnalysis.result;
|
|
85
|
+
const identityStatementResult = request.identityAnalysis.result;
|
|
86
|
+
const resourcePolicyResult = request.resourceAnalysis?.result;
|
|
87
|
+
const endpointPolicyResult = request.endpointAnalysis?.result;
|
|
88
|
+
const requestPrincipal = request.request.principal;
|
|
89
|
+
const principalAccount = requestPrincipal.isAuthenticated()
|
|
90
|
+
? requestPrincipal.accountId()
|
|
91
|
+
: undefined;
|
|
92
|
+
const resourceAccount = request.request.resource?.accountId();
|
|
93
|
+
const sameAccount = principalAccount !== undefined && principalAccount === resourceAccount;
|
|
94
|
+
const baseResult = {
|
|
95
|
+
sameAccount,
|
|
96
|
+
sessionAnalysis: request.sessionAnalysis,
|
|
97
|
+
identityAnalysis: request.identityAnalysis,
|
|
98
|
+
scpAnalysis: request.scpAnalysis,
|
|
99
|
+
rcpAnalysis: request.rcpAnalysis,
|
|
100
|
+
resourceAnalysis: request.resourceAnalysis,
|
|
101
|
+
permissionBoundaryAnalysis: request.permissionBoundaryAnalysis,
|
|
102
|
+
endpointAnalysis: request.endpointAnalysis
|
|
103
|
+
};
|
|
104
|
+
if (requestPrincipal.isAnonymous()) {
|
|
105
|
+
return this.authorizeAnonymousRequest(request, baseResult);
|
|
106
|
+
}
|
|
107
|
+
(0, requestPrincipal_js_1.assertAuthenticatedRequestPrincipal)(requestPrincipal);
|
|
108
|
+
const initialEvaluation = this.initialEvaluationResult(request);
|
|
109
|
+
let coreConditions = initialEvaluation.conditions;
|
|
110
|
+
const blockedByLog = new BlockedByLog(initialEvaluation.result);
|
|
111
|
+
blockedByLog.add('scp', scpResult);
|
|
112
|
+
blockedByLog.add('rcp', rcpResult);
|
|
113
|
+
if (endpointPolicyResult === 'ExplicitlyDenied' ||
|
|
114
|
+
endpointPolicyResult === 'ImplicitlyDenied') {
|
|
115
|
+
blockedByLog.add('vpce', endpointPolicyResult);
|
|
116
|
+
}
|
|
117
|
+
if (resourcePolicyResult === 'ExplicitlyDenied' ||
|
|
118
|
+
resourcePolicyResult === 'DeniedForAccount') {
|
|
119
|
+
blockedByLog.add('resource', 'ExplicitlyDenied');
|
|
120
|
+
}
|
|
121
|
+
if (identityStatementResult === 'ExplicitlyDenied') {
|
|
122
|
+
blockedByLog.add('identity', 'ExplicitlyDenied');
|
|
123
|
+
}
|
|
124
|
+
const permissionBoundaryMutation = this.applyPermissionBoundaryToCoreConditions(request, sameAccount, coreConditions);
|
|
125
|
+
coreConditions = permissionBoundaryMutation.conditions;
|
|
126
|
+
if (permissionBoundaryMutation.result) {
|
|
127
|
+
blockedByLog.add('pb', permissionBoundaryMutation.result);
|
|
128
|
+
}
|
|
129
|
+
const blockedReasons = blockedByLog.getBlockedBy();
|
|
130
|
+
if (blockedReasons.length !== 0) {
|
|
131
|
+
baseResult.blockedBy = blockedReasons;
|
|
132
|
+
}
|
|
133
|
+
const finalResult = blockedByLog.getResult();
|
|
134
|
+
return {
|
|
135
|
+
result: finalResult,
|
|
136
|
+
...baseResult,
|
|
137
|
+
conditions: this.conditionsForAllowedResult(request, coreConditions, finalResult)
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* Add checks for:
|
|
141
|
+
* * root user - can override resource policies for most resource types
|
|
142
|
+
* * organization APIs and delegated admin policy
|
|
143
|
+
*/
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Authorize an anonymous request after all policy analysis has been completed.
|
|
147
|
+
*
|
|
148
|
+
* @param request the service authorization request containing all analyses.
|
|
149
|
+
* @param baseResult the common request-analysis fields to include in the result.
|
|
150
|
+
* @returns the anonymous request authorization result.
|
|
151
|
+
*/
|
|
152
|
+
authorizeAnonymousRequest(request, baseResult) {
|
|
153
|
+
const endpointPolicyResult = request.endpointAnalysis?.result;
|
|
154
|
+
const initialEvaluation = this.anonymousInitialEvaluationResult(request);
|
|
155
|
+
const blockedByLog = new BlockedByLog(initialEvaluation.result);
|
|
156
|
+
if (request.rcpAnalysis.ouAnalysis.length > 0) {
|
|
157
|
+
blockedByLog.add('rcp', request.rcpAnalysis.result);
|
|
158
|
+
}
|
|
159
|
+
if (endpointPolicyResult === 'ExplicitlyDenied' ||
|
|
160
|
+
endpointPolicyResult === 'ImplicitlyDenied') {
|
|
161
|
+
blockedByLog.add('vpce', endpointPolicyResult);
|
|
162
|
+
}
|
|
163
|
+
const blockedReasons = blockedByLog.getBlockedBy();
|
|
164
|
+
if (blockedReasons.length !== 0) {
|
|
165
|
+
baseResult.blockedBy = blockedReasons;
|
|
166
|
+
}
|
|
167
|
+
const finalResult = blockedByLog.getResult();
|
|
168
|
+
return {
|
|
169
|
+
result: finalResult,
|
|
170
|
+
...baseResult,
|
|
171
|
+
sameAccount: false,
|
|
172
|
+
conditions: this.conditionsForAllowedResult(request, initialEvaluation.conditions, finalResult)
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Evaluates whether an anonymous request has the resource-side grant required to be allowed.
|
|
177
|
+
*
|
|
178
|
+
* @param request the service authorization request containing all analyses.
|
|
179
|
+
* @returns the core anonymous result before applicable resource-side guardrails are applied.
|
|
180
|
+
*/
|
|
181
|
+
anonymousInitialEvaluationResult(request) {
|
|
182
|
+
const resourcePolicyResult = request.resourceAnalysis?.result;
|
|
183
|
+
if (resourcePolicyResult === 'Allowed') {
|
|
184
|
+
return {
|
|
185
|
+
result: 'Allowed',
|
|
186
|
+
conditions: (0, allowedConditions_js_1.resourceAllowStatementsExpression)(request.resourceAnalysis.allowStatements)
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
if (resourcePolicyResult === 'ExplicitlyDenied' ||
|
|
190
|
+
resourcePolicyResult === 'DeniedForAccount') {
|
|
191
|
+
return {
|
|
192
|
+
result: 'ExplicitlyDenied',
|
|
193
|
+
conditions: { conditionType: 'never', reason: 'noApplicableAllow' }
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
return {
|
|
197
|
+
result: 'ImplicitlyDenied',
|
|
198
|
+
conditions: { conditionType: 'never', reason: 'noApplicableAllow' }
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Determines if the service trusts the principal's Account's IAM policies
|
|
203
|
+
*
|
|
204
|
+
* @param sameAccount - If the principal and resource are in the same account
|
|
205
|
+
* @param resourceAnalysis - The resource policy analysis
|
|
206
|
+
* @returns true if the service trusts the principal's account IAM policies
|
|
207
|
+
*/
|
|
208
|
+
serviceTrustsPrincipalAccount(sameAccount, resourceAnalysis, resource) {
|
|
209
|
+
if (sameAccount) {
|
|
210
|
+
return { trustType: 'Implicit' };
|
|
211
|
+
}
|
|
212
|
+
const accountLevelStatements = this.accountLevelResourceAllowStatements(resourceAnalysis);
|
|
213
|
+
if (accountLevelStatements.length > 0) {
|
|
214
|
+
return { trustType: 'Explicit', statements: accountLevelStatements };
|
|
215
|
+
}
|
|
216
|
+
return { trustType: 'None' };
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Combine core authorization conditions with guardrail conditions for a final allowed result.
|
|
220
|
+
*
|
|
221
|
+
* @param request the service authorization request containing all analyses
|
|
222
|
+
* @param coreConditions the conditions for the core service authorization decision after permission-boundary mutation
|
|
223
|
+
* @param finalResult the final authorization result after guardrails
|
|
224
|
+
* @returns the public conditions expression, or undefined when none should be emitted
|
|
225
|
+
*/
|
|
226
|
+
conditionsForAllowedResult(request, coreConditions, finalResult) {
|
|
227
|
+
const expressions = [
|
|
228
|
+
(0, allowedConditions_js_1.sessionPolicyExpression)(request.sessionAnalysis, request.sessionAnalysis !== undefined),
|
|
229
|
+
coreConditions,
|
|
230
|
+
request.scpAnalysis.conditions,
|
|
231
|
+
request.rcpAnalysis.conditions
|
|
232
|
+
];
|
|
233
|
+
if (request.endpointAnalysis?.result === 'Allowed') {
|
|
234
|
+
expressions.push((0, allowedConditions_js_1.endpointPolicyExpression)(request.endpointAnalysis));
|
|
235
|
+
}
|
|
236
|
+
expressions.push(...(0, allowedConditions_js_1.allDenyEscapeExpressions)({
|
|
237
|
+
sessionAnalysis: request.sessionAnalysis,
|
|
238
|
+
scpAnalysis: request.scpAnalysis,
|
|
239
|
+
rcpAnalysis: request.rcpAnalysis,
|
|
240
|
+
identityAnalysis: request.identityAnalysis,
|
|
241
|
+
resourceAnalysis: request.resourceAnalysis,
|
|
242
|
+
permissionBoundaryAnalysis: request.permissionBoundaryAnalysis,
|
|
243
|
+
endpointAnalysis: request.endpointAnalysis
|
|
244
|
+
}));
|
|
245
|
+
return (0, allowedConditions_js_1.allowedConditionOutput)((0, allowedConditions_js_1.and)(expressions), request.simulationParameters.simulationMode, finalResult);
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Apply permission-boundary effects to the core authorization conditions.
|
|
249
|
+
*
|
|
250
|
+
* Permission boundaries are not part of the core service authorization result. This function lives
|
|
251
|
+
* with the permission-boundary authorization checks and recalculates the affected condition paths
|
|
252
|
+
* only when permission-boundary behavior changes which core path can be used.
|
|
253
|
+
*
|
|
254
|
+
* @param request the service authorization request containing all analyses
|
|
255
|
+
* @param sameAccount whether the principal and resource are in the same account
|
|
256
|
+
* @param coreConditions the unmodified core authorization conditions
|
|
257
|
+
* @returns the permission-boundary block result, if any, and updated core conditions
|
|
258
|
+
*/
|
|
259
|
+
applyPermissionBoundaryToCoreConditions(request, sameAccount, coreConditions) {
|
|
260
|
+
const permissionBoundaryResult = request.permissionBoundaryAnalysis?.result;
|
|
261
|
+
if (!permissionBoundaryResult) {
|
|
262
|
+
return { conditions: coreConditions };
|
|
263
|
+
}
|
|
264
|
+
if (permissionBoundaryResult === 'ExplicitlyDenied') {
|
|
265
|
+
return { result: 'ExplicitlyDenied', conditions: coreConditions };
|
|
266
|
+
}
|
|
267
|
+
if (permissionBoundaryResult === 'Allowed') {
|
|
268
|
+
return {
|
|
269
|
+
conditions: this.coreConditionsWithAllowedPermissionBoundary(request, sameAccount)
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
if (permissionBoundaryResult === 'ImplicitlyDenied') {
|
|
273
|
+
if (!sameAccount) {
|
|
274
|
+
return { result: 'ImplicitlyDenied', conditions: coreConditions };
|
|
275
|
+
}
|
|
276
|
+
const bypassStatements = this.permissionBoundaryBypassResourceAllowStatements(request);
|
|
277
|
+
if (bypassStatements.length === 0) {
|
|
278
|
+
return { result: 'ImplicitlyDenied', conditions: coreConditions };
|
|
279
|
+
}
|
|
280
|
+
return { conditions: (0, allowedConditions_js_1.resourceAllowStatementsExpression)(bypassStatements) };
|
|
281
|
+
}
|
|
282
|
+
return { conditions: coreConditions };
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Recalculate core conditions when an allowed permission boundary constrains identity-policy paths.
|
|
286
|
+
*
|
|
287
|
+
* @param request the service authorization request containing all analyses
|
|
288
|
+
* @param sameAccount whether the principal and resource are in the same account
|
|
289
|
+
* @returns core conditions with permission-boundary allow conditions applied to identity paths
|
|
290
|
+
*/
|
|
291
|
+
coreConditionsWithAllowedPermissionBoundary(request, sameAccount) {
|
|
292
|
+
const principal = request.request.principal;
|
|
293
|
+
if (principal.isAnonymous()) {
|
|
294
|
+
return (0, allowedConditions_js_1.resourceAllowStatementsExpression)(request.resourceAnalysis.allowStatements);
|
|
295
|
+
}
|
|
296
|
+
(0, requestPrincipal_js_1.assertAuthenticatedRequestPrincipal)(principal);
|
|
297
|
+
if ((0, iam_utils_1.isServicePrincipal)(principal.value())) {
|
|
298
|
+
return (0, allowedConditions_js_1.resourceAllowStatementsExpression)(request.resourceAnalysis.allowStatements);
|
|
299
|
+
}
|
|
300
|
+
if (sameAccount) {
|
|
301
|
+
const trustedAccount = this.serviceTrustsPrincipalAccount(sameAccount, request.resourceAnalysis, request.request.resource);
|
|
302
|
+
return this.sameAccountConditionsWithAllowedPermissionBoundary(request, trustedAccount);
|
|
303
|
+
}
|
|
304
|
+
if ((request.resourceAnalysis.result === 'Allowed' ||
|
|
305
|
+
request.resourceAnalysis.result === 'AllowedForAccount') &&
|
|
306
|
+
request.identityAnalysis.result === 'Allowed') {
|
|
307
|
+
return (0, allowedConditions_js_1.and)([
|
|
308
|
+
this.crossAccountResourcePolicyConditions(request),
|
|
309
|
+
(0, allowedConditions_js_1.identityPolicyExpression)(request.identityAnalysis),
|
|
310
|
+
(0, allowedConditions_js_1.permissionBoundaryExpression)(request.permissionBoundaryAnalysis)
|
|
311
|
+
]);
|
|
312
|
+
}
|
|
313
|
+
return { conditionType: 'never', reason: 'noApplicableAllow' };
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Recalculate same-account conditions when an allowed permission boundary constrains identity paths.
|
|
317
|
+
*
|
|
318
|
+
* @param request the service authorization request containing all analyses
|
|
319
|
+
* @param trustedAccount how the service trusts the principal account for this request
|
|
320
|
+
* @returns same-account core conditions with permission-boundary allow conditions applied to identity paths
|
|
321
|
+
*/
|
|
322
|
+
sameAccountConditionsWithAllowedPermissionBoundary(request, trustedAccount) {
|
|
323
|
+
switch (trustedAccount.trustType) {
|
|
324
|
+
case 'Implicit':
|
|
325
|
+
return this.sameAccountImplicitTrustConditionsWithAllowedPermissionBoundary(request);
|
|
326
|
+
case 'Explicit':
|
|
327
|
+
return this.sameAccountExplicitTrustConditionsWithAllowedPermissionBoundary(request, trustedAccount);
|
|
328
|
+
case 'None':
|
|
329
|
+
return request.resourceAnalysis.result === 'Allowed'
|
|
330
|
+
? this.sameAccountResourcePolicyConditions(request)
|
|
331
|
+
: { conditionType: 'never', reason: 'noApplicableAllow' };
|
|
332
|
+
default:
|
|
333
|
+
throw new Error(`Unrecognized principal account trust type: ${String(trustedAccount.trustType)}`);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Recalculate same-account implicit trust conditions when permission-boundary allow constrains identity paths.
|
|
338
|
+
*
|
|
339
|
+
* @param request the service authorization request containing all analyses
|
|
340
|
+
* @returns same-account implicit trust conditions with permission-boundary allow conditions applied to identity paths
|
|
341
|
+
*/
|
|
342
|
+
sameAccountImplicitTrustConditionsWithAllowedPermissionBoundary(request) {
|
|
343
|
+
const resourceConditions = request.resourceAnalysis.result === 'Allowed'
|
|
344
|
+
? this.sameAccountResourcePolicyConditions(request)
|
|
345
|
+
: { conditionType: 'never', reason: 'noApplicableAllow' };
|
|
346
|
+
const identityConditions = request.identityAnalysis.result === 'Allowed'
|
|
347
|
+
? (0, allowedConditions_js_1.and)([
|
|
348
|
+
(0, allowedConditions_js_1.identityPolicyExpression)(request.identityAnalysis),
|
|
349
|
+
(0, allowedConditions_js_1.permissionBoundaryExpression)(request.permissionBoundaryAnalysis)
|
|
350
|
+
])
|
|
351
|
+
: { conditionType: 'never', reason: 'noApplicableAllow' };
|
|
352
|
+
return (0, allowedConditions_js_1.or)([resourceConditions, identityConditions]);
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Recalculate same-account explicit trust conditions when permission-boundary allow constrains identity paths.
|
|
356
|
+
*
|
|
357
|
+
* @param request the service authorization request containing all analyses
|
|
358
|
+
* @param trustedAccount explicit account-trust statements selected by the service authorizer
|
|
359
|
+
* @returns same-account explicit trust conditions with permission-boundary allow conditions applied to identity paths
|
|
360
|
+
*/
|
|
361
|
+
sameAccountExplicitTrustConditionsWithAllowedPermissionBoundary(request, trustedAccount) {
|
|
362
|
+
const resourceConditions = request.resourceAnalysis.result === 'Allowed'
|
|
363
|
+
? this.sameAccountResourcePolicyConditions(request)
|
|
364
|
+
: { conditionType: 'never', reason: 'noApplicableAllow' };
|
|
365
|
+
const identityConditions = request.identityAnalysis.result === 'Allowed'
|
|
366
|
+
? (0, allowedConditions_js_1.and)([
|
|
367
|
+
(0, allowedConditions_js_1.resourceAllowStatementsExpression)(trustedAccount.statements),
|
|
368
|
+
(0, allowedConditions_js_1.identityPolicyExpression)(request.identityAnalysis),
|
|
369
|
+
(0, allowedConditions_js_1.permissionBoundaryExpression)(request.permissionBoundaryAnalysis)
|
|
370
|
+
])
|
|
371
|
+
: { conditionType: 'never', reason: 'noApplicableAllow' };
|
|
372
|
+
return (0, allowedConditions_js_1.or)([resourceConditions, identityConditions]);
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Get resource-policy allow statements that matched the principal directly.
|
|
376
|
+
*
|
|
377
|
+
* @param resourceAnalysis resource-policy analysis containing already-matched allow statements
|
|
378
|
+
* @returns direct principal-match resource allow statements
|
|
379
|
+
*/
|
|
380
|
+
directResourceAllowStatements(resourceAnalysis) {
|
|
381
|
+
return resourceAnalysis.allowStatements.filter((statement) => ['Match', 'SessionRoleMatch', 'SessionUserMatch'].includes(statement.principalMatch));
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Get resource-policy allow statements that matched at the principal-account level.
|
|
385
|
+
*
|
|
386
|
+
* @param resourceAnalysis resource-policy analysis containing already-matched allow statements
|
|
387
|
+
* @returns account-level resource allow statements
|
|
388
|
+
*/
|
|
389
|
+
accountLevelResourceAllowStatements(resourceAnalysis) {
|
|
390
|
+
return resourceAnalysis.allowStatements.filter((statement) => statement.principalMatch === 'AccountLevelMatch');
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Get same-account resource-policy conditions for paths that can satisfy core authorization.
|
|
394
|
+
*
|
|
395
|
+
* @param request the service authorization request containing all analyses
|
|
396
|
+
* @returns resource-policy conditions for the allowed same-account branch
|
|
397
|
+
*/
|
|
398
|
+
sameAccountResourcePolicyConditions(request) {
|
|
399
|
+
return (0, allowedConditions_js_1.resourceAllowStatementsExpression)(this.directResourceAllowStatements(request.resourceAnalysis));
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Evaluate same-account core authorization and conditions based on principal-account trust.
|
|
403
|
+
*
|
|
404
|
+
* @param request the service authorization request containing all analyses
|
|
405
|
+
* @param trustedAccount how the service trusts the principal account for this request
|
|
406
|
+
* @returns the same-account core authorization result and conditions
|
|
407
|
+
*/
|
|
408
|
+
sameAccountInitialEvaluation(request, trustedAccount) {
|
|
409
|
+
switch (trustedAccount.trustType) {
|
|
410
|
+
case 'Implicit':
|
|
411
|
+
return this.sameAccountImplicitTrustEvaluation(request);
|
|
412
|
+
case 'Explicit':
|
|
413
|
+
return this.sameAccountExplicitTrustEvaluation(request, trustedAccount);
|
|
414
|
+
case 'None':
|
|
415
|
+
return this.sameAccountNoTrustEvaluation(request);
|
|
416
|
+
default:
|
|
417
|
+
throw new Error(`Unrecognized principal account trust type: ${String(trustedAccount.trustType)}`);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Evaluate same-account authorization when the service implicitly trusts identity policies.
|
|
422
|
+
*
|
|
423
|
+
* @param request the service authorization request containing all analyses
|
|
424
|
+
* @returns the same-account authorization result and conditions
|
|
425
|
+
*/
|
|
426
|
+
sameAccountImplicitTrustEvaluation(request) {
|
|
427
|
+
const resourcePolicyResult = request.resourceAnalysis.result;
|
|
428
|
+
const identityStatementResult = request.identityAnalysis.result;
|
|
429
|
+
if (resourcePolicyResult === 'Allowed' && identityStatementResult === 'Allowed') {
|
|
430
|
+
return {
|
|
431
|
+
result: 'Allowed',
|
|
432
|
+
conditions: (0, allowedConditions_js_1.or)([
|
|
433
|
+
this.sameAccountResourcePolicyConditions(request),
|
|
434
|
+
(0, allowedConditions_js_1.identityPolicyExpression)(request.identityAnalysis)
|
|
435
|
+
])
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
if (resourcePolicyResult === 'Allowed') {
|
|
439
|
+
return {
|
|
440
|
+
result: 'Allowed',
|
|
441
|
+
conditions: this.sameAccountResourcePolicyConditions(request)
|
|
442
|
+
};
|
|
443
|
+
}
|
|
444
|
+
if (identityStatementResult === 'Allowed') {
|
|
445
|
+
return {
|
|
446
|
+
result: 'Allowed',
|
|
447
|
+
conditions: (0, allowedConditions_js_1.identityPolicyExpression)(request.identityAnalysis)
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
return {
|
|
451
|
+
result: 'ImplicitlyDenied',
|
|
452
|
+
conditions: { conditionType: 'never', reason: 'noApplicableAllow' }
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Evaluate same-account authorization when the service requires explicit resource-policy account trust.
|
|
457
|
+
*
|
|
458
|
+
* @param request the service authorization request containing all analyses
|
|
459
|
+
* @param trustedAccount explicit account-trust statements selected by the service authorizer
|
|
460
|
+
* @returns the same-account authorization result and conditions
|
|
461
|
+
*/
|
|
462
|
+
sameAccountExplicitTrustEvaluation(request, trustedAccount) {
|
|
463
|
+
const resourcePolicyResult = request.resourceAnalysis.result;
|
|
464
|
+
const identityStatementResult = request.identityAnalysis.result;
|
|
465
|
+
const resourceConditions = resourcePolicyResult === 'Allowed'
|
|
466
|
+
? this.sameAccountResourcePolicyConditions(request)
|
|
467
|
+
: { conditionType: 'never', reason: 'noApplicableAllow' };
|
|
468
|
+
if (identityStatementResult === 'Allowed') {
|
|
469
|
+
const identityConditions = (0, allowedConditions_js_1.and)([
|
|
470
|
+
(0, allowedConditions_js_1.resourceAllowStatementsExpression)(trustedAccount.statements),
|
|
471
|
+
(0, allowedConditions_js_1.identityPolicyExpression)(request.identityAnalysis)
|
|
472
|
+
]);
|
|
473
|
+
return {
|
|
474
|
+
result: 'Allowed',
|
|
475
|
+
conditions: (0, allowedConditions_js_1.or)([resourceConditions, identityConditions])
|
|
476
|
+
};
|
|
477
|
+
}
|
|
478
|
+
if (resourcePolicyResult === 'Allowed') {
|
|
479
|
+
return {
|
|
480
|
+
result: 'Allowed',
|
|
481
|
+
conditions: resourceConditions
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
return {
|
|
485
|
+
result: 'ImplicitlyDenied',
|
|
486
|
+
conditions: { conditionType: 'never', reason: 'noApplicableAllow' }
|
|
487
|
+
};
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Evaluate same-account authorization when the service does not trust identity policies.
|
|
491
|
+
*
|
|
492
|
+
* @param request the service authorization request containing all analyses
|
|
493
|
+
* @returns the same-account authorization result and conditions
|
|
494
|
+
*/
|
|
495
|
+
sameAccountNoTrustEvaluation(request) {
|
|
496
|
+
if (request.resourceAnalysis.result === 'Allowed') {
|
|
497
|
+
return {
|
|
498
|
+
result: 'Allowed',
|
|
499
|
+
conditions: this.sameAccountResourcePolicyConditions(request)
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
return {
|
|
503
|
+
result: 'ImplicitlyDenied',
|
|
504
|
+
conditions: { conditionType: 'never', reason: 'noApplicableAllow' }
|
|
505
|
+
};
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Get resource-policy conditions for a cross-account request's resource-policy side.
|
|
509
|
+
*
|
|
510
|
+
* @param request the service authorization request containing all analyses
|
|
511
|
+
* @returns resource-policy conditions for the matching cross-account resource-policy statements
|
|
512
|
+
*/
|
|
513
|
+
crossAccountResourcePolicyConditions(request) {
|
|
514
|
+
if (request.resourceAnalysis.result !== 'Allowed' &&
|
|
515
|
+
request.resourceAnalysis.result !== 'AllowedForAccount') {
|
|
516
|
+
return { conditionType: 'never', reason: 'noApplicableAllow' };
|
|
517
|
+
}
|
|
518
|
+
return (0, allowedConditions_js_1.resourceAllowStatementsExpression)([
|
|
519
|
+
...this.directResourceAllowStatements(request.resourceAnalysis),
|
|
520
|
+
...this.accountLevelResourceAllowStatements(request.resourceAnalysis)
|
|
521
|
+
]);
|
|
522
|
+
}
|
|
523
|
+
/**
|
|
524
|
+
* Get same-account resource-policy allow statements that bypass an implicit permission-boundary deny.
|
|
525
|
+
*
|
|
526
|
+
* @param request the service authorization request containing all analyses
|
|
527
|
+
* @returns resource-policy allow statements that bypass the implicit permission-boundary deny
|
|
528
|
+
*/
|
|
529
|
+
permissionBoundaryBypassResourceAllowStatements(request) {
|
|
530
|
+
if (request.resourceAnalysis.result !== 'Allowed') {
|
|
531
|
+
return [];
|
|
532
|
+
}
|
|
533
|
+
const principal = request.request.principal;
|
|
534
|
+
if (!principal.isAuthenticated()) {
|
|
535
|
+
return [];
|
|
536
|
+
}
|
|
537
|
+
const principalValue = principal.value();
|
|
538
|
+
if ((0, iam_utils_1.isAssumedRoleArn)(principalValue) ||
|
|
539
|
+
(0, iam_utils_1.isIamUserArn)(principalValue) ||
|
|
540
|
+
(0, iam_utils_1.isFederatedUserArn)(principalValue)) {
|
|
541
|
+
return request.resourceAnalysis.allowStatements.filter((statement) => statement.principalMatch === 'Match');
|
|
542
|
+
}
|
|
543
|
+
if ((0, iam_utils_1.isIamRoleArn)(principalValue)) {
|
|
544
|
+
return request.resourceAnalysis.allowStatements.filter((statement) => statement.principalMatch === 'Match' &&
|
|
545
|
+
(statement.ignoredRoleSessionName ||
|
|
546
|
+
(statement.statement.isPrincipalStatement() &&
|
|
547
|
+
statement.statement.principals().some((p) => p.isWildcardPrincipal()))));
|
|
548
|
+
}
|
|
549
|
+
return [];
|
|
550
|
+
}
|
|
551
|
+
/**
|
|
552
|
+
* Evaluations whether the minimum requirements for the request to be allowed are met based on the core policies
|
|
553
|
+
* - Identity
|
|
554
|
+
* - Resource
|
|
555
|
+
* - Session
|
|
556
|
+
*
|
|
557
|
+
* Depending on the service, and whether the principal and resources are in the same account, the requirements may differ.
|
|
558
|
+
* For same account requests, for most services an Allow in the resource policy or the identity policy is sufficient to
|
|
559
|
+
* allow the request, so this function will return 'Allowed'. If there is an explicit deny elsewhere, that is not considered.
|
|
560
|
+
* This function only determines if there are enough core policies to allow the request, and final determination of the
|
|
561
|
+
* request is done elsewhere.
|
|
562
|
+
*
|
|
563
|
+
* @param request the service authorization request containing all analyses
|
|
564
|
+
* @returns 'Allowed' if the core policies allow the request, otherwise may return 'ImplicitlyDenied' or 'ExplicitlyDenied' depending on the analyses
|
|
565
|
+
*/
|
|
566
|
+
initialEvaluationResult(request) {
|
|
567
|
+
const sessionResult = request.sessionAnalysis?.result;
|
|
568
|
+
const identityStatementResult = request.identityAnalysis.result;
|
|
569
|
+
const resourcePolicyResult = request.resourceAnalysis?.result;
|
|
570
|
+
const requestPrincipal = request.request.principal;
|
|
571
|
+
const principalAccount = requestPrincipal.isAuthenticated()
|
|
572
|
+
? requestPrincipal.accountId()
|
|
573
|
+
: undefined;
|
|
574
|
+
const resourceAccount = request.request.resource?.accountId();
|
|
575
|
+
const sameAccount = principalAccount !== undefined && principalAccount === resourceAccount;
|
|
576
|
+
if (requestPrincipal.isAnonymous()) {
|
|
577
|
+
return this.anonymousInitialEvaluationResult(request);
|
|
578
|
+
}
|
|
579
|
+
(0, requestPrincipal_js_1.assertAuthenticatedRequestPrincipal)(requestPrincipal);
|
|
580
|
+
if (sessionResult && sessionResult !== 'Allowed') {
|
|
581
|
+
return {
|
|
582
|
+
result: sessionResult,
|
|
583
|
+
conditions: (0, allowedConditions_js_1.sessionPolicyExpression)(request.sessionAnalysis, true)
|
|
584
|
+
};
|
|
585
|
+
}
|
|
586
|
+
// Service Principals
|
|
587
|
+
if ((0, iam_utils_1.isServicePrincipal)(requestPrincipal.value())) {
|
|
588
|
+
// Service principals are allowed if the resource policy allows them
|
|
589
|
+
if (resourcePolicyResult === 'Allowed') {
|
|
590
|
+
return {
|
|
591
|
+
result: 'Allowed',
|
|
592
|
+
conditions: (0, allowedConditions_js_1.resourceAllowStatementsExpression)(request.resourceAnalysis.allowStatements)
|
|
593
|
+
};
|
|
594
|
+
}
|
|
595
|
+
return {
|
|
596
|
+
result: 'ImplicitlyDenied',
|
|
597
|
+
conditions: { conditionType: 'never', reason: 'noApplicableAllow' }
|
|
598
|
+
};
|
|
599
|
+
}
|
|
600
|
+
//Same Account
|
|
601
|
+
if (sameAccount) {
|
|
602
|
+
const trustedAccount = this.serviceTrustsPrincipalAccount(sameAccount, request.resourceAnalysis, request.request.resource);
|
|
603
|
+
return this.sameAccountInitialEvaluation(request, trustedAccount);
|
|
604
|
+
}
|
|
605
|
+
//Cross Account
|
|
606
|
+
if (resourcePolicyResult === 'Allowed' || resourcePolicyResult === 'AllowedForAccount') {
|
|
607
|
+
if (identityStatementResult === 'Allowed') {
|
|
608
|
+
const coreConditions = (0, allowedConditions_js_1.and)([
|
|
609
|
+
this.crossAccountResourcePolicyConditions(request),
|
|
610
|
+
(0, allowedConditions_js_1.identityPolicyExpression)(request.identityAnalysis)
|
|
611
|
+
]);
|
|
612
|
+
return {
|
|
613
|
+
result: 'Allowed',
|
|
614
|
+
conditions: coreConditions
|
|
615
|
+
};
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
return {
|
|
619
|
+
result: 'ImplicitlyDenied',
|
|
620
|
+
conditions: { conditionType: 'never', reason: 'noApplicableAllow' }
|
|
621
|
+
};
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
exports.DefaultServiceAuthorizer = DefaultServiceAuthorizer;
|
|
625
|
+
//# sourceMappingURL=DefaultServiceAuthorizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultServiceAuthorizer.js","sourceRoot":"","sources":["../../../src/services/DefaultServiceAuthorizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type RequestAnalysis } from '../evaluate.js';
|
|
2
|
+
import { DefaultServiceAuthorizer } from './DefaultServiceAuthorizer.js';
|
|
3
|
+
import { type ServiceAuthorizationRequest } from './ServiceAuthorizer.js';
|
|
4
|
+
/**
|
|
5
|
+
* Service authorizer for IAM service requests.
|
|
6
|
+
*/
|
|
7
|
+
export declare class IamServiceAuthorizer extends DefaultServiceAuthorizer {
|
|
8
|
+
authorize(request: ServiceAuthorizationRequest): RequestAnalysis;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=IamServiceAuthorizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IamServiceAuthorizer.d.ts","sourceRoot":"","sources":["../../../src/services/IamServiceAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAA;AA8BzE;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,wBAAwB;IAChD,SAAS,CAAC,OAAO,EAAE,2BAA2B,GAAG,eAAe;CAiCjF"}
|