@kensio/yulin 1.20.16 → 1.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/service/athena/engine/sim-athena-comparison-shims.d.ts +13 -0
- package/dist/service/athena/engine/sim-athena-comparison-shims.js +68 -0
- package/dist/service/athena/engine/sim-athena-shims.js +2 -0
- package/dist/service/aws/caller/sim-aws-ambient-caller.d.ts +23 -0
- package/dist/service/aws/caller/sim-aws-ambient-caller.js +12 -0
- package/dist/service/aws/caller/sim-aws-caller-resolver.d.ts +17 -6
- package/dist/service/aws/caller/sim-aws-caller-resolver.js +21 -26
- package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts +6 -0
- package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +3 -0
- package/dist/service/aws/factory/sim-aws-account-service-cache.d.ts +6 -0
- package/dist/service/aws/factory/sim-aws-account-service-cache.js +5 -1
- package/dist/service/aws/factory/sim-aws-registered-service-builder.js +3 -1
- package/dist/service/aws/factory/sim-aws-service-factory.js +9 -1
- package/dist/service/cloudformation/command/create-stack/create-stack.handler.d.ts +4 -0
- package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +4 -1
- package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-deployer.js +2 -1
- package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.d.ts +11 -2
- package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.js +2 -1
- package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-stack-options.d.ts +6 -0
- package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.d.ts +11 -0
- package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.js +17 -15
- package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.d.ts +12 -0
- package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.js +2 -1
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.d.ts +23 -0
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.js +30 -0
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cfn-value-adapter.js +16 -0
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-orp-cfn.d.ts +24 -0
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-orp-cfn.js +31 -0
- package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.d.ts +29 -12
- package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.js +51 -20
- package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.d.ts +19 -0
- package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.js +6 -0
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.d.ts +7 -0
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.js +9 -2
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.d.ts +2 -0
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.js +2 -1
- package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +6 -0
- package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +4 -1
- package/dist/service/cloudformation/stack/sim-cfn-stack.js +2 -1
- package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +6 -0
- package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts +16 -0
- package/dist/service/cloudfront/cache/sim-cf-accept-encoding.d.ts +11 -0
- package/dist/service/cloudfront/cache/sim-cf-accept-encoding.js +27 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-control.d.ts +28 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-control.js +49 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-entry-key-path.d.ts +11 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-entry-key-path.js +22 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-entry-key.d.ts +32 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-entry-key.js +112 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-status.d.ts +27 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-status.js +53 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-ttl.d.ts +28 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-ttl.js +50 -0
- package/dist/service/cloudfront/cache/sim-cf-cacheable-request.d.ts +35 -0
- package/dist/service/cloudfront/cache/sim-cf-cacheable-request.js +32 -0
- package/dist/service/cloudfront/cache/sim-cf-distribution-cache.d.ts +57 -0
- package/dist/service/cloudfront/cache/sim-cf-distribution-cache.js +115 -0
- package/dist/service/cloudfront/cache/sim-cf-edge.d.ts +37 -0
- package/dist/service/cloudfront/cache/sim-cf-edge.js +34 -0
- package/dist/service/cloudfront/cache/sim-cf-error-cache-ttl.d.ts +36 -0
- package/dist/service/cloudfront/cache/sim-cf-error-cache-ttl.js +28 -0
- package/dist/service/cloudfront/cache/sim-cf-http-date.d.ts +15 -0
- package/dist/service/cloudfront/cache/sim-cf-http-date.js +40 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-key.d.ts +63 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-key.js +70 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.d.ts +37 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.js +50 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.d.ts +35 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.js +49 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.d.ts +33 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.js +132 -0
- package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.d.ts +8 -0
- package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.js +13 -0
- package/dist/service/cloudfront/cff/sim-cf-function-commands.d.ts +52 -0
- package/dist/service/cloudfront/cff/sim-cf-function-commands.js +51 -0
- package/dist/service/cloudfront/cff/sim-cff-configuration.d.ts +41 -0
- package/dist/service/cloudfront/cff/sim-cff-configuration.js +34 -0
- package/dist/service/cloudfront/cff/sim-cff-search-distribution.fixture.js +4 -0
- package/dist/service/cloudfront/cff/sim-cff-stage.d.ts +23 -0
- package/dist/service/cloudfront/cff/sim-cff-stage.js +30 -0
- package/dist/service/cloudfront/cff/sim-cloudfront-function.d.ts +6 -1
- package/dist/service/cloudfront/cff/sim-cloudfront-function.js +6 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.d.ts +28 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.js +71 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.d.ts +24 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.js +32 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-key.d.ts +10 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-key.js +50 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-section.d.ts +28 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-section.js +29 -0
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-behavior-policy-kinds.d.ts +16 -0
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-behavior-policy-kinds.js +23 -0
- package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.d.ts → sim-cfn-cf-distro-behavior-policies.d.ts} +9 -7
- package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.js → sim-cfn-cf-distro-behavior-policies.js} +12 -37
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.d.ts +6 -5
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.js +8 -7
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.d.ts +23 -0
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.js +35 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-config.d.ts +28 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-config.js +46 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-creator.d.ts +24 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-creator.js +32 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-forwarding.d.ts +10 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-forwarding.js +51 -0
- package/dist/service/cloudfront/cfn/policy/sim-cfn-cf-policy-section.d.ts +22 -0
- package/dist/service/cloudfront/cfn/policy/sim-cfn-cf-policy-section.js +54 -0
- package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.d.ts +2 -0
- package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.js +22 -0
- package/dist/service/cloudfront/command/create-distribution/create-distribution.command.d.ts +2 -0
- package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +4 -0
- package/dist/service/cloudfront/command/create-function/create-function.handler.js +7 -1
- package/dist/service/cloudfront/command/function/sim-cf-describe-function.d.ts +22 -0
- package/dist/service/cloudfront/command/function/sim-cf-describe-function.js +32 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-access.d.ts +48 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-access.js +48 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-command.types.d.ts +97 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-command.types.js +10 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-lookup.d.ts +12 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-lookup.js +21 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-summary.d.ts +11 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-summary.js +30 -0
- package/dist/service/cloudfront/command/function/sim-cf-get-function.d.ts +23 -0
- package/dist/service/cloudfront/command/function/sim-cf-get-function.js +33 -0
- package/dist/service/cloudfront/command/function/sim-cf-list-functions.d.ts +22 -0
- package/dist/service/cloudfront/command/function/sim-cf-list-functions.js +38 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-create-invalidation.d.ts +28 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-create-invalidation.js +59 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-get-invalidation.d.ts +19 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-get-invalidation.js +32 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-access.d.ts +36 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-access.js +45 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-command.types.d.ts +80 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-command.types.js +1 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-commands.d.ts +39 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-commands.js +35 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-list-invalidations.d.ts +23 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-list-invalidations.js +39 -0
- package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts +4 -0
- package/dist/service/cloudfront/controller/content/sim-cf-content-stage.d.ts +51 -0
- package/dist/service/cloudfront/controller/content/sim-cf-content-stage.js +65 -0
- package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.d.ts +2 -3
- package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.js +4 -4
- package/dist/service/cloudfront/controller/error/sim-cf-custom-error-responder.d.ts +4 -0
- package/dist/service/cloudfront/controller/error/sim-cf-custom-error-responder.js +12 -8
- package/dist/service/cloudfront/controller/origin/sim-cf-origin-stage.d.ts +2 -2
- package/dist/service/cloudfront/controller/origin/sim-cf-origin-stage.js +2 -2
- package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.d.ts +6 -6
- package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.js +35 -20
- package/dist/service/cloudfront/custom-error/sim-cloudfront-custom-error-response.d.ts +23 -5
- package/dist/service/cloudfront/custom-error/sim-cloudfront-custom-error-response.js +8 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.d.ts +18 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.js +30 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-origin-request-policy.d.ts +18 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-origin-request-policy.js +30 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.d.ts +30 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.js +44 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.d.ts +2 -2
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js +9 -3
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.d.ts +0 -10
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.js +0 -19
- package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.d.ts +4 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js +8 -2
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.d.ts +3 -3
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.js +5 -5
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-custom-error-configurator.d.ts +13 -3
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-custom-error-configurator.js +27 -6
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.d.ts +3 -3
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.js +4 -4
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.d.ts +3 -1
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.js +4 -1
- package/dist/service/cloudfront/distribution/sim-cf-distribution-configuration-state.d.ts +7 -3
- package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts +4 -0
- package/dist/service/cloudfront/distribution/sim-cf-distribution-view.js +1 -1
- package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.d.ts +25 -2
- package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.js +24 -0
- package/dist/service/cloudfront/error/sim-cf-invalidation.error.d.ts +22 -0
- package/dist/service/cloudfront/error/sim-cf-invalidation.error.js +26 -0
- package/dist/service/cloudfront/error/sim-cf-origin-request-policy.error.d.ts +22 -0
- package/dist/service/cloudfront/error/sim-cf-origin-request-policy.error.js +26 -0
- package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts +21 -0
- package/dist/service/cloudfront/error/sim-cloudfront.error.js +25 -0
- package/dist/service/cloudfront/index.d.ts +2 -0
- package/dist/service/cloudfront/index.js +1 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation-path.d.ts +22 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation-path.js +32 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation-view.d.ts +43 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation-view.js +33 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation.d.ts +55 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation.js +56 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidations.d.ts +41 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidations.js +58 -0
- package/dist/service/cloudfront/invalidation/sim-cf-repeated-invalidation.d.ts +15 -0
- package/dist/service/cloudfront/invalidation/sim-cf-repeated-invalidation.js +23 -0
- package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store-access.js +2 -10
- package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store.js +2 -1
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-forwarding.d.ts +19 -0
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-forwarding.js +116 -0
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.d.ts +15 -5
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.js +13 -8
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-signer.js +8 -5
- package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.d.ts +13 -0
- package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.js +8 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-behavior-forwarded.d.ts +24 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-behavior-forwarded.js +21 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-forwarded-to-origin.d.ts +57 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-forwarded-to-origin.js +129 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-managed-origin-request-policies.d.ts +30 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-managed-origin-request-policies.js +121 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-forwarding.d.ts +56 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-forwarding.js +67 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy-registry.d.ts +38 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy-registry.js +51 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy.d.ts +32 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy.js +30 -0
- package/dist/service/cloudfront/registry/sim-cloud-front-registry.d.ts +25 -0
- package/dist/service/cloudfront/registry/sim-cloud-front-registry.js +23 -0
- package/dist/service/cloudfront/sdk/sim-cloudfront-sdk-command-router.js +24 -0
- package/dist/service/cloudfront/sim-cf-authorize.d.ts +16 -0
- package/dist/service/cloudfront/sim-cf-authorize.js +19 -0
- package/dist/service/cloudfront/sim-cf-etag.d.ts +7 -0
- package/dist/service/cloudfront/sim-cf-etag.js +10 -0
- package/dist/service/cloudfront/sim-cloudfront-caching.d.ts +31 -0
- package/dist/service/cloudfront/sim-cloudfront-caching.js +38 -0
- package/dist/service/cloudfront/sim-cloudfront-commands.d.ts +20 -12
- package/dist/service/cloudfront/sim-cloudfront-commands.js +20 -17
- package/dist/service/cloudfront/sim-cloudfront-distributions.d.ts +21 -0
- package/dist/service/cloudfront/sim-cloudfront-distributions.js +23 -0
- package/dist/service/cloudfront/sim-cloudfront-origin-access-controls.d.ts +30 -0
- package/dist/service/cloudfront/sim-cloudfront-origin-access-controls.js +35 -0
- package/dist/service/cloudfront/sim-cloudfront-policies.d.ts +60 -0
- package/dist/service/cloudfront/sim-cloudfront-policies.js +75 -0
- package/dist/service/cloudfront/sim-cloudfront.d.ts +24 -44
- package/dist/service/cloudfront/sim-cloudfront.js +37 -58
- package/dist/service/ecr/authorize/sim-ecr-authorizer.d.ts +31 -0
- package/dist/service/ecr/authorize/sim-ecr-authorizer.js +38 -0
- package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.d.ts +11 -2
- package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.js +11 -2
- package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.d.ts +4 -2
- package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.js +8 -9
- package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.d.ts +7 -0
- package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.js +9 -0
- package/dist/service/ecr/sim-ecr.d.ts +7 -0
- package/dist/service/ecr/sim-ecr.js +16 -4
- package/dist/service/ecs/command/authorize/sim-ecs-authorizer.d.ts +12 -0
- package/dist/service/ecs/command/authorize/sim-ecs-authorizer.js +21 -0
- package/dist/service/ecs/command/register-task-definition/register-task-definition.handler.js +1 -0
- package/dist/service/ecs/sim-ecs-service-principal.d.ts +8 -0
- package/dist/service/ecs/sim-ecs-service-principal.js +8 -0
- package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.d.ts +12 -0
- package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.js +21 -0
- package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.d.ts +13 -0
- package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.js +9 -0
- package/dist/service/eventbridge/command/target/sim-event-bridge-put-targets.js +1 -0
- package/dist/service/firehose/command/authorize/sim-firehose-authorizer.d.ts +12 -0
- package/dist/service/firehose/command/authorize/sim-firehose-authorizer.js +20 -0
- package/dist/service/firehose/command/sim-firehose-delivery-stream-access.d.ts +4 -0
- package/dist/service/firehose/command/sim-firehose-delivery-stream-access.js +6 -0
- package/dist/service/firehose/command/stream/sim-firehose-create-delivery-stream.js +3 -1
- package/dist/service/firehose/sim-firehose-service-principal.d.ts +8 -0
- package/dist/service/firehose/sim-firehose-service-principal.js +8 -0
- package/dist/service/firehose/source/sim-firehose-source.d.ts +5 -0
- package/dist/service/firehose/source/sim-firehose-source.js +5 -0
- package/dist/service/glue/cfn/database/sim-cfn-glue-database-properties.js +2 -2
- package/dist/service/glue/cfn/sim-cfn-glue-generated-name.d.ts +10 -0
- package/dist/service/glue/cfn/sim-cfn-glue-generated-name.js +25 -0
- package/dist/service/glue/cfn/table/sim-cfn-glue-table-properties.js +2 -3
- package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.d.ts +34 -2
- package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js +34 -2
- package/dist/service/iam/authorize/allow/sim-iam-allow-statements.d.ts +4 -3
- package/dist/service/iam/authorize/allow/sim-iam-allow-statements.js +9 -3
- package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.d.ts +14 -5
- package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.js +16 -12
- package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.d.ts +9 -3
- package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.js +5 -3
- package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.d.ts +9 -71
- package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.js +2 -1
- package/dist/service/iam/authorize/context/sim-iam-auth-z-input.d.ts +89 -0
- package/dist/service/iam/authorize/context/sim-iam-auth-z-input.js +1 -0
- package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.d.ts +11 -3
- package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.js +20 -8
- package/dist/service/iam/authorize/match/sim-iam-principal-match.d.ts +29 -8
- package/dist/service/iam/authorize/match/sim-iam-principal-match.js +38 -13
- package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.d.ts +74 -0
- package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.js +92 -0
- package/dist/service/iam/authorize/sim-iam-account-auth-z.d.ts +14 -5
- package/dist/service/iam/authorize/sim-iam-account-auth-z.js +6 -4
- package/dist/service/iam/authorize/sim-iam-authorizer.d.ts +3 -1
- package/dist/service/iam/authorize/sim-iam-authorizer.js +2 -1
- package/dist/service/iam/authorize/sim-iam-inter-service-auth-z.d.ts +1 -1
- package/dist/service/iam/authorize/sim-iam-wildcard.js +39 -4
- package/dist/service/iam/cfn/managed-policy/sim-cfn-iam-managed-policy-creator.js +2 -1
- package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.d.ts +16 -0
- package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.js +36 -0
- package/dist/service/iam/cfn/role/sim-cfn-iam-role-properties-parser.js +9 -8
- package/dist/service/iam/cfn/sim-cfn-iam-optional-string.d.ts +17 -0
- package/dist/service/iam/cfn/sim-cfn-iam-optional-string.js +17 -0
- package/dist/service/iam/cfn/user/sim-cfn-iam-user-properties-parser.js +4 -8
- package/dist/service/iam/command/policy/create-policy/create-policy-input-resolver.js +2 -0
- package/dist/service/iam/command/policy/put-role-policy/put-role-policy.handler.js +5 -0
- package/dist/service/iam/command/policy/put-user-policy/put-user-policy.handler.js +5 -0
- package/dist/service/iam/command/role/create-role/create-role.handler.js +4 -1
- package/dist/service/iam/error/sim-iam.error.d.ts +11 -0
- package/dist/service/iam/error/sim-iam.error.js +13 -0
- package/dist/service/iam/index.d.ts +1 -0
- package/dist/service/iam/policy/sim-iam-policy-document-of-size.d.ts +18 -0
- package/dist/service/iam/policy/sim-iam-policy-document-of-size.js +41 -0
- package/dist/service/iam/role/sim-iam-deploy-role.d.ts +56 -0
- package/dist/service/iam/role/sim-iam-deploy-role.js +50 -0
- package/dist/service/iam/role/sim-iam-role-with-policy.factory.d.ts +3 -1
- package/dist/service/iam/sim-iam-account-parts.d.ts +8 -0
- package/dist/service/iam/sim-iam-account-parts.js +1 -0
- package/dist/service/iam/sim-iam.d.ts +12 -2
- package/dist/service/iam/sim-iam.js +12 -0
- package/dist/service/iam/validate/size/sim-iam-policy-document-size.d.ts +57 -0
- package/dist/service/iam/validate/size/sim-iam-policy-document-size.js +71 -0
- package/dist/service/kms/command/authorize/sim-kms-authorizer.d.ts +3 -1
- package/dist/service/kms/command/authorize/sim-kms-authorizer.js +4 -1
- package/dist/service/kms/command/sim-kms-request-options.d.ts +15 -0
- package/dist/service/kms/key/sim-kms-key-policy.d.ts +5 -4
- package/dist/service/kms/key/sim-kms-key-policy.js +4 -3
- package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.d.ts +2 -2
- package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.js +4 -3
- package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.d.ts +10 -0
- package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.js +25 -0
- package/dist/service/lambda/command/authorize/sim-lambda-resource-policies.d.ts +1 -1
- package/dist/service/lambda/command/create-function/create-function-authorizer.d.ts +9 -2
- package/dist/service/lambda/command/create-function/create-function-authorizer.js +16 -2
- package/dist/service/lambda/command/create-function/create-function.handler.js +1 -1
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.d.ts +7 -2
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.js +14 -2
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration.handler.js +1 -1
- package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +10 -1
- package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +25 -1
- package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.d.ts +13 -0
- package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.js +18 -0
- package/dist/service/lambda/sim-lambda-service-principal.d.ts +7 -0
- package/dist/service/lambda/sim-lambda-service-principal.js +7 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.d.ts +46 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.js +49 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.d.ts +5 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.js +6 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.d.ts +5 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.js +6 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.d.ts +5 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.js +6 -0
- package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.d.ts +9 -2
- package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.js +34 -5
- package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.js +1 -1
- package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.d.ts +4 -0
- package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.js +9 -4
- package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.d.ts +6 -4
- package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.js +13 -4
- package/dist/service/logs/delivery/cloudfront/sim-logs-vended-log-delivery.d.ts +23 -0
- package/dist/service/logs/delivery/cloudfront/sim-logs-vended-log-delivery.js +28 -0
- package/dist/service/logs/sim-logs-commands.d.ts +3 -0
- package/dist/service/logs/sim-logs-commands.js +4 -0
- package/dist/service/logs/sim-logs.js +6 -1
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.d.ts +2 -2
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.js +4 -3
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.d.ts +12 -0
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.js +22 -0
- package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.d.ts +1 -1
- package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.d.ts +10 -1
- package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.js +19 -1
- package/dist/service/scheduler/command/schedule/sim-scheduler-create-schedule.js +1 -0
- package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.d.ts +8 -0
- package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.js +9 -0
- package/dist/service/scheduler/command/schedule/sim-scheduler-update-schedule.js +1 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.d.ts +15 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.js +22 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.d.ts +4 -10
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.js +13 -31
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.d.ts +17 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.js +30 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.d.ts +6 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.js +8 -3
- package/dist/service/sns/command/authorize/sim-sns-topic-resource-policies.d.ts +1 -1
- package/dist/service/sqs/command/authorize/sim-sqs-queue-resource-policies.d.ts +1 -1
- package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.d.ts +16 -0
- package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.js +23 -0
- package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.d.ts +2 -4
- package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.js +5 -5
- package/dist/service/ssm/parameter/sim-ssm-kms-crypto.d.ts +11 -12
- package/dist/service/ssm/parameter/sim-ssm-kms-crypto.js +4 -4
- package/dist/service/ssm/parameter/sim-ssm-parameter-arn.d.ts +17 -0
- package/dist/service/ssm/parameter/sim-ssm-parameter-arn.js +20 -0
- package/dist/service/ssm/parameter/sim-ssm-parameter-kms.d.ts +13 -8
- package/dist/service/ssm/parameter/sim-ssm-parameter-kms.js +13 -8
- package/dist/service/ssm/parameter/sim-ssm-parameter-name.js +3 -12
- package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.d.ts +41 -0
- package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.js +64 -0
- package/dist/service/stepfunctions/command/machine/sim-state-machine-create.d.ts +5 -2
- package/dist/service/stepfunctions/command/machine/sim-state-machine-create.js +6 -2
- package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.d.ts +26 -0
- package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.js +29 -0
- package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.d.ts +7 -0
- package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.js +12 -3
- package/dist/service/stepfunctions/command/machine/sim-state-machine-update.d.ts +19 -0
- package/dist/service/stepfunctions/command/machine/{sim-state-machine-writes.js → sim-state-machine-update.js} +3 -14
- package/dist/service/stepfunctions/sim-step-functions.d.ts +8 -2
- package/dist/service/stepfunctions/sim-step-functions.js +26 -9
- package/dist/service/sts/command/assume-role/assume-role.handler.d.ts +5 -0
- package/dist/service/sts/command/assume-role/assume-role.handler.js +1 -0
- package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.d.ts +5 -0
- package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.js +1 -0
- package/dist/service/sts/sim-sts.d.ts +9 -0
- package/dist/service/sts/sim-sts.js +4 -0
- package/dist/util/memo/bounded-memo.d.ts +36 -0
- package/dist/util/memo/bounded-memo.js +58 -0
- package/docs/sdk/README.md +3 -1
- package/docs/services/athena/README.md +7 -1
- package/docs/services/cloudformation/README.md +197 -11
- package/docs/services/cloudfront/README.md +1116 -14
- package/docs/services/cloudwatch/README.md +6 -4
- package/docs/services/cognito/README.md +8 -7
- package/docs/services/dynamodb/README.md +6 -5
- package/docs/services/ecs/README.md +23 -9
- package/docs/services/elbv2/README.md +6 -2
- package/docs/services/eventbridge/README.md +9 -1
- package/docs/services/firehose/README.md +9 -3
- package/docs/services/glue/README.md +6 -0
- package/docs/services/iam/README.md +322 -27
- package/docs/services/kinesis/README.md +3 -2
- package/docs/services/kms/README.md +11 -2
- package/docs/services/lambda/README.md +76 -2
- package/docs/services/logs/README.md +22 -2
- package/docs/services/s3/README.md +7 -2
- package/docs/services/scheduler/README.md +12 -4
- package/docs/services/secretsmanager/README.md +6 -3
- package/docs/services/ses/README.md +3 -1
- package/docs/services/sns/README.md +5 -5
- package/docs/services/sqs/README.md +5 -5
- package/docs/services/ssm/README.md +35 -18
- package/docs/services/stepfunctions/README.md +11 -2
- package/docs/services/wafv2/README.md +5 -3
- package/package.json +1 -1
- package/dist/service/stepfunctions/command/machine/sim-state-machine-writes.d.ts +0 -25
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type SimAwsCredentialIdentityResolver, type SimAwsResolvedCaller } from "../../../aws/caller/sim-aws-caller-resolver.js";
|
|
2
2
|
import type { SimAwsCaller, SimAwsDefaultCaller, SimAwsPrincipal } from "../../../aws/caller/sim-aws-caller.js";
|
|
3
|
+
import type { SimAwsAmbientCaller } from "../../../aws/caller/sim-aws-ambient-caller.js";
|
|
3
4
|
import type { SimIamAuthZPolicySource } from "./sim-iam-auth-z-context.js";
|
|
4
5
|
export interface SimIamAuthZCallerContext {
|
|
5
6
|
readonly caller: SimAwsResolvedCaller;
|
|
@@ -23,13 +24,18 @@ export interface SimIamAuthZCallerContextBuilderProperties {
|
|
|
23
24
|
* The caller this simulation attributes an unattributed request to.
|
|
24
25
|
*/
|
|
25
26
|
readonly defaultCaller?: SimAwsDefaultCaller | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Where an unattributed request looks before the default.
|
|
29
|
+
*/
|
|
30
|
+
readonly ambientCaller?: SimAwsAmbientCaller | undefined;
|
|
26
31
|
}
|
|
27
32
|
/**
|
|
28
33
|
* Resolves the caller and any policy sources implied by that caller.
|
|
29
34
|
*
|
|
30
|
-
* A request that omits a caller is decided as the
|
|
31
|
-
*
|
|
32
|
-
* anonymous caller falls back
|
|
35
|
+
* A request that omits a caller is decided as the ambient caller of the run-as
|
|
36
|
+
* block it is inside, then as the simulation's default caller, and as the
|
|
37
|
+
* Account root where there is neither. An explicit anonymous caller falls back
|
|
38
|
+
* to none of them.
|
|
33
39
|
*/
|
|
34
40
|
export declare class SimIamAuthZCallerContextBuilder {
|
|
35
41
|
private readonly callerResolver;
|
|
@@ -2,9 +2,10 @@ import { SimAwsCallerResolver, } from "../../../aws/caller/sim-aws-caller-resolv
|
|
|
2
2
|
/**
|
|
3
3
|
* Resolves the caller and any policy sources implied by that caller.
|
|
4
4
|
*
|
|
5
|
-
* A request that omits a caller is decided as the
|
|
6
|
-
*
|
|
7
|
-
* anonymous caller falls back
|
|
5
|
+
* A request that omits a caller is decided as the ambient caller of the run-as
|
|
6
|
+
* block it is inside, then as the simulation's default caller, and as the
|
|
7
|
+
* Account root where there is neither. An explicit anonymous caller falls back
|
|
8
|
+
* to none of them.
|
|
8
9
|
*/
|
|
9
10
|
export class SimIamAuthZCallerContextBuilder {
|
|
10
11
|
callerResolver;
|
|
@@ -17,6 +18,7 @@ export class SimIamAuthZCallerContextBuilder {
|
|
|
17
18
|
this.callerResolver = new SimAwsCallerResolver({
|
|
18
19
|
credentialIdentityResolver: properties.credentialIdentityResolver,
|
|
19
20
|
defaultCaller: properties.defaultCaller,
|
|
21
|
+
ambientCaller: properties.ambientCaller,
|
|
20
22
|
});
|
|
21
23
|
}
|
|
22
24
|
/**
|
|
@@ -1,81 +1,15 @@
|
|
|
1
1
|
import type { SimArn } from "../../../aws/arn.js";
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
2
|
+
import type { SimAwsDefaultCaller, SimAwsPrincipal } from "../../../aws/caller/sim-aws-caller.js";
|
|
3
|
+
import type { SimAwsAmbientCaller } from "../../../aws/caller/sim-aws-ambient-caller.js";
|
|
4
4
|
import type { SimAwsAccountId } from "../../../aws/sim-aws-account.js";
|
|
5
5
|
import type { SimIamAccountResolver } from "../../registry/sim-iam-account-resolver.js";
|
|
6
|
-
import type {
|
|
6
|
+
import type { SimIamPolicy } from "../../policy/sim-iam-policy.js";
|
|
7
7
|
import type { SimIamRole, SimIamRoleName } from "../../role/sim-iam-role.js";
|
|
8
|
-
import type {
|
|
9
|
-
import type {
|
|
8
|
+
import type { SimIamAuthZContext, SimIamAuthZPolicySource } from "./sim-iam-auth-z-context.js";
|
|
9
|
+
import type { SimIamAuthorizationInput } from "./sim-iam-auth-z-input.js";
|
|
10
10
|
import type { SimAwsCredentialIdentityResolver } from "../../../aws/caller/sim-aws-caller-resolver.js";
|
|
11
11
|
import type { SimIamUser, SimIamUsername } from "../../user/sim-iam-user.js";
|
|
12
12
|
import type { SimIamServiceControlPolicyResolver } from "../scp/sim-iam-scp-resolver.js";
|
|
13
|
-
export interface SimIamResourcePolicyInput {
|
|
14
|
-
readonly document: SimIamPolicyDocument;
|
|
15
|
-
readonly sourceType?: Extract<SimIamAuthZPolicySourceType, "resource" | "trust">;
|
|
16
|
-
readonly policyName?: string | undefined;
|
|
17
|
-
readonly resourceArn?: string | undefined;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Entry-point input for sim IAM allow/deny authorization.
|
|
21
|
-
*/
|
|
22
|
-
export interface SimIamAuthorizationInput {
|
|
23
|
-
readonly action: string;
|
|
24
|
-
readonly resource: string;
|
|
25
|
-
/**
|
|
26
|
-
* The Region the request was made in, which sim IAM derives
|
|
27
|
-
* `aws:RequestedRegion` from.
|
|
28
|
-
*
|
|
29
|
-
* A simulated service supplies its own Region. A request reaching one
|
|
30
|
-
* through its command handlers therefore carries it, with the caller saying
|
|
31
|
-
* nothing. IAM itself belongs to an Account and has no Region to fall back
|
|
32
|
-
* on. A request arriving without one leaves the key out of the condition
|
|
33
|
-
* context, and a statement conditioned on it matches nothing.
|
|
34
|
-
*/
|
|
35
|
-
readonly region?: AwsRegionName | undefined;
|
|
36
|
-
/**
|
|
37
|
-
* Condition values known by the service handling the simulated request, such
|
|
38
|
-
* as S3 object tags. Sim IAM automatically supplies global condition values
|
|
39
|
-
* that it can derive itself, such as AWS:PrincipalArn.
|
|
40
|
-
*
|
|
41
|
-
* Context-key names are matched case-insensitively by the condition matcher,
|
|
42
|
-
* while string values remain case-sensitive. IAM-derived values take
|
|
43
|
-
* precedence over supplied values for equivalent keys.
|
|
44
|
-
*/
|
|
45
|
-
readonly conditionContext?: Readonly<Record<string, SimIamConditionValue>> | undefined;
|
|
46
|
-
/**
|
|
47
|
-
* Condition values the service can only supply once IAM has resolved the
|
|
48
|
-
* caller, such as the Account a KMS request came from.
|
|
49
|
-
*
|
|
50
|
-
* These are combined with the values supplied directly, and IAM-derived
|
|
51
|
-
* values still take precedence over both.
|
|
52
|
-
*/
|
|
53
|
-
readonly callerConditions?: SimIamCallerConditionSource | undefined;
|
|
54
|
-
/**
|
|
55
|
-
* Simulated request caller.
|
|
56
|
-
*
|
|
57
|
-
* If credentials are supplied, they are authenticated before policy
|
|
58
|
-
* evaluation. If omitted, authorization defaults to the Account root.
|
|
59
|
-
*/
|
|
60
|
-
readonly caller?: SimAwsCaller | undefined;
|
|
61
|
-
/**
|
|
62
|
-
* Resource policies supplied by the service that owns the target resource.
|
|
63
|
-
*
|
|
64
|
-
* Resource policies are not loaded from IAM's managed-policy store. They are
|
|
65
|
-
* supplied by the target service, such as an S3 Bucket policy or other
|
|
66
|
-
* service-level resource policy.
|
|
67
|
-
*/
|
|
68
|
-
readonly resourcePolicies?: readonly SimIamResourcePolicyInput[] | undefined;
|
|
69
|
-
/**
|
|
70
|
-
* Whether the resource's own policy must allow the request.
|
|
71
|
-
*
|
|
72
|
-
* Off by default, which is the ordinary AWS rule: a resource with no policy
|
|
73
|
-
* leaves the decision to the caller's identity policies. A service sets it
|
|
74
|
-
* for a resource whose policy is mandatory and is the root of trust for
|
|
75
|
-
* reaching it, which in AWS means a KMS key policy.
|
|
76
|
-
*/
|
|
77
|
-
readonly requiresResourcePolicyAllow?: boolean | undefined;
|
|
78
|
-
}
|
|
79
13
|
interface SimIamAuthZContextBuilderProperties {
|
|
80
14
|
/**
|
|
81
15
|
* The Account whose IAM is evaluating the request.
|
|
@@ -86,6 +20,10 @@ interface SimIamAuthZContextBuilderProperties {
|
|
|
86
20
|
readonly users: ReadonlyMap<SimIamUsername, SimIamUser>;
|
|
87
21
|
readonly credentialIdentityResolver: SimAwsCredentialIdentityResolver;
|
|
88
22
|
readonly defaultCaller?: SimAwsDefaultCaller | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Where a request naming no caller looks before the default.
|
|
25
|
+
*/
|
|
26
|
+
readonly ambientCaller?: SimAwsAmbientCaller | undefined;
|
|
89
27
|
/**
|
|
90
28
|
* Resolves other Accounts' IAM in the same simulation, for the identity side
|
|
91
29
|
* of a cross-Account request.
|
|
@@ -47,6 +47,7 @@ export class SimIamAuthZContextBuilder {
|
|
|
47
47
|
accountRootPrincipal: makeSimAwsAccountRootPrincipal(properties.accountId),
|
|
48
48
|
credentialIdentityResolver: properties.credentialIdentityResolver,
|
|
49
49
|
defaultCaller: properties.defaultCaller,
|
|
50
|
+
ambientCaller: properties.ambientCaller,
|
|
50
51
|
});
|
|
51
52
|
this.identityPolicyCoordinator = new SimIamAuthZIdentityPolicyCoordinator({
|
|
52
53
|
policies: properties.policies,
|
|
@@ -75,7 +76,7 @@ export class SimIamAuthZContextBuilder {
|
|
|
75
76
|
],
|
|
76
77
|
resourcePolicies: this.resourcePolicySources(input),
|
|
77
78
|
serviceControlPolicies: this.scpSourceBuilder.build(callerContext.caller),
|
|
78
|
-
allowRequirement: this.allowRequirement.resolve(callerAccount, input
|
|
79
|
+
allowRequirement: this.allowRequirement.resolve(callerAccount, input),
|
|
79
80
|
action: input.action,
|
|
80
81
|
resource: input.resource,
|
|
81
82
|
conditionContext: this.conditionContext(input, callerContext.caller),
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { AwsRegionName } from "../../../aws/sim-aws-region.js";
|
|
2
|
+
import type { SimAwsCaller } from "../../../aws/caller/sim-aws-caller.js";
|
|
3
|
+
import type { SimIamConditionValue, SimIamPolicyDocument } from "../../policy/sim-iam-policy.js";
|
|
4
|
+
import type { SimIamCallerConditionSource } from "./sim-iam-caller-condition-source.js";
|
|
5
|
+
import type { SimIamAuthZPolicySourceType } from "./sim-iam-auth-z-context.js";
|
|
6
|
+
export interface SimIamResourcePolicyInput {
|
|
7
|
+
readonly document: SimIamPolicyDocument;
|
|
8
|
+
readonly sourceType?: Extract<SimIamAuthZPolicySourceType, "resource" | "trust">;
|
|
9
|
+
readonly policyName?: string | undefined;
|
|
10
|
+
readonly resourceArn?: string | undefined;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Entry-point input for sim IAM allow/deny authorization.
|
|
14
|
+
*/
|
|
15
|
+
export interface SimIamAuthorizationInput {
|
|
16
|
+
readonly action: string;
|
|
17
|
+
readonly resource: string;
|
|
18
|
+
/**
|
|
19
|
+
* The Region the request was made in, which sim IAM derives
|
|
20
|
+
* `aws:RequestedRegion` from.
|
|
21
|
+
*
|
|
22
|
+
* A simulated service supplies its own Region. A request reaching one
|
|
23
|
+
* through its command handlers therefore carries it, with the caller saying
|
|
24
|
+
* nothing. IAM itself belongs to an Account and has no Region to fall back
|
|
25
|
+
* on. A request arriving without one leaves the key out of the condition
|
|
26
|
+
* context, and a statement conditioned on it matches nothing.
|
|
27
|
+
*/
|
|
28
|
+
readonly region?: AwsRegionName | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Condition values known by the service handling the simulated request, such
|
|
31
|
+
* as S3 object tags. Sim IAM automatically supplies global condition values
|
|
32
|
+
* that it can derive itself, such as AWS:PrincipalArn.
|
|
33
|
+
*
|
|
34
|
+
* Context-key names are matched case-insensitively by the condition matcher,
|
|
35
|
+
* while string values remain case-sensitive. IAM-derived values take
|
|
36
|
+
* precedence over supplied values for equivalent keys.
|
|
37
|
+
*/
|
|
38
|
+
readonly conditionContext?: Readonly<Record<string, SimIamConditionValue>> | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Condition values the service can only supply once IAM has resolved the
|
|
41
|
+
* caller, such as the Account a KMS request came from.
|
|
42
|
+
*
|
|
43
|
+
* These are combined with the values supplied directly, and IAM-derived
|
|
44
|
+
* values still take precedence over both.
|
|
45
|
+
*/
|
|
46
|
+
readonly callerConditions?: SimIamCallerConditionSource | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Simulated request caller.
|
|
49
|
+
*
|
|
50
|
+
* If credentials are supplied, they are authenticated before policy
|
|
51
|
+
* evaluation. If omitted, authorization falls back to the ambient caller of
|
|
52
|
+
* the run-as block the request is inside, then to the simulation's default
|
|
53
|
+
* caller, and then to the Account root.
|
|
54
|
+
*/
|
|
55
|
+
readonly caller?: SimAwsCaller | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* Resource policies supplied by the service that owns the target resource.
|
|
58
|
+
*
|
|
59
|
+
* Resource policies are not loaded from IAM's managed-policy store. They are
|
|
60
|
+
* supplied by the target service, such as an S3 Bucket policy or other
|
|
61
|
+
* service-level resource policy.
|
|
62
|
+
*/
|
|
63
|
+
readonly resourcePolicies?: readonly SimIamResourcePolicyInput[] | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* Whether the resource's own policy must allow the request.
|
|
66
|
+
*
|
|
67
|
+
* Off by default, which is the ordinary AWS rule: a resource with no policy
|
|
68
|
+
* leaves the decision to the caller's identity policies. A service sets it
|
|
69
|
+
* for a resource whose policy is mandatory and is the root of trust for
|
|
70
|
+
* reaching it, which in AWS means a KMS key policy.
|
|
71
|
+
*/
|
|
72
|
+
readonly requiresResourcePolicyAllow?: boolean | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* Whether the service is making this request with the caller's own
|
|
75
|
+
* permissions rather than with its own.
|
|
76
|
+
*
|
|
77
|
+
* Off by default, which is the ordinary AWS rule. Within one Account a
|
|
78
|
+
* resource policy admitting the caller is enough on its own. A service sets
|
|
79
|
+
* this where it reaches another service as the caller. A resource policy
|
|
80
|
+
* that admits whoever the request came from then grants nothing by itself,
|
|
81
|
+
* because what it admits is the service. A resource policy naming the caller
|
|
82
|
+
* still allows the request on its own.
|
|
83
|
+
*
|
|
84
|
+
* No simulated service sets this. Parameter Store is the case it was written
|
|
85
|
+
* for, and the aws/ssm key policy grants its cryptographic actions to a
|
|
86
|
+
* wildcard principal outright.
|
|
87
|
+
*/
|
|
88
|
+
readonly withCallerPermissions?: boolean | undefined;
|
|
89
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -44,9 +44,12 @@ export declare class SimIamPolicyPrincipalMatcher {
|
|
|
44
44
|
/**
|
|
45
45
|
* Compare an AWS principal pattern with the resolved caller.
|
|
46
46
|
*
|
|
47
|
-
* The wildcard matches both authenticated and anonymous requests
|
|
48
|
-
* forms require an ARN-based caller. Account delegation
|
|
49
|
-
* the account ID derived by the caller resolver.
|
|
47
|
+
* The wildcard matches both authenticated and anonymous requests, and names
|
|
48
|
+
* neither. Other AWS forms require an ARN-based caller. Account delegation
|
|
49
|
+
* forms compare against the account ID derived by the caller resolver. An
|
|
50
|
+
* ARN carrying a wildcard of its own admits a set of principals without
|
|
51
|
+
* naming one, so it counts as a match on the same terms as `*`. Real IAM
|
|
52
|
+
* accepts no wildcard inside a Principal ARN at all.
|
|
50
53
|
*
|
|
51
54
|
* A pattern is compared against two ARNs, because an assumed-role session
|
|
52
55
|
* has two. The session ARN is the caller, and the Role behind it is the
|
|
@@ -55,6 +58,11 @@ export declare class SimIamPolicyPrincipalMatcher {
|
|
|
55
58
|
* that is not a session, so one comparison happens in that case.
|
|
56
59
|
*/
|
|
57
60
|
private awsPatternMatches;
|
|
61
|
+
/**
|
|
62
|
+
* The kind of match an ARN principal pattern makes, by whether it names one
|
|
63
|
+
* principal or admits a set of them.
|
|
64
|
+
*/
|
|
65
|
+
private arnPatternMatch;
|
|
58
66
|
/**
|
|
59
67
|
* Whether a principal pattern names one of the caller's ARNs.
|
|
60
68
|
*/
|
|
@@ -38,9 +38,9 @@ export class SimIamPolicyPrincipalMatcher {
|
|
|
38
38
|
return this.valueMatches(statement.principal);
|
|
39
39
|
}
|
|
40
40
|
if (statement.notPrincipal !== undefined) {
|
|
41
|
-
//
|
|
42
|
-
//
|
|
43
|
-
return SimIamPrincipalMatch.
|
|
41
|
+
// Leaving the caller out of the exclusion admits it without naming it,
|
|
42
|
+
// in the way a wildcard principal does.
|
|
43
|
+
return SimIamPrincipalMatch.everyone().when(!this.valueMatches(statement.notPrincipal).matched);
|
|
44
44
|
}
|
|
45
45
|
return SimIamPrincipalMatch.none();
|
|
46
46
|
}
|
|
@@ -78,9 +78,12 @@ export class SimIamPolicyPrincipalMatcher {
|
|
|
78
78
|
/**
|
|
79
79
|
* Compare an AWS principal pattern with the resolved caller.
|
|
80
80
|
*
|
|
81
|
-
* The wildcard matches both authenticated and anonymous requests
|
|
82
|
-
* forms require an ARN-based caller. Account delegation
|
|
83
|
-
* the account ID derived by the caller resolver.
|
|
81
|
+
* The wildcard matches both authenticated and anonymous requests, and names
|
|
82
|
+
* neither. Other AWS forms require an ARN-based caller. Account delegation
|
|
83
|
+
* forms compare against the account ID derived by the caller resolver. An
|
|
84
|
+
* ARN carrying a wildcard of its own admits a set of principals without
|
|
85
|
+
* naming one, so it counts as a match on the same terms as `*`. Real IAM
|
|
86
|
+
* accepts no wildcard inside a Principal ARN at all.
|
|
84
87
|
*
|
|
85
88
|
* A pattern is compared against two ARNs, because an assumed-role session
|
|
86
89
|
* has two. The session ARN is the caller, and the Role behind it is the
|
|
@@ -90,7 +93,7 @@ export class SimIamPolicyPrincipalMatcher {
|
|
|
90
93
|
*/
|
|
91
94
|
awsPatternMatches(pattern) {
|
|
92
95
|
if (pattern === "*") {
|
|
93
|
-
return SimIamPrincipalMatch.
|
|
96
|
+
return SimIamPrincipalMatch.everyone();
|
|
94
97
|
}
|
|
95
98
|
const caller = this.context.caller;
|
|
96
99
|
if (caller.arn === undefined) {
|
|
@@ -100,9 +103,18 @@ export class SimIamPolicyPrincipalMatcher {
|
|
|
100
103
|
if (delegatedAccountId !== undefined) {
|
|
101
104
|
return SimIamPrincipalMatch.accountDelegation().when(caller.accountId === delegatedAccountId);
|
|
102
105
|
}
|
|
103
|
-
return
|
|
106
|
+
return this.arnPatternMatch(pattern).when(this.arnMatches(pattern, caller.arn) ||
|
|
104
107
|
this.arnMatches(pattern, caller.identityPolicyArn));
|
|
105
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* The kind of match an ARN principal pattern makes, by whether it names one
|
|
111
|
+
* principal or admits a set of them.
|
|
112
|
+
*/
|
|
113
|
+
arnPatternMatch(pattern) {
|
|
114
|
+
return pattern.includes("*") || pattern.includes("?")
|
|
115
|
+
? SimIamPrincipalMatch.everyone()
|
|
116
|
+
: SimIamPrincipalMatch.direct();
|
|
117
|
+
}
|
|
106
118
|
/**
|
|
107
119
|
* Whether a principal pattern names one of the caller's ARNs.
|
|
108
120
|
*/
|
|
@@ -1,16 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* How a resource-policy statement came to apply to the caller.
|
|
3
3
|
*
|
|
4
|
-
* AWS treats these
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* AWS treats these apart. A statement naming the caller's own ARN is a grant
|
|
5
|
+
* to that principal. A statement naming the Account, as a bare account ID or a
|
|
6
|
+
* root ARN, delegates the decision to that Account's IAM and grants nothing by
|
|
7
|
+
* itself. A statement whose principal is a wildcard names nobody. It admits
|
|
8
|
+
* whoever the request came from, and a service calling with the caller's own
|
|
9
|
+
* permissions still needs IAM to allow that caller.
|
|
10
|
+
*
|
|
11
|
+
* A KMS key policy is where the difference shows. It is the whole reason the
|
|
12
|
+
* default key policy leaves a key unusable by the Account's principals until
|
|
13
|
+
* IAM allows them, and the reason the aws/ssm key leaves a SecureString
|
|
14
|
+
* unreadable to a caller holding no kms:Decrypt.
|
|
10
15
|
*/
|
|
11
16
|
export declare class SimIamPrincipalMatch {
|
|
17
|
+
/**
|
|
18
|
+
* Whether the statement applies to the caller at all.
|
|
19
|
+
*/
|
|
12
20
|
readonly matched: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Whether the statement applies by way of the caller's Account.
|
|
23
|
+
*/
|
|
13
24
|
readonly isAccountDelegation: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Whether the statement named the caller, rather than admitting it as one
|
|
27
|
+
* of a wider set.
|
|
28
|
+
*/
|
|
29
|
+
readonly namesCaller: boolean;
|
|
14
30
|
private constructor();
|
|
15
31
|
/**
|
|
16
32
|
* The statement does not apply to this caller.
|
|
@@ -24,11 +40,16 @@ export declare class SimIamPrincipalMatch {
|
|
|
24
40
|
* The statement applies by way of the caller's Account.
|
|
25
41
|
*/
|
|
26
42
|
static accountDelegation(): SimIamPrincipalMatch;
|
|
43
|
+
/**
|
|
44
|
+
* The statement applies to whoever made the request, naming nobody.
|
|
45
|
+
*/
|
|
46
|
+
static everyone(): SimIamPrincipalMatch;
|
|
27
47
|
/**
|
|
28
48
|
* The first match among alternatives, since Principal lists are an OR.
|
|
29
49
|
*
|
|
30
|
-
* A
|
|
31
|
-
*
|
|
50
|
+
* A statement naming the caller wins over one that admits it some other
|
|
51
|
+
* way, because naming the caller grants to the caller whatever else the
|
|
52
|
+
* statement says.
|
|
32
53
|
*/
|
|
33
54
|
static first(matches: readonly SimIamPrincipalMatch[]): SimIamPrincipalMatch;
|
|
34
55
|
/**
|
|
@@ -1,47 +1,72 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* How a resource-policy statement came to apply to the caller.
|
|
3
3
|
*
|
|
4
|
-
* AWS treats these
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* AWS treats these apart. A statement naming the caller's own ARN is a grant
|
|
5
|
+
* to that principal. A statement naming the Account, as a bare account ID or a
|
|
6
|
+
* root ARN, delegates the decision to that Account's IAM and grants nothing by
|
|
7
|
+
* itself. A statement whose principal is a wildcard names nobody. It admits
|
|
8
|
+
* whoever the request came from, and a service calling with the caller's own
|
|
9
|
+
* permissions still needs IAM to allow that caller.
|
|
10
|
+
*
|
|
11
|
+
* A KMS key policy is where the difference shows. It is the whole reason the
|
|
12
|
+
* default key policy leaves a key unusable by the Account's principals until
|
|
13
|
+
* IAM allows them, and the reason the aws/ssm key leaves a SecureString
|
|
14
|
+
* unreadable to a caller holding no kms:Decrypt.
|
|
10
15
|
*/
|
|
11
16
|
export class SimIamPrincipalMatch {
|
|
17
|
+
/**
|
|
18
|
+
* Whether the statement applies to the caller at all.
|
|
19
|
+
*/
|
|
12
20
|
matched;
|
|
21
|
+
/**
|
|
22
|
+
* Whether the statement applies by way of the caller's Account.
|
|
23
|
+
*/
|
|
13
24
|
isAccountDelegation;
|
|
14
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Whether the statement named the caller, rather than admitting it as one
|
|
27
|
+
* of a wider set.
|
|
28
|
+
*/
|
|
29
|
+
namesCaller;
|
|
30
|
+
constructor(matched, isAccountDelegation, namesCaller) {
|
|
15
31
|
this.matched = matched;
|
|
16
32
|
this.isAccountDelegation = isAccountDelegation;
|
|
33
|
+
this.namesCaller = namesCaller;
|
|
17
34
|
}
|
|
18
35
|
/**
|
|
19
36
|
* The statement does not apply to this caller.
|
|
20
37
|
*/
|
|
21
38
|
static none() {
|
|
22
|
-
return new SimIamPrincipalMatch(false, false);
|
|
39
|
+
return new SimIamPrincipalMatch(false, false, false);
|
|
23
40
|
}
|
|
24
41
|
/**
|
|
25
42
|
* The statement names this caller, or applies without naming an Account.
|
|
26
43
|
*/
|
|
27
44
|
static direct() {
|
|
28
|
-
return new SimIamPrincipalMatch(true, false);
|
|
45
|
+
return new SimIamPrincipalMatch(true, false, true);
|
|
29
46
|
}
|
|
30
47
|
/**
|
|
31
48
|
* The statement applies by way of the caller's Account.
|
|
32
49
|
*/
|
|
33
50
|
static accountDelegation() {
|
|
34
|
-
return new SimIamPrincipalMatch(true, true);
|
|
51
|
+
return new SimIamPrincipalMatch(true, true, false);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The statement applies to whoever made the request, naming nobody.
|
|
55
|
+
*/
|
|
56
|
+
static everyone() {
|
|
57
|
+
return new SimIamPrincipalMatch(true, false, false);
|
|
35
58
|
}
|
|
36
59
|
/**
|
|
37
60
|
* The first match among alternatives, since Principal lists are an OR.
|
|
38
61
|
*
|
|
39
|
-
* A
|
|
40
|
-
*
|
|
62
|
+
* A statement naming the caller wins over one that admits it some other
|
|
63
|
+
* way, because naming the caller grants to the caller whatever else the
|
|
64
|
+
* statement says.
|
|
41
65
|
*/
|
|
42
66
|
static first(matches) {
|
|
43
67
|
const matched = matches.filter((result) => result.matched);
|
|
44
|
-
return (matched.find((result) =>
|
|
68
|
+
return (matched.find((result) => result.namesCaller) ??
|
|
69
|
+
matched.find((result) => !result.isAccountDelegation) ??
|
|
45
70
|
matched[0] ??
|
|
46
71
|
this.none());
|
|
47
72
|
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { SimAwsCaller, SimAwsPrincipal } from "../../../aws/caller/sim-aws-caller.js";
|
|
2
|
+
import type { SimIamInterServiceAuthZ } from "../sim-iam-inter-service-auth-z.js";
|
|
3
|
+
/**
|
|
4
|
+
* What a service needs to report a Role the caller may not pass.
|
|
5
|
+
*/
|
|
6
|
+
export interface SimIamPassRoleDenial {
|
|
7
|
+
readonly principal: SimAwsPrincipal;
|
|
8
|
+
readonly roleArn: string;
|
|
9
|
+
/**
|
|
10
|
+
* What else the message should say about why the request was denied, in the
|
|
11
|
+
* sense SimIamAccessDenied uses it.
|
|
12
|
+
*/
|
|
13
|
+
readonly reason?: string | undefined;
|
|
14
|
+
}
|
|
15
|
+
interface SimIamPassRoleAuthorizerProperties {
|
|
16
|
+
readonly iam: SimIamInterServiceAuthZ;
|
|
17
|
+
/**
|
|
18
|
+
* The service principal the Role is being handed to, such as
|
|
19
|
+
* `lambda.amazonaws.com`. This is what `iam:PassedToService` carries.
|
|
20
|
+
*/
|
|
21
|
+
readonly passedToService: string;
|
|
22
|
+
/**
|
|
23
|
+
* The error a refusal is reported as.
|
|
24
|
+
*
|
|
25
|
+
* Defaults to the shared IAM AccessDenied. A service reporting its own
|
|
26
|
+
* denials as its own error type supplies one, so a caller catching that type
|
|
27
|
+
* catches a refused Role along with everything else the service refused
|
|
28
|
+
* them.
|
|
29
|
+
*/
|
|
30
|
+
readonly denied?: (denial: SimIamPassRoleDenial) => Error;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Authorizes handing a Role to a simulated service.
|
|
34
|
+
*
|
|
35
|
+
* A service given a Role to keep uses it under its own identity later, so
|
|
36
|
+
* being allowed to create the thing settles only half of the request. AWS asks
|
|
37
|
+
* separately whether the caller may hand that Role over, and the resource of
|
|
38
|
+
* that question is the Role. A scoped deployment role refused `iam:PassRole` is
|
|
39
|
+
* one of the commoner ways a real deployment stops.
|
|
40
|
+
*
|
|
41
|
+
* The Role need not exist. Real IAM decides a request before the service
|
|
42
|
+
* handles it, so a caller with no permission to pass a Role is refused whether
|
|
43
|
+
* or not the ARN names one.
|
|
44
|
+
*/
|
|
45
|
+
export declare class SimIamPassRoleAuthorizer {
|
|
46
|
+
private readonly iam;
|
|
47
|
+
private readonly passedToService;
|
|
48
|
+
private readonly denied;
|
|
49
|
+
constructor(properties: SimIamPassRoleAuthorizerProperties);
|
|
50
|
+
/**
|
|
51
|
+
* Ensure the caller may hand this Role to the service.
|
|
52
|
+
*
|
|
53
|
+
* A request naming no Role passes nothing and is left alone. That covers an
|
|
54
|
+
* optional Role, such as the one an update request omits to keep the Role
|
|
55
|
+
* already in place, and saves each call site repeating the check.
|
|
56
|
+
*/
|
|
57
|
+
authorize(roleArn: string | undefined, caller?: SimAwsCaller): void;
|
|
58
|
+
/**
|
|
59
|
+
* Ensure the caller may hand every one of these Roles to the service.
|
|
60
|
+
*
|
|
61
|
+
* A Firehose delivery stream carrying a Role for its destination beside one
|
|
62
|
+
* for its source is what this is for. Each Role is its own question, and the
|
|
63
|
+
* first refusal is the one reported.
|
|
64
|
+
*/
|
|
65
|
+
authorizeAll(roleArns: readonly (string | undefined)[], caller?: SimAwsCaller): void;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The message a service reports a refused Role with, in AWS's wording.
|
|
69
|
+
*
|
|
70
|
+
* A service reporting denials as its own error type builds its message from
|
|
71
|
+
* this, so a refused Role reads the same however it is reported.
|
|
72
|
+
*/
|
|
73
|
+
export declare function simIamPassRoleDenialMessage(denial: SimIamPassRoleDenial): string;
|
|
74
|
+
export {};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { SimIamCallerIdentifier } from "../../error/sim-iam-caller-identifier.js";
|
|
2
|
+
import { SimIamAccessDenied } from "../../error/sim-iam.error.js";
|
|
3
|
+
/**
|
|
4
|
+
* The IAM action a caller handing a Role to a service is authorized for.
|
|
5
|
+
*/
|
|
6
|
+
const passRoleAction = "iam:PassRole";
|
|
7
|
+
/**
|
|
8
|
+
* The condition key naming the service the Role is being handed to.
|
|
9
|
+
*/
|
|
10
|
+
const passedToServiceKey = "iam:PassedToService";
|
|
11
|
+
/**
|
|
12
|
+
* Authorizes handing a Role to a simulated service.
|
|
13
|
+
*
|
|
14
|
+
* A service given a Role to keep uses it under its own identity later, so
|
|
15
|
+
* being allowed to create the thing settles only half of the request. AWS asks
|
|
16
|
+
* separately whether the caller may hand that Role over, and the resource of
|
|
17
|
+
* that question is the Role. A scoped deployment role refused `iam:PassRole` is
|
|
18
|
+
* one of the commoner ways a real deployment stops.
|
|
19
|
+
*
|
|
20
|
+
* The Role need not exist. Real IAM decides a request before the service
|
|
21
|
+
* handles it, so a caller with no permission to pass a Role is refused whether
|
|
22
|
+
* or not the ARN names one.
|
|
23
|
+
*/
|
|
24
|
+
export class SimIamPassRoleAuthorizer {
|
|
25
|
+
iam;
|
|
26
|
+
passedToService;
|
|
27
|
+
denied;
|
|
28
|
+
constructor(properties) {
|
|
29
|
+
this.iam = properties.iam;
|
|
30
|
+
this.passedToService = properties.passedToService;
|
|
31
|
+
this.denied = properties.denied ?? accessDenied;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Ensure the caller may hand this Role to the service.
|
|
35
|
+
*
|
|
36
|
+
* A request naming no Role passes nothing and is left alone. That covers an
|
|
37
|
+
* optional Role, such as the one an update request omits to keep the Role
|
|
38
|
+
* already in place, and saves each call site repeating the check.
|
|
39
|
+
*/
|
|
40
|
+
authorize(roleArn, caller) {
|
|
41
|
+
if (roleArn === undefined) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const decision = this.iam.authorize({
|
|
45
|
+
action: passRoleAction,
|
|
46
|
+
resource: roleArn,
|
|
47
|
+
conditionContext: { [passedToServiceKey]: this.passedToService },
|
|
48
|
+
caller,
|
|
49
|
+
});
|
|
50
|
+
if (decision.isDenied) {
|
|
51
|
+
throw this.denied({
|
|
52
|
+
principal: decision.caller.principal,
|
|
53
|
+
roleArn,
|
|
54
|
+
reason: decision.denialReason,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Ensure the caller may hand every one of these Roles to the service.
|
|
60
|
+
*
|
|
61
|
+
* A Firehose delivery stream carrying a Role for its destination beside one
|
|
62
|
+
* for its source is what this is for. Each Role is its own question, and the
|
|
63
|
+
* first refusal is the one reported.
|
|
64
|
+
*/
|
|
65
|
+
authorizeAll(roleArns, caller) {
|
|
66
|
+
for (const roleArn of roleArns) {
|
|
67
|
+
this.authorize(roleArn, caller);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Report a refused Role as the shared IAM AccessDenied.
|
|
73
|
+
*/
|
|
74
|
+
function accessDenied(denial) {
|
|
75
|
+
return new SimIamAccessDenied({
|
|
76
|
+
principal: denial.principal,
|
|
77
|
+
reason: denial.reason,
|
|
78
|
+
action: passRoleAction,
|
|
79
|
+
resource: denial.roleArn,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* The message a service reports a refused Role with, in AWS's wording.
|
|
84
|
+
*
|
|
85
|
+
* A service reporting denials as its own error type builds its message from
|
|
86
|
+
* this, so a refused Role reads the same however it is reported.
|
|
87
|
+
*/
|
|
88
|
+
export function simIamPassRoleDenialMessage(denial) {
|
|
89
|
+
const identifier = new SimIamCallerIdentifier().format(denial.principal);
|
|
90
|
+
return (`User: ${identifier} is not authorized to perform: ${passRoleAction} on ` +
|
|
91
|
+
`resource: ${denial.roleArn}`);
|
|
92
|
+
}
|