@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
|
@@ -2,11 +2,12 @@ import type { SimAwsAccountId } from "../../aws/sim-aws-account.js";
|
|
|
2
2
|
import type { SimArn } from "../../aws/arn.js";
|
|
3
3
|
import type { SimAwsCredentialIdentityResolver } from "../../aws/caller/sim-aws-caller-resolver.js";
|
|
4
4
|
import type { SimAwsDefaultCaller, SimAwsPrincipal } from "../../aws/caller/sim-aws-caller.js";
|
|
5
|
+
import type { SimAwsAmbientCaller } from "../../aws/caller/sim-aws-ambient-caller.js";
|
|
5
6
|
import type { SimIamManagedPolicy } from "../policy/sim-iam-policy.js";
|
|
6
7
|
import type { SimIamRole, SimIamRoleName } from "../role/sim-iam-role.js";
|
|
7
8
|
import type { SimIamUser, SimIamUsername } from "../user/sim-iam-user.js";
|
|
8
9
|
import type { SimIamAccountResolver } from "../registry/sim-iam-account-resolver.js";
|
|
9
|
-
import type { SimIamAuthorizationInput } from "./context/sim-iam-auth-z-
|
|
10
|
+
import type { SimIamAuthorizationInput } from "./context/sim-iam-auth-z-input.js";
|
|
10
11
|
import type { SimIamAuthZPolicySource } from "./context/sim-iam-auth-z-context.js";
|
|
11
12
|
import type { SimIamAccountIdentityPolicies } from "./identity/sim-iam-account-identity-policies.js";
|
|
12
13
|
import type { SimIamPolicyDecision } from "./sim-iam-decision.js";
|
|
@@ -23,6 +24,13 @@ interface SimIamAccountAuthZProperties {
|
|
|
23
24
|
* Left out, such a request is decided as this Account's root principal.
|
|
24
25
|
*/
|
|
25
26
|
readonly defaultCaller?: SimAwsDefaultCaller | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Where a request naming no caller looks before the default.
|
|
29
|
+
*
|
|
30
|
+
* A run-as block says who is making the requests inside it, which outranks
|
|
31
|
+
* what the simulation holds for its unattributed requests generally.
|
|
32
|
+
*/
|
|
33
|
+
readonly ambientCaller?: SimAwsAmbientCaller | undefined;
|
|
26
34
|
/**
|
|
27
35
|
* Resolves other Accounts' IAM in the same simulation.
|
|
28
36
|
*
|
|
@@ -43,10 +51,11 @@ interface SimIamAccountAuthZProperties {
|
|
|
43
51
|
* Evaluates IAM authorization attempts against one simulated Account's IAM
|
|
44
52
|
* state.
|
|
45
53
|
*
|
|
46
|
-
* If the caller is omitted, authorization defaults to the
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* evaluated without
|
|
54
|
+
* If the caller is omitted, authorization defaults to the ambient caller of the
|
|
55
|
+
* run-as block the request is inside, then to the simulation's default caller,
|
|
56
|
+
* and to the root principal of the owning sim Account where there is neither.
|
|
57
|
+
* An explicit anonymous caller suppresses all three and is evaluated without
|
|
58
|
+
* identity policies.
|
|
50
59
|
*/
|
|
51
60
|
export declare class SimIamAccountAuthZ implements SimIamAccountIdentityPolicies {
|
|
52
61
|
private readonly properties;
|
|
@@ -3,10 +3,11 @@ import { SimIamAuthorizer } from "./sim-iam-authorizer.js";
|
|
|
3
3
|
* Evaluates IAM authorization attempts against one simulated Account's IAM
|
|
4
4
|
* state.
|
|
5
5
|
*
|
|
6
|
-
* If the caller is omitted, authorization defaults to the
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* evaluated without
|
|
6
|
+
* If the caller is omitted, authorization defaults to the ambient caller of the
|
|
7
|
+
* run-as block the request is inside, then to the simulation's default caller,
|
|
8
|
+
* and to the root principal of the owning sim Account where there is neither.
|
|
9
|
+
* An explicit anonymous caller suppresses all three and is evaluated without
|
|
10
|
+
* identity policies.
|
|
10
11
|
*/
|
|
11
12
|
export class SimIamAccountAuthZ {
|
|
12
13
|
properties;
|
|
@@ -40,6 +41,7 @@ export class SimIamAccountAuthZ {
|
|
|
40
41
|
users: this.properties.users,
|
|
41
42
|
credentialIdentityResolver: this.properties.credentialIdentityResolver,
|
|
42
43
|
defaultCaller: this.properties.defaultCaller,
|
|
44
|
+
ambientCaller: this.properties.ambientCaller,
|
|
43
45
|
iamResolver: this.properties.iamResolver,
|
|
44
46
|
scpResolver: this.properties.scpResolver,
|
|
45
47
|
});
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { SimArn } from "../../aws/arn.js";
|
|
2
2
|
import type { SimIamPolicy } from "../policy/sim-iam-policy.js";
|
|
3
3
|
import type { SimIamRole, SimIamRoleName } from "../role/sim-iam-role.js";
|
|
4
|
-
import {
|
|
4
|
+
import type { SimIamAuthorizationInput } from "./context/sim-iam-auth-z-input.js";
|
|
5
5
|
import { SimIamPolicyDecision } from "./sim-iam-decision.js";
|
|
6
6
|
import type { SimAwsDefaultCaller, SimAwsPrincipal } from "../../aws/caller/sim-aws-caller.js";
|
|
7
7
|
import type { SimIamUser, SimIamUsername } from "../user/sim-iam-user.js";
|
|
8
8
|
import type { SimAwsCredentialIdentityResolver } from "../../aws/caller/sim-aws-caller-resolver.js";
|
|
9
|
+
import type { SimAwsAmbientCaller } from "../../aws/caller/sim-aws-ambient-caller.js";
|
|
9
10
|
import type { SimAwsAccountId } from "../../aws/sim-aws-account.js";
|
|
10
11
|
import type { SimIamAccountResolver } from "../registry/sim-iam-account-resolver.js";
|
|
11
12
|
import type { SimIamAuthZPolicySource } from "./context/sim-iam-auth-z-context.js";
|
|
@@ -18,6 +19,7 @@ interface SimIamAuthorizerProperties {
|
|
|
18
19
|
readonly users: ReadonlyMap<SimIamUsername, SimIamUser>;
|
|
19
20
|
readonly credentialIdentityResolver: SimAwsCredentialIdentityResolver;
|
|
20
21
|
readonly defaultCaller?: SimAwsDefaultCaller | undefined;
|
|
22
|
+
readonly ambientCaller?: SimAwsAmbientCaller | undefined;
|
|
21
23
|
readonly iamResolver?: SimIamAccountResolver | undefined;
|
|
22
24
|
readonly scpResolver?: SimIamServiceControlPolicyResolver | undefined;
|
|
23
25
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SimIamAuthZContextBuilder
|
|
1
|
+
import { SimIamAuthZContextBuilder } from "./context/sim-iam-auth-z-context-builder.js";
|
|
2
2
|
import { SimIamPolicyDecision } from "./sim-iam-decision.js";
|
|
3
3
|
/**
|
|
4
4
|
* Facade for simulated IAM authorization decisions.
|
|
@@ -18,6 +18,7 @@ export class SimIamAuthorizer {
|
|
|
18
18
|
users: properties.users,
|
|
19
19
|
credentialIdentityResolver: properties.credentialIdentityResolver,
|
|
20
20
|
defaultCaller: properties.defaultCaller,
|
|
21
|
+
ambientCaller: properties.ambientCaller,
|
|
21
22
|
iamResolver: properties.iamResolver,
|
|
22
23
|
scpResolver: properties.scpResolver,
|
|
23
24
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SimIamAuthorizationInput } from "./context/sim-iam-auth-z-
|
|
1
|
+
import type { SimIamAuthorizationInput } from "./context/sim-iam-auth-z-input.js";
|
|
2
2
|
import type { SimAwsResolvedCaller } from "../../aws/caller/sim-aws-caller-resolver.js";
|
|
3
3
|
/**
|
|
4
4
|
* The part of an IAM authorization decision needed by service integrations.
|
|
@@ -1,12 +1,48 @@
|
|
|
1
|
+
import { BoundedMemo } from "../../../util/memo/bounded-memo.js";
|
|
2
|
+
/**
|
|
3
|
+
* How many compiled patterns to keep, for each of the two case sensitivities.
|
|
4
|
+
*
|
|
5
|
+
* One realistic organization policy set produces fewer than a hundred distinct
|
|
6
|
+
* patterns, and every request evaluates the same ones again. A few thousand
|
|
7
|
+
* leaves room for many documents attached at once, and holds a few thousand
|
|
8
|
+
* small regular expressions at worst.
|
|
9
|
+
*/
|
|
10
|
+
const compiledPatternLimit = 2000;
|
|
11
|
+
/*
|
|
12
|
+
* Wildcard patterns already turned into regular expressions, held in a store
|
|
13
|
+
* per case sensitivity so that a lookup needs no key built for it.
|
|
14
|
+
*
|
|
15
|
+
* A pattern's text and its case sensitivity decide the whole of what is
|
|
16
|
+
* compiled. An entry made while evaluating one simulation's policies is the
|
|
17
|
+
* entry another simulation would have made for itself. A compiled expression
|
|
18
|
+
* also carries nothing from one use to the next, because the flags below leave
|
|
19
|
+
* out "g" and "y", and `test` keeps a position only under those. These stores
|
|
20
|
+
* therefore last as long as the process does, and a `SimAws` that goes out of
|
|
21
|
+
* scope leaves them behind for the next one.
|
|
22
|
+
*/
|
|
23
|
+
const caseSensitivePatterns = new BoundedMemo(compiledPatternLimit);
|
|
24
|
+
const caseInsensitivePatterns = new BoundedMemo(compiledPatternLimit);
|
|
1
25
|
/**
|
|
2
26
|
* Match an IAM-style wildcard pattern.
|
|
3
27
|
*
|
|
4
28
|
* "*" means zero or more characters and "?" means exactly one character.
|
|
5
29
|
*/
|
|
6
30
|
export function simIamWildcardMatch(pattern, value, options) {
|
|
7
|
-
return
|
|
31
|
+
return patternRegExp(pattern, options.caseSensitive).test(value);
|
|
8
32
|
}
|
|
9
|
-
|
|
33
|
+
/**
|
|
34
|
+
* The regular expression a pattern compiles to, compiling it the first time it
|
|
35
|
+
* is asked for and reusing it afterwards.
|
|
36
|
+
*/
|
|
37
|
+
function patternRegExp(pattern, caseSensitive) {
|
|
38
|
+
return caseSensitive
|
|
39
|
+
? caseSensitivePatterns.getOrCreate(pattern, () => compilePattern(pattern, "u"))
|
|
40
|
+
: caseInsensitivePatterns.getOrCreate(pattern, () => compilePattern(pattern, "iu"));
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Turn a wildcard pattern into the regular expression that matches it.
|
|
44
|
+
*/
|
|
45
|
+
function compilePattern(pattern, flags) {
|
|
10
46
|
const regexPattern = pattern
|
|
11
47
|
.replaceAll(/[\\^$.*+?()[\]{}|]/gu, String.raw `\$&`)
|
|
12
48
|
.replaceAll(String.raw `\*`, ".*")
|
|
@@ -17,6 +53,5 @@ function wildcardMatch(pattern, value, options) {
|
|
|
17
53
|
* other regex characters are escaped above.
|
|
18
54
|
*/
|
|
19
55
|
// oxlint-disable-next-line security/detect-non-literal-regexp
|
|
20
|
-
|
|
21
|
-
return regExp.test(value);
|
|
56
|
+
return new RegExp(`^${regexPattern}$`, flags);
|
|
22
57
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SimCfnIamManagedPolicyAttacher } from "./sim-cfn-iam-managed-policy-attacher.js";
|
|
2
|
+
import { simCfnIamPolicyGeneratedName } from "../name/sim-cfn-iam-generated-name.js";
|
|
2
3
|
import { assertDefined } from "../../../../util/type-guard/defined.js";
|
|
3
4
|
/**
|
|
4
5
|
* Creates simulated IAM Managed Policies from CloudFormation Resources.
|
|
@@ -35,7 +36,7 @@ export class SimCfnIamManagedPolicyCreator {
|
|
|
35
36
|
managedPolicyName(resource, properties) {
|
|
36
37
|
const managedPolicyName = properties["ManagedPolicyName"];
|
|
37
38
|
if (managedPolicyName === undefined) {
|
|
38
|
-
return resource
|
|
39
|
+
return simCfnIamPolicyGeneratedName(resource);
|
|
39
40
|
}
|
|
40
41
|
if (typeof managedPolicyName !== "string") {
|
|
41
42
|
throw new TypeError(`Invalid AWS::IAM::ManagedPolicy ${resource.logicalId}: ManagedPolicyName must be a string`);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { SimCfnResource } from "../../../cloudformation/resource/sim-cfn-resource.js";
|
|
2
|
+
/**
|
|
3
|
+
* The name CloudFormation gives a Role or a User whose template does not name
|
|
4
|
+
* it.
|
|
5
|
+
*
|
|
6
|
+
* Sixty-four characters is short for a name made of a stack name and a logical
|
|
7
|
+
* ID, so `SimCfnGeneratedResourceName` usually has to trim one. The case is
|
|
8
|
+
* left alone, since IAM keeps a name as it was given, and every character a
|
|
9
|
+
* stack name or a logical ID is made of is one an IAM name allows.
|
|
10
|
+
*/
|
|
11
|
+
export declare function simCfnIamPrincipalGeneratedName(resource: SimCfnResource): string;
|
|
12
|
+
/**
|
|
13
|
+
* The name CloudFormation gives a Managed Policy whose template does not name
|
|
14
|
+
* it, under the same rules as a Role's but with twice the room.
|
|
15
|
+
*/
|
|
16
|
+
export declare function simCfnIamPolicyGeneratedName(resource: SimCfnResource): string;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { SimCfnGeneratedResourceName } from "../../../cloudformation/resource/name/sim-cfn-generated-resource-name.js";
|
|
2
|
+
/**
|
|
3
|
+
* The longest name IAM accepts for a Role or a User. Both take the same
|
|
4
|
+
* length.
|
|
5
|
+
*
|
|
6
|
+
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html
|
|
7
|
+
*/
|
|
8
|
+
const maximumPrincipalNameLength = 64;
|
|
9
|
+
/** The longest name IAM accepts for a Policy, twice what a Role takes. */
|
|
10
|
+
const maximumPolicyNameLength = 128;
|
|
11
|
+
/**
|
|
12
|
+
* The name CloudFormation gives a Role or a User whose template does not name
|
|
13
|
+
* it.
|
|
14
|
+
*
|
|
15
|
+
* Sixty-four characters is short for a name made of a stack name and a logical
|
|
16
|
+
* ID, so `SimCfnGeneratedResourceName` usually has to trim one. The case is
|
|
17
|
+
* left alone, since IAM keeps a name as it was given, and every character a
|
|
18
|
+
* stack name or a logical ID is made of is one an IAM name allows.
|
|
19
|
+
*/
|
|
20
|
+
export function simCfnIamPrincipalGeneratedName(resource) {
|
|
21
|
+
return generatedName(resource, maximumPrincipalNameLength);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The name CloudFormation gives a Managed Policy whose template does not name
|
|
25
|
+
* it, under the same rules as a Role's but with twice the room.
|
|
26
|
+
*/
|
|
27
|
+
export function simCfnIamPolicyGeneratedName(resource) {
|
|
28
|
+
return generatedName(resource, maximumPolicyNameLength);
|
|
29
|
+
}
|
|
30
|
+
function generatedName(resource, maximumLength) {
|
|
31
|
+
return new SimCfnGeneratedResourceName({
|
|
32
|
+
stackName: resource.stackName,
|
|
33
|
+
logicalId: resource.logicalId,
|
|
34
|
+
maximumLength,
|
|
35
|
+
}).value;
|
|
36
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { simCfnIamPrincipalGeneratedName } from "../name/sim-cfn-iam-generated-name.js";
|
|
2
|
+
import { simCfnIamOptionalString } from "../sim-cfn-iam-optional-string.js";
|
|
1
3
|
import { SimCfnIamPoliciesParser, } from "../sim-cfn-iam-policies-parser.js";
|
|
2
4
|
/**
|
|
3
5
|
* Parses and validates AWS::IAM::Role CloudFormation properties into the shape
|
|
@@ -16,7 +18,7 @@ export class SimCfnIamRolePropertiesParser {
|
|
|
16
18
|
parse(resource, properties) {
|
|
17
19
|
return {
|
|
18
20
|
roleName: this.optionalString(resource, properties["RoleName"], "RoleName") ??
|
|
19
|
-
resource
|
|
21
|
+
simCfnIamPrincipalGeneratedName(resource),
|
|
20
22
|
path: this.optionalString(resource, properties["Path"], "Path"),
|
|
21
23
|
description: this.optionalString(resource, properties["Description"], "Description"),
|
|
22
24
|
assumeRolePolicyDocument: this.jsonObject(resource, properties["AssumeRolePolicyDocument"], "AssumeRolePolicyDocument"),
|
|
@@ -25,13 +27,12 @@ export class SimCfnIamRolePropertiesParser {
|
|
|
25
27
|
};
|
|
26
28
|
}
|
|
27
29
|
optionalString(resource, value, label) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
return value;
|
|
30
|
+
return simCfnIamOptionalString({
|
|
31
|
+
resourceType: "AWS::IAM::Role",
|
|
32
|
+
resource,
|
|
33
|
+
value,
|
|
34
|
+
label,
|
|
35
|
+
});
|
|
35
36
|
}
|
|
36
37
|
jsonObject(resource, value, label) {
|
|
37
38
|
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SimCfnResource } from "../../cloudformation/resource/sim-cfn-resource.js";
|
|
2
|
+
import type { SimCfnTemplateValueRecord } from "../../cloudformation/template/value/sim-cfn-template-value.js";
|
|
3
|
+
interface SimCfnIamOptionalStringProperties {
|
|
4
|
+
readonly resourceType: string;
|
|
5
|
+
readonly resource: SimCfnResource;
|
|
6
|
+
readonly value: SimCfnTemplateValueRecord[string] | undefined;
|
|
7
|
+
readonly label: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Read a string property an IAM Resource may leave out.
|
|
11
|
+
*
|
|
12
|
+
* A Role and a User read most of their own properties this way, and both
|
|
13
|
+
* refuse a non-string the same way, naming the Resource type the template
|
|
14
|
+
* declared.
|
|
15
|
+
*/
|
|
16
|
+
export declare function simCfnIamOptionalString(properties: SimCfnIamOptionalStringProperties): string | undefined;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read a string property an IAM Resource may leave out.
|
|
3
|
+
*
|
|
4
|
+
* A Role and a User read most of their own properties this way, and both
|
|
5
|
+
* refuse a non-string the same way, naming the Resource type the template
|
|
6
|
+
* declared.
|
|
7
|
+
*/
|
|
8
|
+
export function simCfnIamOptionalString(properties) {
|
|
9
|
+
const { resourceType, resource, value, label } = properties;
|
|
10
|
+
if (value === undefined) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
if (typeof value !== "string") {
|
|
14
|
+
throw new TypeError(`Invalid ${resourceType} ${resource.logicalId}: ${label} must be a string`);
|
|
15
|
+
}
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { simCfnIamPrincipalGeneratedName } from "../name/sim-cfn-iam-generated-name.js";
|
|
2
|
+
import { simCfnIamOptionalString } from "../sim-cfn-iam-optional-string.js";
|
|
1
3
|
import { SimCfnIamPoliciesParser, } from "../sim-cfn-iam-policies-parser.js";
|
|
2
4
|
const resourceType = "AWS::IAM::User";
|
|
3
5
|
/**
|
|
@@ -18,7 +20,7 @@ export class SimCfnIamUserPropertiesParser {
|
|
|
18
20
|
this.rejectGroups(resource, properties);
|
|
19
21
|
return {
|
|
20
22
|
userName: this.optionalString(resource, properties["UserName"], "UserName") ??
|
|
21
|
-
resource
|
|
23
|
+
simCfnIamPrincipalGeneratedName(resource),
|
|
22
24
|
path: this.optionalString(resource, properties["Path"], "Path"),
|
|
23
25
|
inlinePolicies: this.policiesParser.inlinePolicies(resource, properties),
|
|
24
26
|
managedPolicyArns: this.policiesParser.managedPolicyArns(resource, properties),
|
|
@@ -68,12 +70,6 @@ export class SimCfnIamUserPropertiesParser {
|
|
|
68
70
|
};
|
|
69
71
|
}
|
|
70
72
|
optionalString(resource, value, label) {
|
|
71
|
-
|
|
72
|
-
return undefined;
|
|
73
|
-
}
|
|
74
|
-
if (typeof value !== "string") {
|
|
75
|
-
throw new TypeError(`Invalid ${resourceType} ${resource.logicalId}: ${label} must be a string`);
|
|
76
|
-
}
|
|
77
|
-
return value;
|
|
73
|
+
return simCfnIamOptionalString({ resourceType, resource, value, label });
|
|
78
74
|
}
|
|
79
75
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { makeSimPolicyArn } from "../../../policy/sim-iam-policy-arn.js";
|
|
2
2
|
import { normalisePolicyPath } from "../../../policy/sim-iam-policy-path.js";
|
|
3
3
|
import { SimIamPolicyDocumentValidator } from "../../../validate/sim-iam-policy-document-validator.js";
|
|
4
|
+
import { assertSimIamManagedPolicyWithinSizeLimit } from "../../../validate/size/sim-iam-policy-document-size.js";
|
|
4
5
|
/**
|
|
5
6
|
* Validates CreatePolicy command input and resolves it into the policy's
|
|
6
7
|
* identity (name, normalised path, and ARN).
|
|
@@ -26,6 +27,7 @@ export class CreatePolicyInputResolver {
|
|
|
26
27
|
if (policyName === undefined || policyName.length === 0) {
|
|
27
28
|
throw new Error("PolicyName is required");
|
|
28
29
|
}
|
|
30
|
+
assertSimIamManagedPolicyWithinSizeLimit(command.input.PolicyDocument);
|
|
29
31
|
this.policyDocValidator.validateOptional(command.input.PolicyDocument, {
|
|
30
32
|
attachedTo: "Policy",
|
|
31
33
|
name: policyName,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BackgroundTasks, } from "../../../../../util/background/background.js";
|
|
2
2
|
import { SimIamNoSuchEntity } from "../../../error/sim-iam.error.js";
|
|
3
3
|
import { SimIamPolicyDocumentValidator } from "../../../validate/sim-iam-policy-document-validator.js";
|
|
4
|
+
import { assertSimIamInlinePolicyWithinSizeLimit } from "../../../validate/size/sim-iam-policy-document-size.js";
|
|
4
5
|
/**
|
|
5
6
|
* IAM PutRolePolicyCommand handler.
|
|
6
7
|
*
|
|
@@ -33,6 +34,10 @@ export class PutRolePolicyCommandHandler {
|
|
|
33
34
|
throw new Error("PolicyName is required");
|
|
34
35
|
}
|
|
35
36
|
const policyDocument = command.input.PolicyDocument;
|
|
37
|
+
assertSimIamInlinePolicyWithinSizeLimit(policyDocument, {
|
|
38
|
+
kind: "role",
|
|
39
|
+
name: roleName,
|
|
40
|
+
});
|
|
36
41
|
this.policyDocValidator.validateRequired(policyDocument, {
|
|
37
42
|
attachedTo: "Role",
|
|
38
43
|
name: roleName,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BackgroundTasks, } from "../../../../../util/background/background.js";
|
|
2
2
|
import { SimIamNoSuchEntity } from "../../../error/sim-iam.error.js";
|
|
3
3
|
import { SimIamPolicyDocumentValidator } from "../../../validate/sim-iam-policy-document-validator.js";
|
|
4
|
+
import { assertSimIamInlinePolicyWithinSizeLimit } from "../../../validate/size/sim-iam-policy-document-size.js";
|
|
4
5
|
import { assertDefined } from "../../../../../util/type-guard/defined.js";
|
|
5
6
|
/**
|
|
6
7
|
* IAM PutUserPolicyCommand handler.
|
|
@@ -29,6 +30,10 @@ export class PutUserPolicyCommandHandler {
|
|
|
29
30
|
const policyName = command.input.PolicyName;
|
|
30
31
|
assertDefined(policyName, "PutUserPolicyCommand.input.PolicyName");
|
|
31
32
|
const policyDocument = command.input.PolicyDocument;
|
|
33
|
+
assertSimIamInlinePolicyWithinSizeLimit(policyDocument, {
|
|
34
|
+
kind: "user",
|
|
35
|
+
name: username,
|
|
36
|
+
});
|
|
32
37
|
this.policyDocValidator.validateRequired(policyDocument, {
|
|
33
38
|
attachedTo: "User",
|
|
34
39
|
name: username,
|
|
@@ -4,6 +4,7 @@ import { SimIamEntityAlreadyExists } from "../../../error/sim-iam.error.js";
|
|
|
4
4
|
import { normaliseRolePath } from "../../../role/sim-iam-role-path.js";
|
|
5
5
|
import { makeSimRoleArn } from "../../../role/arn/sim-iam-role-arn.js";
|
|
6
6
|
import { SimIamTrustPolicyDocumentValidator } from "../../../validate/trust/sim-iam-trust-policy-document-validator.js";
|
|
7
|
+
import { assertSimIamTrustPolicyWithinSizeLimit } from "../../../validate/size/sim-iam-policy-document-size.js";
|
|
7
8
|
/**
|
|
8
9
|
* IAM CreateRoleCommand handler.
|
|
9
10
|
*
|
|
@@ -34,7 +35,9 @@ export class CreateRoleCommandHandler {
|
|
|
34
35
|
if (roleName === undefined || roleName.length === 0) {
|
|
35
36
|
throw new Error("RoleName is required");
|
|
36
37
|
}
|
|
37
|
-
|
|
38
|
+
const trustPolicyDocument = command.input.AssumeRolePolicyDocument;
|
|
39
|
+
assertSimIamTrustPolicyWithinSizeLimit(trustPolicyDocument, roleName);
|
|
40
|
+
this.trustPolicyValidator.validateRequired(trustPolicyDocument);
|
|
38
41
|
const path = normaliseRolePath(command.input.Path);
|
|
39
42
|
const arn = makeSimRoleArn({
|
|
40
43
|
accountId: this.accountId,
|
|
@@ -84,3 +84,14 @@ export declare class SimIamMalformedPolicyDocument extends SimIamError {
|
|
|
84
84
|
readonly name = "MalformedPolicyDocument";
|
|
85
85
|
constructor(message: string);
|
|
86
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Simulated IAM LimitExceeded error.
|
|
89
|
+
*
|
|
90
|
+
* IAM answers a request that would take the account past one of its quotas
|
|
91
|
+
* with this, such as a policy document longer than the limit for where it is
|
|
92
|
+
* going.
|
|
93
|
+
*/
|
|
94
|
+
export declare class SimIamLimitExceeded extends SimIamError {
|
|
95
|
+
readonly name = "LimitExceeded";
|
|
96
|
+
constructor(message: string);
|
|
97
|
+
}
|
|
@@ -83,3 +83,16 @@ export class SimIamMalformedPolicyDocument extends SimIamError {
|
|
|
83
83
|
super(message, { httpStatusCode: 400 });
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Simulated IAM LimitExceeded error.
|
|
88
|
+
*
|
|
89
|
+
* IAM answers a request that would take the account past one of its quotas
|
|
90
|
+
* with this, such as a policy document longer than the limit for where it is
|
|
91
|
+
* going.
|
|
92
|
+
*/
|
|
93
|
+
export class SimIamLimitExceeded extends SimIamError {
|
|
94
|
+
name = "LimitExceeded";
|
|
95
|
+
constructor(message) {
|
|
96
|
+
super(message, { httpStatusCode: 409 });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -2,6 +2,7 @@ export { SimIam } from "./sim-iam.js";
|
|
|
2
2
|
export type { SimIamConditionValue, SimIamPolicyDocument, SimIamPolicyDocumentCondition, SimIamPolicyDocumentPrincipal, SimIamPolicyDocumentStatement, } from "./policy/sim-iam-policy.js";
|
|
3
3
|
export { SimIamAccessDenied, SimIamError } from "./error/sim-iam.error.js";
|
|
4
4
|
export type { SimIamRequestOptions } from "./command/sim-iam-request-options.js";
|
|
5
|
+
export type { SimIamDeployRoleInput, SimIamDeployRolePolicy, } from "./role/sim-iam-deploy-role.js";
|
|
5
6
|
export type { SimIamCredentialIdentity } from "./credential/sim-aws-credentials.js";
|
|
6
7
|
export { SimIamCredentialScopeMismatch, SimIamExpiredToken, SimIamIncompleteSignature, SimIamInvalidClientTokenId, SimIamSignatureDoesNotMatch, SimIamSigV4Error, type SimIamSigV4ErrorCode, } from "./sigv4/error/sim-iam-sigv4.error.js";
|
|
7
8
|
export type { SimIamSigV4ExpectedScope } from "./sigv4/sim-iam-sigv4-expected-scope.js";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SimIamPolicyDocument } from "./sim-iam-policy.js";
|
|
2
|
+
/**
|
|
3
|
+
* Build a policy document IAM would measure at exactly this many characters.
|
|
4
|
+
*
|
|
5
|
+
* A test about IAM's character limits has a size to state rather than a
|
|
6
|
+
* statement. Padding an ARN leaves a document IAM would otherwise take, so the
|
|
7
|
+
* size is the only thing the command is being asked about. The size is the one
|
|
8
|
+
* IAM counts, of the document written compactly, and a caller is free to
|
|
9
|
+
* indent what it hands over.
|
|
10
|
+
*/
|
|
11
|
+
export declare function simIamPolicyDocumentOfSize(characters: number): SimIamPolicyDocument;
|
|
12
|
+
/**
|
|
13
|
+
* Build a Role trust policy document of exactly this many characters.
|
|
14
|
+
*
|
|
15
|
+
* A trust policy carries a Principal and no Resource, so it is padded through
|
|
16
|
+
* a Sid instead.
|
|
17
|
+
*/
|
|
18
|
+
export declare function simIamTrustPolicyDocumentOfSize(characters: number): SimIamPolicyDocument;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsonStringify } from "../../../util/type-guard/json.js";
|
|
2
|
+
/**
|
|
3
|
+
* Build a policy document IAM would measure at exactly this many characters.
|
|
4
|
+
*
|
|
5
|
+
* A test about IAM's character limits has a size to state rather than a
|
|
6
|
+
* statement. Padding an ARN leaves a document IAM would otherwise take, so the
|
|
7
|
+
* size is the only thing the command is being asked about. The size is the one
|
|
8
|
+
* IAM counts, of the document written compactly, and a caller is free to
|
|
9
|
+
* indent what it hands over.
|
|
10
|
+
*/
|
|
11
|
+
export function simIamPolicyDocumentOfSize(characters) {
|
|
12
|
+
return padded(characters, (padding) => ({
|
|
13
|
+
Version: "2012-10-17",
|
|
14
|
+
Statement: {
|
|
15
|
+
Effect: "Allow",
|
|
16
|
+
Action: "s3:GetObject",
|
|
17
|
+
Resource: `arn:aws:s3:::reports-bucket/${padding}`,
|
|
18
|
+
},
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Build a Role trust policy document of exactly this many characters.
|
|
23
|
+
*
|
|
24
|
+
* A trust policy carries a Principal and no Resource, so it is padded through
|
|
25
|
+
* a Sid instead.
|
|
26
|
+
*/
|
|
27
|
+
export function simIamTrustPolicyDocumentOfSize(characters) {
|
|
28
|
+
return padded(characters, (padding) => ({
|
|
29
|
+
Version: "2012-10-17",
|
|
30
|
+
Statement: {
|
|
31
|
+
Sid: padding,
|
|
32
|
+
Effect: "Allow",
|
|
33
|
+
Principal: { Service: "lambda.amazonaws.com" },
|
|
34
|
+
Action: "sts:AssumeRole",
|
|
35
|
+
},
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
function padded(characters, make) {
|
|
39
|
+
const unpadded = jsonStringify(make("")).length;
|
|
40
|
+
return make("x".repeat(characters - unpadded));
|
|
41
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { SimArnPrincipal } from "../../aws/caller/sim-aws-caller.js";
|
|
2
|
+
import type { SimPutRolePolicyCommand, SimPutRolePolicyCommandOutput } from "../command/policy/put-role-policy/put-role-policy.command.js";
|
|
3
|
+
import type { SimCreateRoleCommand, SimCreateRoleCommandOutput } from "../command/role/create-role/create-role.command.js";
|
|
4
|
+
import type { SimIamPolicyDocument } from "../policy/sim-iam-policy.js";
|
|
5
|
+
/**
|
|
6
|
+
* A permissions policy for a deploy Role.
|
|
7
|
+
*
|
|
8
|
+
* The parsed document a CDK app answers with, or the JSON string a template,
|
|
9
|
+
* a file or the SDK carries it as.
|
|
10
|
+
*/
|
|
11
|
+
export type SimIamDeployRolePolicy = SimIamPolicyDocument | string;
|
|
12
|
+
/**
|
|
13
|
+
* What making a Role for a deployment to run as takes.
|
|
14
|
+
*/
|
|
15
|
+
export interface SimIamDeployRoleInput {
|
|
16
|
+
/**
|
|
17
|
+
* The name to create the Role under.
|
|
18
|
+
*/
|
|
19
|
+
readonly roleName: string;
|
|
20
|
+
/**
|
|
21
|
+
* What the deployment is allowed to do.
|
|
22
|
+
*
|
|
23
|
+
* Several documents go on the Role as several inline policies. A policy
|
|
24
|
+
* split in two to stay under IAM's size cap is passed on whole.
|
|
25
|
+
*/
|
|
26
|
+
readonly policyDocument: SimIamDeployRolePolicy | readonly SimIamDeployRolePolicy[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The IAM commands making a deploy Role takes.
|
|
30
|
+
*/
|
|
31
|
+
interface SimIamDeployRoleCommands {
|
|
32
|
+
createRole(command: SimCreateRoleCommand): Promise<SimCreateRoleCommandOutput>;
|
|
33
|
+
putRolePolicy(command: SimPutRolePolicyCommand): Promise<SimPutRolePolicyCommandOutput>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Makes the Role a simulated CloudFormation deployment runs as.
|
|
37
|
+
*
|
|
38
|
+
* A project that scopes its own deploy permissions has the policy document
|
|
39
|
+
* already and wants a caller to pass to `deployTemplate`, `deployTemplateFile`
|
|
40
|
+
* or `deployCdkOut`. Getting from one to the other is a Role with the trust
|
|
41
|
+
* CloudFormation needs, the document on it, and the Role's ARN. The trust is
|
|
42
|
+
* the same every time and the ARN follows from the name. Neither is asked for.
|
|
43
|
+
*/
|
|
44
|
+
export declare class SimIamDeployRoleMaker {
|
|
45
|
+
private readonly commands;
|
|
46
|
+
constructor(commands: SimIamDeployRoleCommands);
|
|
47
|
+
/**
|
|
48
|
+
* Create the Role and answer with the caller a deployment names it by.
|
|
49
|
+
*
|
|
50
|
+
* Each document goes on as an inline policy of its own, under a numbered
|
|
51
|
+
* name. A policy split in two to fit IAM's cap has no second name of its
|
|
52
|
+
* own.
|
|
53
|
+
*/
|
|
54
|
+
make(input: SimIamDeployRoleInput): Promise<SimArnPrincipal>;
|
|
55
|
+
}
|
|
56
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { jsonStringify } from "../../../util/type-guard/json.js";
|
|
2
|
+
/**
|
|
3
|
+
* The trust a Role needs for CloudFormation to deploy as it.
|
|
4
|
+
*/
|
|
5
|
+
const deploymentTrustPolicy = jsonStringify({
|
|
6
|
+
Version: "2012-10-17",
|
|
7
|
+
Statement: {
|
|
8
|
+
Effect: "Allow",
|
|
9
|
+
Principal: { Service: "cloudformation.amazonaws.com" },
|
|
10
|
+
Action: "sts:AssumeRole",
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
/**
|
|
14
|
+
* Makes the Role a simulated CloudFormation deployment runs as.
|
|
15
|
+
*
|
|
16
|
+
* A project that scopes its own deploy permissions has the policy document
|
|
17
|
+
* already and wants a caller to pass to `deployTemplate`, `deployTemplateFile`
|
|
18
|
+
* or `deployCdkOut`. Getting from one to the other is a Role with the trust
|
|
19
|
+
* CloudFormation needs, the document on it, and the Role's ARN. The trust is
|
|
20
|
+
* the same every time and the ARN follows from the name. Neither is asked for.
|
|
21
|
+
*/
|
|
22
|
+
export class SimIamDeployRoleMaker {
|
|
23
|
+
commands;
|
|
24
|
+
constructor(commands) {
|
|
25
|
+
this.commands = commands;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Create the Role and answer with the caller a deployment names it by.
|
|
29
|
+
*
|
|
30
|
+
* Each document goes on as an inline policy of its own, under a numbered
|
|
31
|
+
* name. A policy split in two to fit IAM's cap has no second name of its
|
|
32
|
+
* own.
|
|
33
|
+
*/
|
|
34
|
+
async make(input) {
|
|
35
|
+
const creation = await this.commands.createRole({
|
|
36
|
+
input: {
|
|
37
|
+
RoleName: input.roleName,
|
|
38
|
+
AssumeRolePolicyDocument: deploymentTrustPolicy,
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
await Promise.all([input.policyDocument].flat().map((document, index) => this.commands.putRolePolicy({
|
|
42
|
+
input: {
|
|
43
|
+
RoleName: input.roleName,
|
|
44
|
+
PolicyName: `${input.roleName}-policy-${index + 1}`,
|
|
45
|
+
PolicyDocument: typeof document === "string" ? document : jsonStringify(document),
|
|
46
|
+
},
|
|
47
|
+
})));
|
|
48
|
+
return { kind: "arn", arn: creation.Role.Arn };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -19,7 +19,9 @@ export interface SimIamRoleWithPolicyInput {
|
|
|
19
19
|
*
|
|
20
20
|
* A simulation given a default caller attributes these two commands to it,
|
|
21
21
|
* and a Role being created for that caller has no policies to allow them
|
|
22
|
-
* yet. Naming the Account root here is
|
|
22
|
+
* yet. Naming the Account root here is one way for such a test to bootstrap.
|
|
23
|
+
* Calling inside `simAws.runAs(simAws.account().rootPrincipal, ...)` is the
|
|
24
|
+
* other, and covers everything else the block does as well.
|
|
23
25
|
*/
|
|
24
26
|
readonly caller?: SimAwsCaller | undefined;
|
|
25
27
|
}
|