@kensio/yulin 1.20.16 → 1.20.17
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/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 +8 -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 +5 -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 +25 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.js +21 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.d.ts +28 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.js +48 -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-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 +27 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.js +42 -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/distro/{sim-cfn-cf-distro-response-headers-policy.d.ts → sim-cfn-cf-distro-behavior-policies.d.ts} +8 -7
- package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.js → sim-cfn-cf-distro-behavior-policies.js} +11 -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 +50 -0
- package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.d.ts +1 -0
- package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.js +10 -0
- package/dist/service/cloudfront/command/create-distribution/create-distribution.command.d.ts +1 -0
- package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +2 -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/update-distribution/update-distribution.handler.d.ts +2 -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-policies.d.ts +28 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.js +41 -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 +6 -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 +2 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js +4 -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-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/sim-cf-distribution-configuration-state.d.ts +3 -1
- package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts +2 -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/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/sdk/sim-cloudfront-sdk-command-router.js +12 -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-commands.d.ts +8 -12
- package/dist/service/cloudfront/sim-cloudfront-commands.js +8 -17
- package/dist/service/cloudfront/sim-cloudfront-policies.d.ts +43 -0
- package/dist/service/cloudfront/sim-cloudfront-policies.js +53 -0
- package/dist/service/cloudfront/sim-cloudfront.d.ts +13 -17
- package/dist/service/cloudfront/sim-cloudfront.js +22 -25
- 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 +33 -2
- package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js +33 -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 +87 -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 +11 -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/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 +6 -4
- 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 +15 -9
- package/dist/service/ssm/parameter/sim-ssm-parameter-kms.js +20 -10
- 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/cloudformation/README.md +196 -11
- package/docs/services/cloudfront/README.md +230 -6
- 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 +20 -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 +7 -2
- package/docs/services/lambda/README.md +76 -2
- package/docs/services/logs/README.md +16 -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 +40 -16
- 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,9 +1,11 @@
|
|
|
1
1
|
import type { SimCfnServiceResourceFactory } from "../cloudformation/resource/factory/sim-cfn-resource-factory.type.js";
|
|
2
2
|
import type { SimAwsAccountRegionScope } from "../aws/sim-aws-account-region-scope.js";
|
|
3
|
+
import type { SimIamInterServiceAuthZ } from "../iam/authorize/sim-iam-inter-service-auth-z.js";
|
|
3
4
|
import { SimEcrRegistry } from "./registry/sim-ecr-registry.js";
|
|
4
5
|
import type { SimEcrRepository } from "./repository/sim-ecr-repository.js";
|
|
5
6
|
interface SimEcrProperties {
|
|
6
7
|
readonly accountRegionScope?: SimAwsAccountRegionScope;
|
|
8
|
+
readonly iam?: SimIamInterServiceAuthZ;
|
|
7
9
|
readonly registry?: SimEcrRegistry;
|
|
8
10
|
}
|
|
9
11
|
/**
|
|
@@ -19,6 +21,11 @@ interface SimEcrProperties {
|
|
|
19
21
|
* Repositories are scoped to an account and region, as they are on real AWS:
|
|
20
22
|
* a repository ARN names the region, and the registry host in an image URI
|
|
21
23
|
* carries both the account and the region.
|
|
24
|
+
*
|
|
25
|
+
* Nothing a test does here is authorized, for the same reason. Naming a
|
|
26
|
+
* repository is the simulator's own accessor, and no principal makes that
|
|
27
|
+
* request. A CloudFormation deployment does make one, and a Stack making or
|
|
28
|
+
* removing a repository is decided by simulated IAM as the caller it named.
|
|
22
29
|
*/
|
|
23
30
|
export declare class SimEcr {
|
|
24
31
|
private readonly repositories;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { simAwsAccountRegionScopeFactory } from "../aws/sim-aws-account-region-scope.factory.js";
|
|
2
|
+
import { simIamInRegion } from "../iam/authorize/sim-iam-region-auth-z.js";
|
|
3
|
+
import { SimEcrAuthorizer } from "./authorize/sim-ecr-authorizer.js";
|
|
2
4
|
import { SimEcrCfnResourceFactory } from "./cfn/sim-ecr-cfn-resource-factory.js";
|
|
3
5
|
import { SimEcrRegistry } from "./registry/sim-ecr-registry.js";
|
|
4
6
|
import { SimEcrRepositoryAddress } from "./repository/sim-ecr-repository-address.js";
|
|
@@ -16,15 +18,25 @@ import { SimEcrRepositoryStore } from "./repository/sim-ecr-repository-store.js"
|
|
|
16
18
|
* Repositories are scoped to an account and region, as they are on real AWS:
|
|
17
19
|
* a repository ARN names the region, and the registry host in an image URI
|
|
18
20
|
* carries both the account and the region.
|
|
21
|
+
*
|
|
22
|
+
* Nothing a test does here is authorized, for the same reason. Naming a
|
|
23
|
+
* repository is the simulator's own accessor, and no principal makes that
|
|
24
|
+
* request. A CloudFormation deployment does make one, and a Stack making or
|
|
25
|
+
* removing a repository is decided by simulated IAM as the caller it named.
|
|
19
26
|
*/
|
|
20
27
|
export class SimEcr {
|
|
21
28
|
repositories;
|
|
22
|
-
cfnFactory
|
|
29
|
+
cfnFactory;
|
|
23
30
|
constructor(properties = {}) {
|
|
24
31
|
const { accountRegionScope = simAwsAccountRegionScopeFactory.make(), registry = new SimEcrRegistry(), } = properties;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
32
|
+
const address = new SimEcrRepositoryAddress(accountRegionScope);
|
|
33
|
+
this.repositories = new SimEcrRepositoryStore({ address, registry });
|
|
34
|
+
this.cfnFactory = new SimEcrCfnResourceFactory({
|
|
35
|
+
ecr: this,
|
|
36
|
+
authorizer: new SimEcrAuthorizer({
|
|
37
|
+
iam: simIamInRegion(properties.iam, accountRegionScope.regionName),
|
|
38
|
+
address,
|
|
39
|
+
}),
|
|
28
40
|
});
|
|
29
41
|
}
|
|
30
42
|
/**
|
|
@@ -18,11 +18,23 @@ interface SimEcsAuthorizerProperties {
|
|
|
18
18
|
* A denial is reported as ECS's own AccessDeniedException rather than the
|
|
19
19
|
* shared IAM error, because that is the error a real ECS caller would have to
|
|
20
20
|
* handle.
|
|
21
|
+
*
|
|
22
|
+
* A registration carrying a `taskRoleArn` or an `executionRoleArn` hands ECS
|
|
23
|
+
* Roles it runs the task as later, and each one is authorized as
|
|
24
|
+
* `iam:PassRole` against the Role itself.
|
|
21
25
|
*/
|
|
22
26
|
export declare class SimEcsAuthorizer {
|
|
23
27
|
private readonly iam;
|
|
24
28
|
private readonly callerIdentifier;
|
|
29
|
+
private readonly passRole;
|
|
25
30
|
constructor(properties: SimEcsAuthorizerProperties);
|
|
31
|
+
/**
|
|
32
|
+
* Ensure the caller may hand ECS every Role a task definition names.
|
|
33
|
+
*
|
|
34
|
+
* Both Roles are optional on a registration, and one left out passes
|
|
35
|
+
* nothing.
|
|
36
|
+
*/
|
|
37
|
+
authorizePassRole(roleArns: readonly (string | undefined)[], options?: SimEcsRequestOptions): void;
|
|
26
38
|
/**
|
|
27
39
|
* Ensure the caller may perform an action on a cluster, named by its ARN.
|
|
28
40
|
*
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { SimIamPassRoleAuthorizer, simIamPassRoleDenialMessage, } from "../../../iam/authorize/pass-role/sim-iam-pass-role-authorizer.js";
|
|
1
2
|
import { SimIamCallerIdentifier } from "../../../iam/error/sim-iam-caller-identifier.js";
|
|
2
3
|
import { SimEcsAccessDeniedException } from "../../error/sim-ecs.error.js";
|
|
4
|
+
import { simEcsTasksServicePrincipal } from "../../sim-ecs-service-principal.js";
|
|
3
5
|
/**
|
|
4
6
|
* The resource an ECS action with no resource type authorizes against.
|
|
5
7
|
*
|
|
@@ -24,12 +26,31 @@ const noResource = "*";
|
|
|
24
26
|
* A denial is reported as ECS's own AccessDeniedException rather than the
|
|
25
27
|
* shared IAM error, because that is the error a real ECS caller would have to
|
|
26
28
|
* handle.
|
|
29
|
+
*
|
|
30
|
+
* A registration carrying a `taskRoleArn` or an `executionRoleArn` hands ECS
|
|
31
|
+
* Roles it runs the task as later, and each one is authorized as
|
|
32
|
+
* `iam:PassRole` against the Role itself.
|
|
27
33
|
*/
|
|
28
34
|
export class SimEcsAuthorizer {
|
|
29
35
|
iam;
|
|
30
36
|
callerIdentifier = new SimIamCallerIdentifier();
|
|
37
|
+
passRole;
|
|
31
38
|
constructor(properties) {
|
|
32
39
|
this.iam = properties.iam;
|
|
40
|
+
this.passRole = new SimIamPassRoleAuthorizer({
|
|
41
|
+
iam: properties.iam,
|
|
42
|
+
passedToService: simEcsTasksServicePrincipal,
|
|
43
|
+
denied: (denial) => new SimEcsAccessDeniedException(simIamPassRoleDenialMessage(denial)),
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Ensure the caller may hand ECS every Role a task definition names.
|
|
48
|
+
*
|
|
49
|
+
* Both Roles are optional on a registration, and one left out passes
|
|
50
|
+
* nothing.
|
|
51
|
+
*/
|
|
52
|
+
authorizePassRole(roleArns, options) {
|
|
53
|
+
this.passRole.authorizeAll(roleArns, options?.caller);
|
|
33
54
|
}
|
|
34
55
|
/**
|
|
35
56
|
* Ensure the caller may perform an action on a cluster, named by its ARN.
|
package/dist/service/ecs/command/register-task-definition/register-task-definition.handler.js
CHANGED
|
@@ -47,6 +47,7 @@ export class RegisterTaskDefinitionCommandHandler extends SimEcsCommandHandler {
|
|
|
47
47
|
const settings = new SimEcsTaskDefinitionSettings(command.input);
|
|
48
48
|
await this.sequence();
|
|
49
49
|
const caller = this.authorizer.authorizeAnyResource("ecs:RegisterTaskDefinition", options);
|
|
50
|
+
this.authorizer.authorizePassRole([settings.taskRoleArn, settings.executionRoleArn], options);
|
|
50
51
|
const familyRevisions = this.taskDefinitions.family(family);
|
|
51
52
|
const revision = familyRevisions.nextRevisionNumber();
|
|
52
53
|
const taskDefinition = new SimEcsTaskDefinition({
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The service principal ECS holds a task's Roles as.
|
|
3
|
+
*
|
|
4
|
+
* A task role and a task execution role are both trusted by this principal,
|
|
5
|
+
* and it is what `iam:PassedToService` carries when a task definition is
|
|
6
|
+
* registered.
|
|
7
|
+
*/
|
|
8
|
+
export declare const simEcsTasksServicePrincipal = "ecs-tasks.amazonaws.com";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The service principal ECS holds a task's Roles as.
|
|
3
|
+
*
|
|
4
|
+
* A task role and a task execution role are both trusted by this principal,
|
|
5
|
+
* and it is what `iam:PassedToService` carries when a task definition is
|
|
6
|
+
* registered.
|
|
7
|
+
*/
|
|
8
|
+
export const simEcsTasksServicePrincipal = "ecs-tasks.amazonaws.com";
|
|
@@ -16,6 +16,11 @@ interface SimEventBridgeAuthorizerProperties {
|
|
|
16
16
|
* answers a refused request with. It has no error of its own for the case, so
|
|
17
17
|
* there is nothing service-specific to translate to.
|
|
18
18
|
*
|
|
19
|
+
* A target carrying a `RoleArn` hands EventBridge a Role it runs the target
|
|
20
|
+
* as later, and that is authorized as `iam:PassRole` against the Role. An ECS
|
|
21
|
+
* target is the only one this simulation reads a `RoleArn` from, since a
|
|
22
|
+
* `RoleArn` on any other target is refused.
|
|
23
|
+
*
|
|
19
24
|
* Event bus resource policies are not part of the decision yet, because
|
|
20
25
|
* nothing sets one: PutPermission and the bus `Policy` attribute are not
|
|
21
26
|
* simulated. A caller from another Account therefore has no way to be admitted
|
|
@@ -24,7 +29,14 @@ interface SimEventBridgeAuthorizerProperties {
|
|
|
24
29
|
export declare class SimEventBridgeAuthorizer {
|
|
25
30
|
private readonly iam;
|
|
26
31
|
private readonly callerIdentifier;
|
|
32
|
+
private readonly passRole;
|
|
27
33
|
constructor(properties: SimEventBridgeAuthorizerProperties);
|
|
34
|
+
/**
|
|
35
|
+
* Ensure the caller may hand EventBridge every Role a request names.
|
|
36
|
+
*
|
|
37
|
+
* A target with no Role of its own passes nothing.
|
|
38
|
+
*/
|
|
39
|
+
authorizePassRole(roleArns: readonly (string | undefined)[], options?: SimEventBridgeRequestOptions): void;
|
|
28
40
|
/**
|
|
29
41
|
* Ensure the caller may perform an action on a bus, named by its ARN.
|
|
30
42
|
*
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { SimIamPassRoleAuthorizer, simIamPassRoleDenialMessage, } from "../../../iam/authorize/pass-role/sim-iam-pass-role-authorizer.js";
|
|
1
2
|
import { SimIamCallerIdentifier } from "../../../iam/error/sim-iam-caller-identifier.js";
|
|
3
|
+
import { simEventBridgeServicePrincipal } from "../../delivery/sim-event-bridge-delivery.js";
|
|
2
4
|
import { SimEventBridgeAccessDeniedException } from "../../error/sim-event-bridge.error.js";
|
|
3
5
|
/**
|
|
4
6
|
* The resource an action with no resource type authorizes against.
|
|
@@ -20,6 +22,11 @@ const noResource = "*";
|
|
|
20
22
|
* answers a refused request with. It has no error of its own for the case, so
|
|
21
23
|
* there is nothing service-specific to translate to.
|
|
22
24
|
*
|
|
25
|
+
* A target carrying a `RoleArn` hands EventBridge a Role it runs the target
|
|
26
|
+
* as later, and that is authorized as `iam:PassRole` against the Role. An ECS
|
|
27
|
+
* target is the only one this simulation reads a `RoleArn` from, since a
|
|
28
|
+
* `RoleArn` on any other target is refused.
|
|
29
|
+
*
|
|
23
30
|
* Event bus resource policies are not part of the decision yet, because
|
|
24
31
|
* nothing sets one: PutPermission and the bus `Policy` attribute are not
|
|
25
32
|
* simulated. A caller from another Account therefore has no way to be admitted
|
|
@@ -28,8 +35,22 @@ const noResource = "*";
|
|
|
28
35
|
export class SimEventBridgeAuthorizer {
|
|
29
36
|
iam;
|
|
30
37
|
callerIdentifier = new SimIamCallerIdentifier();
|
|
38
|
+
passRole;
|
|
31
39
|
constructor(properties) {
|
|
32
40
|
this.iam = properties.iam;
|
|
41
|
+
this.passRole = new SimIamPassRoleAuthorizer({
|
|
42
|
+
iam: properties.iam,
|
|
43
|
+
passedToService: simEventBridgeServicePrincipal,
|
|
44
|
+
denied: (denial) => new SimEventBridgeAccessDeniedException(simIamPassRoleDenialMessage(denial)),
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Ensure the caller may hand EventBridge every Role a request names.
|
|
49
|
+
*
|
|
50
|
+
* A target with no Role of its own passes nothing.
|
|
51
|
+
*/
|
|
52
|
+
authorizePassRole(roleArns, options) {
|
|
53
|
+
this.passRole.authorizeAll(roleArns, options?.caller);
|
|
33
54
|
}
|
|
34
55
|
/**
|
|
35
56
|
* Ensure the caller may perform an action on a bus, named by its ARN.
|
|
@@ -19,6 +19,12 @@ interface SimEventBridgeRuleAccessProperties {
|
|
|
19
19
|
readonly authorizer: SimEventBridgeAuthorizer;
|
|
20
20
|
readonly accountRegionScope: SimAwsAccountRegionScope;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* The part of a target that names a Role.
|
|
24
|
+
*/
|
|
25
|
+
interface SimEventBridgeTargetRole {
|
|
26
|
+
readonly RoleArn?: string | undefined;
|
|
27
|
+
}
|
|
22
28
|
interface SimEventBridgeRuleRequest {
|
|
23
29
|
readonly Name?: string | undefined;
|
|
24
30
|
readonly EventBusName?: string | undefined;
|
|
@@ -48,6 +54,13 @@ export declare class SimEventBridgeRuleAccess {
|
|
|
48
54
|
* Ensure the caller may perform an action on a rule, which need not exist.
|
|
49
55
|
*/
|
|
50
56
|
authorize(action: string, requested: SimEventBridgeRequestedRule, options?: SimEventBridgeRequestOptions): void;
|
|
57
|
+
/**
|
|
58
|
+
* Ensure the caller may hand EventBridge every Role a request names.
|
|
59
|
+
*
|
|
60
|
+
* A rule runs its targets as the Role each one carries, long after the
|
|
61
|
+
* request that put them there, so adding one is a hand-over of that Role.
|
|
62
|
+
*/
|
|
63
|
+
authorizePassRole(targets: readonly SimEventBridgeTargetRole[], options?: SimEventBridgeRequestOptions): void;
|
|
51
64
|
/**
|
|
52
65
|
* Resolve the rule a request names, authorizing the action first.
|
|
53
66
|
*/
|
|
@@ -37,6 +37,15 @@ export class SimEventBridgeRuleAccess {
|
|
|
37
37
|
authorize(action, requested, options) {
|
|
38
38
|
this.authorizer.authorizeBus(action, this.arnFor(requested), options);
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Ensure the caller may hand EventBridge every Role a request names.
|
|
42
|
+
*
|
|
43
|
+
* A rule runs its targets as the Role each one carries, long after the
|
|
44
|
+
* request that put them there, so adding one is a hand-over of that Role.
|
|
45
|
+
*/
|
|
46
|
+
authorizePassRole(targets, options) {
|
|
47
|
+
this.authorizer.authorizePassRole(targets.map((target) => target.RoleArn), options);
|
|
48
|
+
}
|
|
40
49
|
/**
|
|
41
50
|
* Resolve the rule a request names, authorizing the action first.
|
|
42
51
|
*/
|
|
@@ -33,6 +33,7 @@ export class SimEventBridgePutTargets {
|
|
|
33
33
|
for (const target of requested) {
|
|
34
34
|
refuseUnsimulatedTargetInput(target);
|
|
35
35
|
}
|
|
36
|
+
this.access.authorizePassRole(requested, options);
|
|
36
37
|
const added = requested.map((target) => SimEventTarget.of(target));
|
|
37
38
|
refuseRepeatedTargetIds(added);
|
|
38
39
|
const busName = rule.busName.value;
|
|
@@ -11,10 +11,22 @@ interface SimFirehoseAuthorizerProperties {
|
|
|
11
11
|
* name, and the resource is the ARN of the delivery stream the operation names.
|
|
12
12
|
* ListDeliveryStreams is the exception. It names no delivery stream, so it
|
|
13
13
|
* authorizes against `*`.
|
|
14
|
+
*
|
|
15
|
+
* A delivery stream carries a Role for its destination, and a second one for
|
|
16
|
+
* its source where it reads a Kinesis stream. Firehose keeps both and delivers
|
|
17
|
+
* as them later, so creating one authorizes `iam:PassRole` against each.
|
|
14
18
|
*/
|
|
15
19
|
export declare class SimFirehoseAuthorizer {
|
|
16
20
|
private readonly iam;
|
|
21
|
+
private readonly passRole;
|
|
17
22
|
constructor(properties: SimFirehoseAuthorizerProperties);
|
|
23
|
+
/**
|
|
24
|
+
* Ensure the caller may hand Firehose every Role a delivery stream names.
|
|
25
|
+
*
|
|
26
|
+
* A delivery stream taking records through PutRecord has no source Role, and
|
|
27
|
+
* one left out passes nothing.
|
|
28
|
+
*/
|
|
29
|
+
authorizePassRole(roleArns: readonly (string | undefined)[], caller?: SimAwsCaller): void;
|
|
18
30
|
/**
|
|
19
31
|
* Ensure the caller may perform an action on a delivery stream, named by its
|
|
20
32
|
* ARN.
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { SimIamPassRoleAuthorizer } from "../../../iam/authorize/pass-role/sim-iam-pass-role-authorizer.js";
|
|
1
2
|
import { SimIamAccessDenied } from "../../../iam/error/sim-iam.error.js";
|
|
3
|
+
import { simFirehoseServicePrincipal } from "../../sim-firehose-service-principal.js";
|
|
2
4
|
/**
|
|
3
5
|
* Applies simulated IAM authorization to Firehose requests.
|
|
4
6
|
*
|
|
@@ -6,11 +8,29 @@ import { SimIamAccessDenied } from "../../../iam/error/sim-iam.error.js";
|
|
|
6
8
|
* name, and the resource is the ARN of the delivery stream the operation names.
|
|
7
9
|
* ListDeliveryStreams is the exception. It names no delivery stream, so it
|
|
8
10
|
* authorizes against `*`.
|
|
11
|
+
*
|
|
12
|
+
* A delivery stream carries a Role for its destination, and a second one for
|
|
13
|
+
* its source where it reads a Kinesis stream. Firehose keeps both and delivers
|
|
14
|
+
* as them later, so creating one authorizes `iam:PassRole` against each.
|
|
9
15
|
*/
|
|
10
16
|
export class SimFirehoseAuthorizer {
|
|
11
17
|
iam;
|
|
18
|
+
passRole;
|
|
12
19
|
constructor(properties) {
|
|
13
20
|
this.iam = properties.iam;
|
|
21
|
+
this.passRole = new SimIamPassRoleAuthorizer({
|
|
22
|
+
iam: properties.iam,
|
|
23
|
+
passedToService: simFirehoseServicePrincipal,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Ensure the caller may hand Firehose every Role a delivery stream names.
|
|
28
|
+
*
|
|
29
|
+
* A delivery stream taking records through PutRecord has no source Role, and
|
|
30
|
+
* one left out passes nothing.
|
|
31
|
+
*/
|
|
32
|
+
authorizePassRole(roleArns, caller) {
|
|
33
|
+
this.passRole.authorizeAll(roleArns, caller);
|
|
14
34
|
}
|
|
15
35
|
/**
|
|
16
36
|
* Ensure the caller may perform an action on a delivery stream, named by its
|
|
@@ -38,6 +38,10 @@ export declare class SimFirehoseDeliveryStreamAccess {
|
|
|
38
38
|
* stream.
|
|
39
39
|
*/
|
|
40
40
|
authorizeAny(action: string, options?: SimFirehoseRequestOptions): SimAwsResolvedCaller;
|
|
41
|
+
/**
|
|
42
|
+
* Ensure the caller may hand Firehose every Role a request names.
|
|
43
|
+
*/
|
|
44
|
+
authorizePassRole(roleArns: readonly (string | undefined)[], options?: SimFirehoseRequestOptions): void;
|
|
41
45
|
/**
|
|
42
46
|
* Resolve the delivery stream a request names, authorizing the action first.
|
|
43
47
|
*/
|
|
@@ -37,6 +37,12 @@ export class SimFirehoseDeliveryStreamAccess {
|
|
|
37
37
|
authorizeAny(action, options) {
|
|
38
38
|
return this.authorizer.authorizeAnyDeliveryStream(action, options?.caller);
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Ensure the caller may hand Firehose every Role a request names.
|
|
42
|
+
*/
|
|
43
|
+
authorizePassRole(roleArns, options) {
|
|
44
|
+
this.authorizer.authorizePassRole(roleArns, options?.caller);
|
|
45
|
+
}
|
|
40
46
|
/**
|
|
41
47
|
* Resolve the delivery stream a request names, authorizing the action first.
|
|
42
48
|
*/
|
|
@@ -44,11 +44,13 @@ export class SimFirehoseCreateDeliveryStream {
|
|
|
44
44
|
this.requireNameFree(name);
|
|
45
45
|
const createdAt = this.background.now();
|
|
46
46
|
const source = simFirehoseSourceOf(input, this.scope, createdAt);
|
|
47
|
+
const destination = simFirehoseDestinationOf(input);
|
|
48
|
+
this.access.authorizePassRole([destination.roleArn, source.roleArn], options);
|
|
47
49
|
const arn = simFirehoseDeliveryStreamArn(this.scope, name);
|
|
48
50
|
const deliveryStream = new SimFirehoseDeliveryStream({
|
|
49
51
|
name,
|
|
50
52
|
arn,
|
|
51
|
-
destination
|
|
53
|
+
destination,
|
|
52
54
|
source,
|
|
53
55
|
createdAt,
|
|
54
56
|
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The service principal Firehose reads and delivers as.
|
|
3
|
+
*
|
|
4
|
+
* A delivery stream's destination Role and its source Role are both trusted by
|
|
5
|
+
* this principal, and it is what `iam:PassedToService` carries when a delivery
|
|
6
|
+
* stream is created.
|
|
7
|
+
*/
|
|
8
|
+
export declare const simFirehoseServicePrincipal = "firehose.amazonaws.com";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The service principal Firehose reads and delivers as.
|
|
3
|
+
*
|
|
4
|
+
* A delivery stream's destination Role and its source Role are both trusted by
|
|
5
|
+
* this principal, and it is what `iam:PassedToService` carries when a delivery
|
|
6
|
+
* stream is created.
|
|
7
|
+
*/
|
|
8
|
+
export const simFirehoseServicePrincipal = "firehose.amazonaws.com";
|
|
@@ -14,6 +14,11 @@ export type SimFirehoseDeliveryStreamType = "DirectPut" | "KinesisStreamAsSource
|
|
|
14
14
|
export declare class SimFirehoseDirectPutSource {
|
|
15
15
|
readonly kind: "direct-put";
|
|
16
16
|
readonly deliveryStreamType: "DirectPut";
|
|
17
|
+
/**
|
|
18
|
+
* The Role reading is done as, which a delivery stream taking puts has none
|
|
19
|
+
* of. It reads nothing, so there is nothing for a Role to read it as.
|
|
20
|
+
*/
|
|
21
|
+
readonly roleArn: undefined;
|
|
17
22
|
/**
|
|
18
23
|
* Take a put, which is where this delivery stream's records come from.
|
|
19
24
|
*/
|
|
@@ -5,6 +5,11 @@ import { SimFirehoseInvalidArgumentException } from "../error/sim-firehose.error
|
|
|
5
5
|
export class SimFirehoseDirectPutSource {
|
|
6
6
|
kind = "direct-put";
|
|
7
7
|
deliveryStreamType = "DirectPut";
|
|
8
|
+
/**
|
|
9
|
+
* The Role reading is done as, which a delivery stream taking puts has none
|
|
10
|
+
* of. It reads nothing, so there is nothing for a Role to read it as.
|
|
11
|
+
*/
|
|
12
|
+
roleArn = undefined;
|
|
8
13
|
/**
|
|
9
14
|
* Take a put, which is where this delivery stream's records come from.
|
|
10
15
|
*/
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { glueCfnPropertyError } from "../sim-cfn-glue-property-error.js";
|
|
2
2
|
import { SimCfnGlueValues } from "../sim-cfn-glue-values.js";
|
|
3
3
|
import { SimCfnGlueDatabaseRules } from "./sim-cfn-glue-database-rules.js";
|
|
4
|
+
import { simCfnGlueGeneratedName } from "../sim-cfn-glue-generated-name.js";
|
|
4
5
|
const resourceType = "AWS::Glue::Database";
|
|
5
6
|
/**
|
|
6
7
|
* Reads AWS::Glue::Database CloudFormation properties.
|
|
@@ -28,10 +29,9 @@ export class SimCfnGlueDatabaseProperties {
|
|
|
28
29
|
*/
|
|
29
30
|
databaseName() {
|
|
30
31
|
const values = this.#values;
|
|
31
|
-
const stackName = this.#resource.stackName ?? "stack";
|
|
32
32
|
return (values.optionalString(this.#input()["Name"], "DatabaseInput.Name") ??
|
|
33
33
|
values.optionalString(this.#properties["DatabaseName"], "DatabaseName") ??
|
|
34
|
-
|
|
34
|
+
simCfnGlueGeneratedName(this.#resource));
|
|
35
35
|
}
|
|
36
36
|
/** What the database is created with, beyond its name. */
|
|
37
37
|
databaseInput() {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SimCfnResource } from "../../cloudformation/resource/sim-cfn-resource.js";
|
|
2
|
+
/**
|
|
3
|
+
* The name CloudFormation gives a database or a table whose template does not
|
|
4
|
+
* name it.
|
|
5
|
+
*
|
|
6
|
+
* One function covers both because the Data Catalog gives a database and a
|
|
7
|
+
* table the same name rules. The name is folded to lowercase the way the
|
|
8
|
+
* catalog folds any name it stores, for compatibility with Apache Hive.
|
|
9
|
+
*/
|
|
10
|
+
export declare function simCfnGlueGeneratedName(resource: SimCfnResource): string;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { SimCfnGeneratedResourceName } from "../../cloudformation/resource/name/sim-cfn-generated-resource-name.js";
|
|
2
|
+
import { simGlueFolded } from "../database/sim-glue-catalog-name.js";
|
|
3
|
+
/**
|
|
4
|
+
* The longest name the Data Catalog accepts for a database or a table.
|
|
5
|
+
*
|
|
6
|
+
* Glue states the limit in UTF-8 bytes and `SimCfnGeneratedResourceName` trims
|
|
7
|
+
* by character. The two come to the same thing here. A logical ID is
|
|
8
|
+
* alphanumeric, a stack name adds only hyphens, and the tail is hex.
|
|
9
|
+
*/
|
|
10
|
+
const maximumNameLength = 255;
|
|
11
|
+
/**
|
|
12
|
+
* The name CloudFormation gives a database or a table whose template does not
|
|
13
|
+
* name it.
|
|
14
|
+
*
|
|
15
|
+
* One function covers both because the Data Catalog gives a database and a
|
|
16
|
+
* table the same name rules. The name is folded to lowercase the way the
|
|
17
|
+
* catalog folds any name it stores, for compatibility with Apache Hive.
|
|
18
|
+
*/
|
|
19
|
+
export function simCfnGlueGeneratedName(resource) {
|
|
20
|
+
return simGlueFolded(new SimCfnGeneratedResourceName({
|
|
21
|
+
stackName: resource.stackName,
|
|
22
|
+
logicalId: resource.logicalId,
|
|
23
|
+
maximumLength: maximumNameLength,
|
|
24
|
+
}).value);
|
|
25
|
+
}
|
|
@@ -3,6 +3,7 @@ import { SimCfnGlueRecord } from "../sim-cfn-glue-record.js";
|
|
|
3
3
|
import { SimCfnGlueValues } from "../sim-cfn-glue-values.js";
|
|
4
4
|
import { SimCfnGlueTableInputReader } from "./sim-cfn-glue-table-input.js";
|
|
5
5
|
import { simCfnGlueTableIgnored } from "./sim-cfn-glue-table-rules.js";
|
|
6
|
+
import { simCfnGlueGeneratedName } from "../sim-cfn-glue-generated-name.js";
|
|
6
7
|
const resourceType = "AWS::Glue::Table";
|
|
7
8
|
/**
|
|
8
9
|
* Reads AWS::Glue::Table CloudFormation properties.
|
|
@@ -32,9 +33,7 @@ export class SimCfnGlueTableProperties {
|
|
|
32
33
|
* since Glue names are lowercase for Hive compatibility.
|
|
33
34
|
*/
|
|
34
35
|
tableName() {
|
|
35
|
-
|
|
36
|
-
return (this.#input().string("Name") ??
|
|
37
|
-
`${stackName}-${this.#resource.logicalId}`.toLowerCase());
|
|
36
|
+
return (this.#input().string("Name") ?? simCfnGlueGeneratedName(this.#resource));
|
|
38
37
|
}
|
|
39
38
|
/** What the table is created with, beyond its name and its database. */
|
|
40
39
|
tableInput() {
|
|
@@ -6,6 +6,12 @@ interface SimIamAllowSidesProperties {
|
|
|
6
6
|
* Defaults to the resource side, for callers with no reason to distinguish.
|
|
7
7
|
*/
|
|
8
8
|
readonly resourceDirect?: boolean | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Whether a resource-policy Allow named the caller, rather than admitting it
|
|
11
|
+
* as one of a wider set through a wildcard principal. Defaults to the
|
|
12
|
+
* resource side in the same way.
|
|
13
|
+
*/
|
|
14
|
+
readonly resourceNamesCaller?: boolean | undefined;
|
|
9
15
|
}
|
|
10
16
|
/**
|
|
11
17
|
* Which sides of a policy evaluation produced a matching Allow.
|
|
@@ -19,6 +25,7 @@ export declare class SimIamAllowSides {
|
|
|
19
25
|
private readonly identityAllowed;
|
|
20
26
|
private readonly resourceAllowed;
|
|
21
27
|
private readonly resourceDirectAllowed;
|
|
28
|
+
private readonly resourceNamesCallerAllowed;
|
|
22
29
|
constructor(properties: SimIamAllowSidesProperties);
|
|
23
30
|
/**
|
|
24
31
|
* Whether an identity-based policy allowed the request.
|
|
@@ -29,8 +36,8 @@ export declare class SimIamAllowSides {
|
|
|
29
36
|
*/
|
|
30
37
|
get resource(): boolean;
|
|
31
38
|
/**
|
|
32
|
-
* Whether a resource-based policy allowed the request
|
|
33
|
-
*
|
|
39
|
+
* Whether a resource-based policy allowed the request without delegating to
|
|
40
|
+
* the caller's Account.
|
|
34
41
|
*/
|
|
35
42
|
get resourceDirect(): boolean;
|
|
36
43
|
/**
|
|
@@ -38,6 +45,11 @@ export declare class SimIamAllowSides {
|
|
|
38
45
|
* its Account, which grants nothing on its own.
|
|
39
46
|
*/
|
|
40
47
|
get resourceDelegated(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Whether a resource-based policy allowed the request by naming the caller,
|
|
50
|
+
* rather than by admitting whoever the request came from.
|
|
51
|
+
*/
|
|
52
|
+
get resourceNamesCaller(): boolean;
|
|
41
53
|
}
|
|
42
54
|
/**
|
|
43
55
|
* Which sides of an authorization must allow a request for it to be allowed.
|
|
@@ -97,6 +109,25 @@ export declare class SimIamMandatoryResourcePolicyRequirement implements SimIamA
|
|
|
97
109
|
*/
|
|
98
110
|
isSatisfiedBy(allows: SimIamAllowSides): boolean;
|
|
99
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* The rule for a request one service makes to another with the caller's own
|
|
114
|
+
* permissions. The caller needs the permission itself.
|
|
115
|
+
*
|
|
116
|
+
* A resource policy naming the caller still allows the request on its own, as
|
|
117
|
+
* a KMS key policy naming a Role does. A policy admitting whoever the request
|
|
118
|
+
* came from does not, because what it admits is the service. That is the
|
|
119
|
+
* difference between a key policy naming a Role and the aws/ssm key policy,
|
|
120
|
+
* which admits the Account's principals reaching KMS through Parameter Store
|
|
121
|
+
* and still leaves a Role holding only ssm:GetParameter unable to decrypt a
|
|
122
|
+
* SecureString.
|
|
123
|
+
*/
|
|
124
|
+
export declare class SimIamCallerPermissionRequirement implements SimIamAllowRequirement {
|
|
125
|
+
/**
|
|
126
|
+
* Whether the caller holds the permission itself, or was named outright by
|
|
127
|
+
* the resource.
|
|
128
|
+
*/
|
|
129
|
+
isSatisfiedBy(allows: SimIamAllowSides): boolean;
|
|
130
|
+
}
|
|
100
131
|
/**
|
|
101
132
|
* Every applicable rule at once.
|
|
102
133
|
*
|
|
@@ -10,11 +10,14 @@ export class SimIamAllowSides {
|
|
|
10
10
|
identityAllowed;
|
|
11
11
|
resourceAllowed;
|
|
12
12
|
resourceDirectAllowed;
|
|
13
|
+
resourceNamesCallerAllowed;
|
|
13
14
|
constructor(properties) {
|
|
14
15
|
this.identityAllowed = properties.identity;
|
|
15
16
|
this.resourceAllowed = properties.resource;
|
|
16
17
|
this.resourceDirectAllowed =
|
|
17
18
|
properties.resourceDirect ?? properties.resource;
|
|
19
|
+
this.resourceNamesCallerAllowed =
|
|
20
|
+
properties.resourceNamesCaller ?? properties.resource;
|
|
18
21
|
}
|
|
19
22
|
/**
|
|
20
23
|
* Whether an identity-based policy allowed the request.
|
|
@@ -29,8 +32,8 @@ export class SimIamAllowSides {
|
|
|
29
32
|
return this.resourceAllowed;
|
|
30
33
|
}
|
|
31
34
|
/**
|
|
32
|
-
* Whether a resource-based policy allowed the request
|
|
33
|
-
*
|
|
35
|
+
* Whether a resource-based policy allowed the request without delegating to
|
|
36
|
+
* the caller's Account.
|
|
34
37
|
*/
|
|
35
38
|
get resourceDirect() {
|
|
36
39
|
return this.resourceDirectAllowed;
|
|
@@ -42,6 +45,13 @@ export class SimIamAllowSides {
|
|
|
42
45
|
get resourceDelegated() {
|
|
43
46
|
return this.resourceAllowed && !this.resourceDirectAllowed;
|
|
44
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Whether a resource-based policy allowed the request by naming the caller,
|
|
50
|
+
* rather than by admitting whoever the request came from.
|
|
51
|
+
*/
|
|
52
|
+
get resourceNamesCaller() {
|
|
53
|
+
return this.resourceNamesCallerAllowed;
|
|
54
|
+
}
|
|
45
55
|
}
|
|
46
56
|
/**
|
|
47
57
|
* The same-Account rule: an Allow from either side is enough.
|
|
@@ -104,6 +114,27 @@ export class SimIamMandatoryResourcePolicyRequirement {
|
|
|
104
114
|
return allows.resourceDelegated && allows.identity;
|
|
105
115
|
}
|
|
106
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* The rule for a request one service makes to another with the caller's own
|
|
119
|
+
* permissions. The caller needs the permission itself.
|
|
120
|
+
*
|
|
121
|
+
* A resource policy naming the caller still allows the request on its own, as
|
|
122
|
+
* a KMS key policy naming a Role does. A policy admitting whoever the request
|
|
123
|
+
* came from does not, because what it admits is the service. That is the
|
|
124
|
+
* difference between a key policy naming a Role and the aws/ssm key policy,
|
|
125
|
+
* which admits the Account's principals reaching KMS through Parameter Store
|
|
126
|
+
* and still leaves a Role holding only ssm:GetParameter unable to decrypt a
|
|
127
|
+
* SecureString.
|
|
128
|
+
*/
|
|
129
|
+
export class SimIamCallerPermissionRequirement {
|
|
130
|
+
/**
|
|
131
|
+
* Whether the caller holds the permission itself, or was named outright by
|
|
132
|
+
* the resource.
|
|
133
|
+
*/
|
|
134
|
+
isSatisfiedBy(allows) {
|
|
135
|
+
return allows.resourceNamesCaller || allows.identity;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
107
138
|
/**
|
|
108
139
|
* Every applicable rule at once.
|
|
109
140
|
*
|