@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,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IamServiceAuthorizer = void 0;
|
|
4
|
+
const util_js_1 = require("../util.js");
|
|
5
|
+
const DefaultServiceAuthorizer_js_1 = require("./DefaultServiceAuthorizer.js");
|
|
6
|
+
const deniedActionsForManagedPolicies = new Set([
|
|
7
|
+
'iam:createpolicy',
|
|
8
|
+
'iam:createpolicyversion',
|
|
9
|
+
'iam:deletepolicy',
|
|
10
|
+
'iam:deletepolicyversion',
|
|
11
|
+
'iam:setdefaultpolicyversion',
|
|
12
|
+
'iam:tagpolicy',
|
|
13
|
+
'iam:untagpolicy'
|
|
14
|
+
]);
|
|
15
|
+
const deniedActionsForAwsManagedRoles = new Set([
|
|
16
|
+
'iam:attachrolepolicy',
|
|
17
|
+
'iam:createrole',
|
|
18
|
+
'iam:createservicelinkedrole',
|
|
19
|
+
'iam:deleterole',
|
|
20
|
+
'iam:deleterolepermissionsboundary',
|
|
21
|
+
'iam:deleterolepolicy',
|
|
22
|
+
'iam:deleteservicelinkedrole',
|
|
23
|
+
'iam:detachrolepolicy',
|
|
24
|
+
'iam:passrole',
|
|
25
|
+
'iam:putrolepermissionsboundary',
|
|
26
|
+
'iam:putrolepolicy',
|
|
27
|
+
'iam:tagrole',
|
|
28
|
+
'iam:untagrole',
|
|
29
|
+
'iam:updateassumerolepolicy',
|
|
30
|
+
'iam:updaterole',
|
|
31
|
+
'iam:updateroledescription'
|
|
32
|
+
]);
|
|
33
|
+
/**
|
|
34
|
+
* Service authorizer for IAM service requests.
|
|
35
|
+
*/
|
|
36
|
+
class IamServiceAuthorizer extends DefaultServiceAuthorizer_js_1.DefaultServiceAuthorizer {
|
|
37
|
+
authorize(request) {
|
|
38
|
+
const baseResult = super.authorize(request);
|
|
39
|
+
const resourceParts = (0, util_js_1.splitArnParts)(request.request.resource.value());
|
|
40
|
+
// If the request is for a managed policy and the action is one of the denied actions,
|
|
41
|
+
// we return implicitly denied.
|
|
42
|
+
if (deniedActionsForManagedPolicies.has(request.request.action.value().toLowerCase()) &&
|
|
43
|
+
resourceParts.resource?.toLowerCase()?.startsWith('policy/') &&
|
|
44
|
+
resourceParts.accountId == 'aws') {
|
|
45
|
+
return {
|
|
46
|
+
...baseResult,
|
|
47
|
+
result: 'ImplicitlyDenied',
|
|
48
|
+
conditions: undefined
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
// If the request is for an AWS managed role and the action is one of the denied actions,
|
|
52
|
+
// we return implicitly denied.
|
|
53
|
+
if (deniedActionsForAwsManagedRoles.has(request.request.action.value().toLowerCase()) &&
|
|
54
|
+
resourceParts.resource?.toLowerCase()?.startsWith('role/aws-reserved/')) {
|
|
55
|
+
return {
|
|
56
|
+
...baseResult,
|
|
57
|
+
result: 'ImplicitlyDenied',
|
|
58
|
+
conditions: undefined
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return baseResult;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.IamServiceAuthorizer = IamServiceAuthorizer;
|
|
65
|
+
//# sourceMappingURL=IamServiceAuthorizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IamServiceAuthorizer.js","sourceRoot":"","sources":["../../../src/services/IamServiceAuthorizer.ts"],"names":[],"mappings":";;;AACA,wCAA0C;AAC1C,+EAAwE;AAGxE,MAAM,+BAA+B,GAAG,IAAI,GAAG,CAAC;IAC9C,kBAAkB;IAClB,yBAAyB;IACzB,kBAAkB;IAClB,yBAAyB;IACzB,6BAA6B;IAC7B,eAAe;IACf,iBAAiB;CAClB,CAAC,CAAA;AAEF,MAAM,+BAA+B,GAAG,IAAI,GAAG,CAAC;IAC9C,sBAAsB;IACtB,gBAAgB;IAChB,6BAA6B;IAC7B,gBAAgB;IAChB,mCAAmC;IACnC,sBAAsB;IACtB,6BAA6B;IAC7B,sBAAsB;IACtB,cAAc;IACd,gCAAgC;IAChC,mBAAmB;IACnB,aAAa;IACb,eAAe;IACf,4BAA4B;IAC5B,gBAAgB;IAChB,2BAA2B;CAC5B,CAAC,CAAA;AACF;;GAEG;AACH,MAAa,oBAAqB,SAAQ,sDAAwB;IAChD,SAAS,CAAC,OAAoC;QAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAE3C,MAAM,aAAa,GAAG,IAAA,uBAAa,EAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;QACrE,sFAAsF;QACtF,+BAA+B;QAC/B,IACE,+BAA+B,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;YACjF,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,UAAU,CAAC,SAAS,CAAC;YAC5D,aAAa,CAAC,SAAS,IAAI,KAAK,EAChC,CAAC;YACD,OAAO;gBACL,GAAG,UAAU;gBACb,MAAM,EAAE,kBAAkB;gBAC1B,UAAU,EAAE,SAAS;aACtB,CAAA;QACH,CAAC;QAED,yFAAyF;QACzF,+BAA+B;QAC/B,IACE,+BAA+B,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;YACjF,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,UAAU,CAAC,oBAAoB,CAAC,EACvE,CAAC;YACD,OAAO;gBACL,GAAG,UAAU;gBACb,MAAM,EAAE,kBAAkB;gBAC1B,UAAU,EAAE,SAAS;aACtB,CAAA;QACH,CAAC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;CACF;AAlCD,oDAkCC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type RequestAnalysis, type ResourceAnalysis } from '../evaluate.js';
|
|
2
|
+
import { type RequestResource } from '../request/requestResource.js';
|
|
3
|
+
import { DefaultServiceAuthorizer, type PrincipalAccountTrust } from './DefaultServiceAuthorizer.js';
|
|
4
|
+
import { type ServiceAuthorizationRequest } from './ServiceAuthorizer.js';
|
|
5
|
+
/**
|
|
6
|
+
* Service authorizer for AWS KMS requests.
|
|
7
|
+
*/
|
|
8
|
+
export declare class KmsServiceAuthorizer extends DefaultServiceAuthorizer {
|
|
9
|
+
/**
|
|
10
|
+
* Authorize a KMS service request after policy analysis and KMS-specific managed alias checks.
|
|
11
|
+
*
|
|
12
|
+
* @param request the service authorization request containing all analyses
|
|
13
|
+
* @returns the KMS authorization result
|
|
14
|
+
*/
|
|
15
|
+
authorize(request: ServiceAuthorizationRequest): RequestAnalysis;
|
|
16
|
+
/**
|
|
17
|
+
* Determines how KMS trusts the principal account's IAM policies.
|
|
18
|
+
*
|
|
19
|
+
* KMS key resources keep KMS key-policy trust behavior, while other KMS resource types use the
|
|
20
|
+
* default service authorizer trust behavior.
|
|
21
|
+
*
|
|
22
|
+
* @param sameAccount if the principal and resource are in the same account
|
|
23
|
+
* @param resourceAnalysis the resource policy analysis
|
|
24
|
+
* @param resource the request resource used to choose key or default trust behavior
|
|
25
|
+
* @returns how KMS trusts the principal account's IAM policies
|
|
26
|
+
*/
|
|
27
|
+
serviceTrustsPrincipalAccount(sameAccount: boolean, resourceAnalysis: ResourceAnalysis, resource: RequestResource): PrincipalAccountTrust;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=KmsServiceAuthorizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KmsServiceAuthorizer.d.ts","sourceRoot":"","sources":["../../../src/services/KmsServiceAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,EAAE,wBAAwB,EAAE,KAAK,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACpG,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAA;AAkCzE;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,wBAAwB;IAChE;;;;;OAKG;IACa,SAAS,CAAC,OAAO,EAAE,2BAA2B,GAAG,eAAe;IAqBhF;;;;;;;;;;OAUG;IACM,6BAA6B,CACpC,WAAW,EAAE,OAAO,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,eAAe,GACxB,qBAAqB;CAgBzB"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KmsServiceAuthorizer = void 0;
|
|
4
|
+
const DefaultServiceAuthorizer_js_1 = require("./DefaultServiceAuthorizer.js");
|
|
5
|
+
const deniedActionsForAwsManagedAliases = new Set([
|
|
6
|
+
'kms:createalias',
|
|
7
|
+
'kms:deletealias',
|
|
8
|
+
'kms:updatealias'
|
|
9
|
+
]);
|
|
10
|
+
const awsManagedAliasPrefix = 'alias/aws/';
|
|
11
|
+
/**
|
|
12
|
+
* Checks whether the KMS resource should use KMS key-policy principal-account trust behavior.
|
|
13
|
+
*
|
|
14
|
+
* @param resource the request resource to classify
|
|
15
|
+
* @returns true when the resource is all resources or a KMS key resource
|
|
16
|
+
*/
|
|
17
|
+
function usesKmsKeyPrincipalAccountTrust(resource) {
|
|
18
|
+
return resource.isAllResources() || resource.resource().toLowerCase().startsWith('key/');
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Checks whether the KMS resource is an AWS-managed key alias.
|
|
22
|
+
*
|
|
23
|
+
* @param resource the request resource to classify
|
|
24
|
+
* @returns true when the resource is an alias/aws/... ARN resource
|
|
25
|
+
*/
|
|
26
|
+
function isAwsManagedAlias(resource) {
|
|
27
|
+
return (resource
|
|
28
|
+
.resource()
|
|
29
|
+
.slice(0, awsManagedAliasPrefix.length)
|
|
30
|
+
.localeCompare(awsManagedAliasPrefix, undefined, { sensitivity: 'accent' }) === 0);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Service authorizer for AWS KMS requests.
|
|
34
|
+
*/
|
|
35
|
+
class KmsServiceAuthorizer extends DefaultServiceAuthorizer_js_1.DefaultServiceAuthorizer {
|
|
36
|
+
/**
|
|
37
|
+
* Authorize a KMS service request after policy analysis and KMS-specific managed alias checks.
|
|
38
|
+
*
|
|
39
|
+
* @param request the service authorization request containing all analyses
|
|
40
|
+
* @returns the KMS authorization result
|
|
41
|
+
*/
|
|
42
|
+
authorize(request) {
|
|
43
|
+
const baseResult = super.authorize(request);
|
|
44
|
+
if (baseResult.result === 'ExplicitlyDenied') {
|
|
45
|
+
return baseResult;
|
|
46
|
+
}
|
|
47
|
+
if (deniedActionsForAwsManagedAliases.has(request.request.action.value().toLowerCase()) &&
|
|
48
|
+
isAwsManagedAlias(request.request.resource)) {
|
|
49
|
+
return {
|
|
50
|
+
...baseResult,
|
|
51
|
+
result: 'ImplicitlyDenied',
|
|
52
|
+
conditions: undefined
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return baseResult;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Determines how KMS trusts the principal account's IAM policies.
|
|
59
|
+
*
|
|
60
|
+
* KMS key resources keep KMS key-policy trust behavior, while other KMS resource types use the
|
|
61
|
+
* default service authorizer trust behavior.
|
|
62
|
+
*
|
|
63
|
+
* @param sameAccount if the principal and resource are in the same account
|
|
64
|
+
* @param resourceAnalysis the resource policy analysis
|
|
65
|
+
* @param resource the request resource used to choose key or default trust behavior
|
|
66
|
+
* @returns how KMS trusts the principal account's IAM policies
|
|
67
|
+
*/
|
|
68
|
+
serviceTrustsPrincipalAccount(sameAccount, resourceAnalysis, resource) {
|
|
69
|
+
if (!usesKmsKeyPrincipalAccountTrust(resource)) {
|
|
70
|
+
return super.serviceTrustsPrincipalAccount(sameAccount, resourceAnalysis, resource);
|
|
71
|
+
}
|
|
72
|
+
if (sameAccount && resource.isAllResources()) {
|
|
73
|
+
return { trustType: 'Implicit' };
|
|
74
|
+
}
|
|
75
|
+
const accountLevelStatements = this.accountLevelResourceAllowStatements(resourceAnalysis);
|
|
76
|
+
if (accountLevelStatements.length > 0) {
|
|
77
|
+
return { trustType: 'Explicit', statements: accountLevelStatements };
|
|
78
|
+
}
|
|
79
|
+
return { trustType: 'None' };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.KmsServiceAuthorizer = KmsServiceAuthorizer;
|
|
83
|
+
//# sourceMappingURL=KmsServiceAuthorizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KmsServiceAuthorizer.js","sourceRoot":"","sources":["../../../src/services/KmsServiceAuthorizer.ts"],"names":[],"mappings":";;;AAEA,+EAAoG;AAGpG,MAAM,iCAAiC,GAAG,IAAI,GAAG,CAAC;IAChD,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;CAClB,CAAC,CAAA;AACF,MAAM,qBAAqB,GAAG,YAAY,CAAA;AAE1C;;;;;GAKG;AACH,SAAS,+BAA+B,CAAC,QAAyB;IAChE,OAAO,QAAQ,CAAC,cAAc,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;AAC1F,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,QAAyB;IAClD,OAAO,CACL,QAAQ;SACL,QAAQ,EAAE;SACV,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,MAAM,CAAC;SACtC,aAAa,CAAC,qBAAqB,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,CACpF,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAa,oBAAqB,SAAQ,sDAAwB;IAChE;;;;;OAKG;IACa,SAAS,CAAC,OAAoC;QAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAE3C,IAAI,UAAU,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;YAC7C,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,IACE,iCAAiC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;YACnF,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC3C,CAAC;YACD,OAAO;gBACL,GAAG,UAAU;gBACb,MAAM,EAAE,kBAAkB;gBAC1B,UAAU,EAAE,SAAS;aACtB,CAAA;QACH,CAAC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;IAED;;;;;;;;;;OAUG;IACM,6BAA6B,CACpC,WAAoB,EACpB,gBAAkC,EAClC,QAAyB;QAEzB,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC,6BAA6B,CAAC,WAAW,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAA;QACrF,CAAC;QAED,IAAI,WAAW,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC;YAC7C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;QAClC,CAAC;QAED,MAAM,sBAAsB,GAAG,IAAI,CAAC,mCAAmC,CAAC,gBAAgB,CAAC,CAAA;QACzF,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,sBAAsB,EAAE,CAAA;QACtE,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;IAC9B,CAAC;CACF;AA3DD,oDA2DC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type PolicyWithName, type SimulationParameters } from '../core_engine/CoreSimulatorEngine.js';
|
|
2
|
+
import { type IdentityAnalysis, type RcpAnalysis, type RequestAnalysis, type ResourceAnalysis, type ScpAnalysis } from '../evaluate.js';
|
|
3
|
+
import { type AwsRequest } from '../request/request.js';
|
|
4
|
+
import { type S3ServiceSettings } from './s3/s3BlockPublicAccess.js';
|
|
5
|
+
export interface ServiceSettings {
|
|
6
|
+
/**
|
|
7
|
+
* S3-specific service settings.
|
|
8
|
+
*/
|
|
9
|
+
s3?: S3ServiceSettings;
|
|
10
|
+
}
|
|
11
|
+
export interface ServiceAuthorizationRequest {
|
|
12
|
+
request: AwsRequest;
|
|
13
|
+
sessionAnalysis: IdentityAnalysis | undefined;
|
|
14
|
+
identityAnalysis: IdentityAnalysis;
|
|
15
|
+
scpAnalysis: ScpAnalysis;
|
|
16
|
+
resourceAnalysis: ResourceAnalysis;
|
|
17
|
+
resourcePolicy: PolicyWithName | undefined;
|
|
18
|
+
rcpAnalysis: RcpAnalysis;
|
|
19
|
+
permissionBoundaryAnalysis: IdentityAnalysis | undefined;
|
|
20
|
+
endpointAnalysis: IdentityAnalysis | undefined;
|
|
21
|
+
simulationParameters: SimulationParameters;
|
|
22
|
+
serviceSettings?: ServiceSettings;
|
|
23
|
+
}
|
|
24
|
+
export interface ServiceAuthorizer {
|
|
25
|
+
authorize(request: ServiceAuthorizationRequest): RequestAnalysis;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=ServiceAuthorizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServiceAuthorizer.d.ts","sourceRoot":"","sources":["../../../src/services/ServiceAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAC1B,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAA;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,UAAU,CAAA;IACnB,eAAe,EAAE,gBAAgB,GAAG,SAAS,CAAA;IAC7C,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,WAAW,EAAE,WAAW,CAAA;IACxB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,cAAc,EAAE,cAAc,GAAG,SAAS,CAAA;IAC1C,WAAW,EAAE,WAAW,CAAA;IACxB,0BAA0B,EAAE,gBAAgB,GAAG,SAAS,CAAA;IACxD,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,CAAA;IAC9C,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,eAAe,CAAC,EAAE,eAAe,CAAA;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,OAAO,EAAE,2BAA2B,GAAG,eAAe,CAAA;CACjE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServiceAuthorizer.js","sourceRoot":"","sources":["../../../src/services/ServiceAuthorizer.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type RequestAnalysis, type ResourceAnalysis } from '../evaluate.js';
|
|
2
|
+
import { type RequestResource } from '../request/requestResource.js';
|
|
3
|
+
import { DefaultServiceAuthorizer, type PrincipalAccountTrust } from './DefaultServiceAuthorizer.js';
|
|
4
|
+
import { type ServiceAuthorizationRequest } from './ServiceAuthorizer.js';
|
|
5
|
+
/**
|
|
6
|
+
* The default authorizer for services.
|
|
7
|
+
*/
|
|
8
|
+
export declare class StsServiceAuthorizer extends DefaultServiceAuthorizer {
|
|
9
|
+
authorize(request: ServiceAuthorizationRequest): RequestAnalysis;
|
|
10
|
+
/**
|
|
11
|
+
* Determines if the service trusts the principal's Account's IAM policies
|
|
12
|
+
*
|
|
13
|
+
* @param sameAccount - If the principal and resource are in the same account
|
|
14
|
+
* @param resourceAnalysis - The resource policy analysis
|
|
15
|
+
* @returns how the service trusts the principal's account IAM policies
|
|
16
|
+
*/
|
|
17
|
+
serviceTrustsPrincipalAccount(sameAccount: boolean, resourceAnalysis: ResourceAnalysis, resource: RequestResource): PrincipalAccountTrust;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=StsServiceAuthorizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StsServiceAuthorizer.d.ts","sourceRoot":"","sources":["../../../src/services/StsServiceAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,EAAE,wBAAwB,EAAE,KAAK,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACpG,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAA;AAEzE;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,wBAAwB;IAChD,SAAS,CAAC,OAAO,EAAE,2BAA2B,GAAG,eAAe;IAchF;;;;;;OAMG;IACM,6BAA6B,CACpC,WAAW,EAAE,OAAO,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,eAAe,GACxB,qBAAqB;CAkBzB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StsServiceAuthorizer = void 0;
|
|
4
|
+
const DefaultServiceAuthorizer_js_1 = require("./DefaultServiceAuthorizer.js");
|
|
5
|
+
/**
|
|
6
|
+
* The default authorizer for services.
|
|
7
|
+
*/
|
|
8
|
+
class StsServiceAuthorizer extends DefaultServiceAuthorizer_js_1.DefaultServiceAuthorizer {
|
|
9
|
+
authorize(request) {
|
|
10
|
+
if (request.request.action.value().toLowerCase() === 'sts:getcalleridentity' &&
|
|
11
|
+
request.request.principal.isAuthenticated()) {
|
|
12
|
+
return {
|
|
13
|
+
result: 'Allowed',
|
|
14
|
+
sameAccount: true,
|
|
15
|
+
conditions: undefined
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
return super.authorize(request);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Determines if the service trusts the principal's Account's IAM policies
|
|
22
|
+
*
|
|
23
|
+
* @param sameAccount - If the principal and resource are in the same account
|
|
24
|
+
* @param resourceAnalysis - The resource policy analysis
|
|
25
|
+
* @returns how the service trusts the principal's account IAM policies
|
|
26
|
+
*/
|
|
27
|
+
serviceTrustsPrincipalAccount(sameAccount, resourceAnalysis, resource) {
|
|
28
|
+
//If there is no resource policy, the service trusts the principal's account IAM policies
|
|
29
|
+
if (sameAccount && resourceAnalysis.result === 'NotApplicable') {
|
|
30
|
+
return { trustType: 'Implicit' };
|
|
31
|
+
}
|
|
32
|
+
/*
|
|
33
|
+
If there is a resource policy, for instance a role trust policy,
|
|
34
|
+
the trust policy must explicitly allow the principal's account,
|
|
35
|
+
even if the principal and resource are in the same account.
|
|
36
|
+
*/
|
|
37
|
+
const accountLevelStatements = this.accountLevelResourceAllowStatements(resourceAnalysis);
|
|
38
|
+
if (accountLevelStatements.length > 0) {
|
|
39
|
+
return { trustType: 'Explicit', statements: accountLevelStatements };
|
|
40
|
+
}
|
|
41
|
+
return { trustType: 'None' };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.StsServiceAuthorizer = StsServiceAuthorizer;
|
|
45
|
+
//# sourceMappingURL=StsServiceAuthorizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StsServiceAuthorizer.js","sourceRoot":"","sources":["../../../src/services/StsServiceAuthorizer.ts"],"names":[],"mappings":";;;AAEA,+EAAoG;AAGpG;;GAEG;AACH,MAAa,oBAAqB,SAAQ,sDAAwB;IAChD,SAAS,CAAC,OAAoC;QAC5D,IACE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,KAAK,uBAAuB;YACxE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,EAC3C,CAAC;YACD,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,SAAS;aACtB,CAAA;QACH,CAAC;QACD,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;IAED;;;;;;OAMG;IACM,6BAA6B,CACpC,WAAoB,EACpB,gBAAkC,EAClC,QAAyB;QAEzB,yFAAyF;QACzF,IAAI,WAAW,IAAI,gBAAgB,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;YAC/D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;QAClC,CAAC;QAED;;;;UAIE;QACF,MAAM,sBAAsB,GAAG,IAAI,CAAC,mCAAmC,CAAC,gBAAgB,CAAC,CAAA;QACzF,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,sBAAsB,EAAE,CAAA;QACtE,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;IAC9B,CAAC;CACF;AA5CD,oDA4CC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
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 S3 requests that applies S3 Block Public Access runtime behavior.
|
|
6
|
+
*/
|
|
7
|
+
export declare class S3ServiceAuthorizer extends DefaultServiceAuthorizer {
|
|
8
|
+
/**
|
|
9
|
+
* Authorizes an S3 request and applies RestrictPublicBuckets when the caller supplied
|
|
10
|
+
* S3 Block Public Access as enabled for the target bucket/account.
|
|
11
|
+
*
|
|
12
|
+
* @param request the service authorization request containing policy analyses and S3 settings
|
|
13
|
+
* @returns the final request analysis including an S3 BPA block when applicable
|
|
14
|
+
*/
|
|
15
|
+
authorize(request: ServiceAuthorizationRequest): RequestAnalysis;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Checks whether a resource string is a standard S3 bucket or object ARN.
|
|
19
|
+
*
|
|
20
|
+
* @param resource the resource string to check
|
|
21
|
+
* @returns true if the resource is a standard S3 bucket/object ARN
|
|
22
|
+
*/
|
|
23
|
+
export declare function isStandardS3BucketResource(resource: string): boolean;
|
|
24
|
+
//# sourceMappingURL=S3ServiceAuthorizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"S3ServiceAuthorizer.d.ts","sourceRoot":"","sources":["../../../../src/services/s3/S3ServiceAuthorizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AAG1E;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,wBAAwB;IAC/D;;;;;;OAMG;IACa,SAAS,CAAC,OAAO,EAAE,2BAA2B,GAAG,eAAe;CAyCjF;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAuBpE"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.S3ServiceAuthorizer = void 0;
|
|
4
|
+
exports.isStandardS3BucketResource = isStandardS3BucketResource;
|
|
5
|
+
const iam_utils_1 = require("@actsecurity/iam-utils");
|
|
6
|
+
const DefaultServiceAuthorizer_js_1 = require("../DefaultServiceAuthorizer.js");
|
|
7
|
+
const s3BlockPublicAccess_js_1 = require("./s3BlockPublicAccess.js");
|
|
8
|
+
/**
|
|
9
|
+
* Service authorizer for S3 requests that applies S3 Block Public Access runtime behavior.
|
|
10
|
+
*/
|
|
11
|
+
class S3ServiceAuthorizer extends DefaultServiceAuthorizer_js_1.DefaultServiceAuthorizer {
|
|
12
|
+
/**
|
|
13
|
+
* Authorizes an S3 request and applies RestrictPublicBuckets when the caller supplied
|
|
14
|
+
* S3 Block Public Access as enabled for the target bucket/account.
|
|
15
|
+
*
|
|
16
|
+
* @param request the service authorization request containing policy analyses and S3 settings
|
|
17
|
+
* @returns the final request analysis including an S3 BPA block when applicable
|
|
18
|
+
*/
|
|
19
|
+
authorize(request) {
|
|
20
|
+
const baseResult = super.authorize(request);
|
|
21
|
+
if (baseResult.result !== 'Allowed') {
|
|
22
|
+
return baseResult;
|
|
23
|
+
}
|
|
24
|
+
if (!isStandardS3BucketResource(request.request.resource.value())) {
|
|
25
|
+
return baseResult;
|
|
26
|
+
}
|
|
27
|
+
if (request.serviceSettings?.s3?.blockPublicAccess !== true) {
|
|
28
|
+
return baseResult;
|
|
29
|
+
}
|
|
30
|
+
if (!request.resourcePolicy) {
|
|
31
|
+
return baseResult;
|
|
32
|
+
}
|
|
33
|
+
const classification = (0, s3BlockPublicAccess_js_1.classifyS3RuntimePublicBucketPolicy)(request.resourcePolicy);
|
|
34
|
+
if (classification.result === 'nonPublic') {
|
|
35
|
+
return baseResult;
|
|
36
|
+
}
|
|
37
|
+
if (baseResult.sameAccount) {
|
|
38
|
+
return baseResult;
|
|
39
|
+
}
|
|
40
|
+
const principal = request.request.principal;
|
|
41
|
+
if (principal.isAuthenticated() && (0, iam_utils_1.isServicePrincipal)(principal.value())) {
|
|
42
|
+
return baseResult;
|
|
43
|
+
}
|
|
44
|
+
// The base result is Allowed here, so there are no prior blocking reasons to merge.
|
|
45
|
+
return {
|
|
46
|
+
...baseResult,
|
|
47
|
+
result: 'ExplicitlyDenied',
|
|
48
|
+
blockedBy: ['s3-bpa'],
|
|
49
|
+
conditions: undefined
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.S3ServiceAuthorizer = S3ServiceAuthorizer;
|
|
54
|
+
/**
|
|
55
|
+
* Checks whether a resource string is a standard S3 bucket or object ARN.
|
|
56
|
+
*
|
|
57
|
+
* @param resource the resource string to check
|
|
58
|
+
* @returns true if the resource is a standard S3 bucket/object ARN
|
|
59
|
+
*/
|
|
60
|
+
function isStandardS3BucketResource(resource) {
|
|
61
|
+
if (resource === '*') {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
const parts = resource.split(':');
|
|
65
|
+
if (parts.length < 6) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
const service = parts[2];
|
|
69
|
+
const region = parts[3];
|
|
70
|
+
const account = parts[4];
|
|
71
|
+
const resourcePart = parts.slice(5).join(':');
|
|
72
|
+
const bucketNamePattern = resourcePart.split('/')[0];
|
|
73
|
+
return (service === 's3' &&
|
|
74
|
+
region === '' &&
|
|
75
|
+
account === '' &&
|
|
76
|
+
resourcePart.length > 0 &&
|
|
77
|
+
bucketNamePattern.length > 0);
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=S3ServiceAuthorizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"S3ServiceAuthorizer.js","sourceRoot":"","sources":["../../../../src/services/s3/S3ServiceAuthorizer.ts"],"names":[],"mappings":";;;AAkEA,gEAuBC;AAzFD,sDAA2D;AAE3D,gFAAyE;AAEzE,qEAA8E;AAE9E;;GAEG;AACH,MAAa,mBAAoB,SAAQ,sDAAwB;IAC/D;;;;;;OAMG;IACa,SAAS,CAAC,OAAoC;QAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAE3C,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YAClE,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,IAAI,OAAO,CAAC,eAAe,EAAE,EAAE,EAAE,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC5D,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAC5B,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,MAAM,cAAc,GAAG,IAAA,4DAAmC,EAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QAClF,IAAI,cAAc,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC1C,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;YAC3B,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAA;QAC3C,IAAI,SAAS,CAAC,eAAe,EAAE,IAAI,IAAA,8BAAkB,EAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YACzE,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,oFAAoF;QACpF,OAAO;YACL,GAAG,UAAU;YACb,MAAM,EAAE,kBAAkB;YAC1B,SAAS,EAAE,CAAC,QAAQ,CAAC;YACrB,UAAU,EAAE,SAAS;SACtB,CAAA;IACH,CAAC;CACF;AAjDD,kDAiDC;AAED;;;;;GAKG;AACH,SAAgB,0BAA0B,CAAC,QAAgB;IACzD,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACvB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC7C,MAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAEpD,OAAO,CACL,OAAO,KAAK,IAAI;QAChB,MAAM,KAAK,EAAE;QACb,OAAO,KAAK,EAAE;QACd,YAAY,CAAC,MAAM,GAAG,CAAC;QACvB,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAC7B,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type Policy } from '@actsecurity/iam-policy';
|
|
2
|
+
/**
|
|
3
|
+
* Caller-supplied S3 Block Public Access settings for simulation.
|
|
4
|
+
*/
|
|
5
|
+
export interface S3ServiceSettings {
|
|
6
|
+
/**
|
|
7
|
+
* Whether S3 Block Public Access is enabled for the request target.
|
|
8
|
+
*/
|
|
9
|
+
blockPublicAccess?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Classification of a standard S3 bucket policy for runtime RestrictPublicBuckets behavior.
|
|
13
|
+
*/
|
|
14
|
+
export type S3RuntimePublicPolicyClassification = {
|
|
15
|
+
/**
|
|
16
|
+
* The bucket policy is public for runtime RestrictPublicBuckets behavior.
|
|
17
|
+
*/
|
|
18
|
+
result: 'public';
|
|
19
|
+
/**
|
|
20
|
+
* Allow statements that make the policy public.
|
|
21
|
+
*/
|
|
22
|
+
publicStatements: S3RuntimePublicStatement[];
|
|
23
|
+
} | {
|
|
24
|
+
/**
|
|
25
|
+
* The bucket policy is not public for runtime RestrictPublicBuckets behavior.
|
|
26
|
+
*/
|
|
27
|
+
result: 'nonPublic';
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Identifies an Allow statement that makes a bucket policy public.
|
|
31
|
+
*/
|
|
32
|
+
export interface S3RuntimePublicStatement {
|
|
33
|
+
/**
|
|
34
|
+
* The 1-based statement index in the policy.
|
|
35
|
+
*/
|
|
36
|
+
index: number;
|
|
37
|
+
/**
|
|
38
|
+
* The statement Sid, if present.
|
|
39
|
+
*/
|
|
40
|
+
sid?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Classifies a standard S3 bucket policy as public or non-public for runtime
|
|
44
|
+
* RestrictPublicBuckets behavior.
|
|
45
|
+
*
|
|
46
|
+
* @param policy the loaded S3 bucket policy to classify
|
|
47
|
+
* @returns whether the policy is runtime-public and, when public, the public statements
|
|
48
|
+
*/
|
|
49
|
+
export declare function classifyS3RuntimePublicBucketPolicy(policy: Policy<unknown>): S3RuntimePublicPolicyClassification;
|
|
50
|
+
//# sourceMappingURL=s3BlockPublicAccess.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3BlockPublicAccess.d.ts","sourceRoot":"","sources":["../../../../src/services/s3/s3BlockPublicAccess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,yBAAyB,CAAA;AAGrE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAC3C;IACE;;OAEG;IACH,MAAM,EAAE,QAAQ,CAAA;IAEhB;;OAEG;IACH,gBAAgB,EAAE,wBAAwB,EAAE,CAAA;CAC7C,GACD;IACE;;OAEG;IACH,MAAM,EAAE,WAAW,CAAA;CACpB,CAAA;AAEL;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED;;;;;;GAMG;AACH,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GACtB,mCAAmC,CAWrC"}
|