@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
|
@@ -16,12 +16,13 @@ export declare class SimIamAllowStatements {
|
|
|
16
16
|
private readonly resourceStatements;
|
|
17
17
|
private readonly trustStatements;
|
|
18
18
|
private readonly delegatedStatements;
|
|
19
|
+
private readonly namingStatements;
|
|
19
20
|
/**
|
|
20
21
|
* Record a matching Allow against the policy side it came from.
|
|
21
22
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* the
|
|
23
|
+
* How a resource-policy Allow came to match is kept alongside it, for the
|
|
24
|
+
* rules that care. A statement can match by way of the caller's Account, by
|
|
25
|
+
* naming the caller, or by admitting whoever the request came from.
|
|
25
26
|
*/
|
|
26
27
|
record(policy: SimIamAuthZPolicySource, statement: SimIamPolicyDocumentStatement, principal: SimIamPrincipalMatch): void;
|
|
27
28
|
/**
|
|
@@ -13,12 +13,13 @@ export class SimIamAllowStatements {
|
|
|
13
13
|
resourceStatements = [];
|
|
14
14
|
trustStatements = [];
|
|
15
15
|
delegatedStatements = [];
|
|
16
|
+
namingStatements = [];
|
|
16
17
|
/**
|
|
17
18
|
* Record a matching Allow against the policy side it came from.
|
|
18
19
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* the
|
|
20
|
+
* How a resource-policy Allow came to match is kept alongside it, for the
|
|
21
|
+
* rules that care. A statement can match by way of the caller's Account, by
|
|
22
|
+
* naming the caller, or by admitting whoever the request came from.
|
|
22
23
|
*/
|
|
23
24
|
record(policy, statement, principal) {
|
|
24
25
|
if (policy.sourceType === "trust") {
|
|
@@ -27,6 +28,9 @@ export class SimIamAllowStatements {
|
|
|
27
28
|
if (principal.isAccountDelegation) {
|
|
28
29
|
this.delegatedStatements.push(statement);
|
|
29
30
|
}
|
|
31
|
+
if (principal.namesCaller) {
|
|
32
|
+
this.namingStatements.push(statement);
|
|
33
|
+
}
|
|
30
34
|
this.sideStatements(policy).push(statement);
|
|
31
35
|
}
|
|
32
36
|
/**
|
|
@@ -58,10 +62,12 @@ export class SimIamAllowStatements {
|
|
|
58
62
|
*/
|
|
59
63
|
get sides() {
|
|
60
64
|
const delegated = new Set(this.delegatedStatements);
|
|
65
|
+
const naming = new Set(this.namingStatements);
|
|
61
66
|
return new SimIamAllowSides({
|
|
62
67
|
identity: this.identityStatements.length > 0,
|
|
63
68
|
resource: this.resourceStatements.length > 0,
|
|
64
69
|
resourceDirect: this.resourceStatements.some((statement) => !delegated.has(statement)),
|
|
70
|
+
resourceNamesCaller: this.resourceStatements.some((statement) => naming.has(statement)),
|
|
65
71
|
});
|
|
66
72
|
}
|
|
67
73
|
/**
|
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
import { type SimIamAllowRequirement } from "../allow/sim-iam-allow-requirement.js";
|
|
2
2
|
import type { SimIamCallerAccount } from "../caller-account/sim-iam-caller-account.js";
|
|
3
|
+
/**
|
|
4
|
+
* What an authorization request says about the rules it is subject to, beyond
|
|
5
|
+
* the caller and the policies themselves.
|
|
6
|
+
*/
|
|
7
|
+
export interface SimIamAllowRequirementInput {
|
|
8
|
+
readonly requiresResourcePolicyAllow?: boolean | undefined;
|
|
9
|
+
readonly withCallerPermissions?: boolean | undefined;
|
|
10
|
+
}
|
|
3
11
|
/**
|
|
4
12
|
* Works out which allow rules apply to one authorization request.
|
|
5
13
|
*
|
|
6
|
-
*
|
|
7
|
-
* Allow counts: either side within one Account, both sides across
|
|
8
|
-
* The resource-owning service says whether its resource insists on
|
|
9
|
-
* which is true of a KMS key and of nothing else so far
|
|
14
|
+
* Three things decide it, and all of them have to hold. The caller's Account
|
|
15
|
+
* says whose Allow counts: either side within one Account, both sides across
|
|
16
|
+
* Accounts. The resource-owning service says whether its resource insists on
|
|
17
|
+
* allowing, which is true of a KMS key and of nothing else so far, and whether
|
|
18
|
+
* it is passing on the caller's own permissions rather than its own.
|
|
10
19
|
*/
|
|
11
20
|
export declare class SimIamAuthZAllowRequirement {
|
|
12
21
|
/**
|
|
13
22
|
* The rule a request is subject to.
|
|
14
23
|
*/
|
|
15
|
-
resolve(callerAccount: SimIamCallerAccount,
|
|
24
|
+
resolve(callerAccount: SimIamCallerAccount, input: SimIamAllowRequirementInput): SimIamAllowRequirement;
|
|
16
25
|
}
|
|
@@ -1,23 +1,27 @@
|
|
|
1
|
-
import { SimIamEveryAllowRequirement, SimIamMandatoryResourcePolicyRequirement, } from "../allow/sim-iam-allow-requirement.js";
|
|
1
|
+
import { SimIamCallerPermissionRequirement, SimIamEveryAllowRequirement, SimIamMandatoryResourcePolicyRequirement, } from "../allow/sim-iam-allow-requirement.js";
|
|
2
2
|
/**
|
|
3
3
|
* Works out which allow rules apply to one authorization request.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Allow counts: either side within one Account, both sides across
|
|
7
|
-
* The resource-owning service says whether its resource insists on
|
|
8
|
-
* which is true of a KMS key and of nothing else so far
|
|
5
|
+
* Three things decide it, and all of them have to hold. The caller's Account
|
|
6
|
+
* says whose Allow counts: either side within one Account, both sides across
|
|
7
|
+
* Accounts. The resource-owning service says whether its resource insists on
|
|
8
|
+
* allowing, which is true of a KMS key and of nothing else so far, and whether
|
|
9
|
+
* it is passing on the caller's own permissions rather than its own.
|
|
9
10
|
*/
|
|
10
11
|
export class SimIamAuthZAllowRequirement {
|
|
11
12
|
/**
|
|
12
13
|
* The rule a request is subject to.
|
|
13
14
|
*/
|
|
14
|
-
resolve(callerAccount,
|
|
15
|
-
|
|
16
|
-
return callerAccount.allowRequirement;
|
|
17
|
-
}
|
|
18
|
-
return new SimIamEveryAllowRequirement([
|
|
15
|
+
resolve(callerAccount, input) {
|
|
16
|
+
const requirements = [
|
|
19
17
|
callerAccount.allowRequirement,
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
];
|
|
19
|
+
if (input.requiresResourcePolicyAllow === true) {
|
|
20
|
+
requirements.push(new SimIamMandatoryResourcePolicyRequirement());
|
|
21
|
+
}
|
|
22
|
+
if (input.withCallerPermissions === true) {
|
|
23
|
+
requirements.push(new SimIamCallerPermissionRequirement());
|
|
24
|
+
}
|
|
25
|
+
return new SimIamEveryAllowRequirement(requirements);
|
|
22
26
|
}
|
|
23
27
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type SimAwsCredentialIdentityResolver, type SimAwsResolvedCaller } from "../../../aws/caller/sim-aws-caller-resolver.js";
|
|
2
2
|
import type { SimAwsCaller, SimAwsDefaultCaller, SimAwsPrincipal } from "../../../aws/caller/sim-aws-caller.js";
|
|
3
|
+
import type { SimAwsAmbientCaller } from "../../../aws/caller/sim-aws-ambient-caller.js";
|
|
3
4
|
import type { SimIamAuthZPolicySource } from "./sim-iam-auth-z-context.js";
|
|
4
5
|
export interface SimIamAuthZCallerContext {
|
|
5
6
|
readonly caller: SimAwsResolvedCaller;
|
|
@@ -23,13 +24,18 @@ export interface SimIamAuthZCallerContextBuilderProperties {
|
|
|
23
24
|
* The caller this simulation attributes an unattributed request to.
|
|
24
25
|
*/
|
|
25
26
|
readonly defaultCaller?: SimAwsDefaultCaller | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Where an unattributed request looks before the default.
|
|
29
|
+
*/
|
|
30
|
+
readonly ambientCaller?: SimAwsAmbientCaller | undefined;
|
|
26
31
|
}
|
|
27
32
|
/**
|
|
28
33
|
* Resolves the caller and any policy sources implied by that caller.
|
|
29
34
|
*
|
|
30
|
-
* A request that omits a caller is decided as the
|
|
31
|
-
*
|
|
32
|
-
* anonymous caller falls back
|
|
35
|
+
* A request that omits a caller is decided as the ambient caller of the run-as
|
|
36
|
+
* block it is inside, then as the simulation's default caller, and as the
|
|
37
|
+
* Account root where there is neither. An explicit anonymous caller falls back
|
|
38
|
+
* to none of them.
|
|
33
39
|
*/
|
|
34
40
|
export declare class SimIamAuthZCallerContextBuilder {
|
|
35
41
|
private readonly callerResolver;
|
|
@@ -2,9 +2,10 @@ import { SimAwsCallerResolver, } from "../../../aws/caller/sim-aws-caller-resolv
|
|
|
2
2
|
/**
|
|
3
3
|
* Resolves the caller and any policy sources implied by that caller.
|
|
4
4
|
*
|
|
5
|
-
* A request that omits a caller is decided as the
|
|
6
|
-
*
|
|
7
|
-
* anonymous caller falls back
|
|
5
|
+
* A request that omits a caller is decided as the ambient caller of the run-as
|
|
6
|
+
* block it is inside, then as the simulation's default caller, and as the
|
|
7
|
+
* Account root where there is neither. An explicit anonymous caller falls back
|
|
8
|
+
* to none of them.
|
|
8
9
|
*/
|
|
9
10
|
export class SimIamAuthZCallerContextBuilder {
|
|
10
11
|
callerResolver;
|
|
@@ -17,6 +18,7 @@ export class SimIamAuthZCallerContextBuilder {
|
|
|
17
18
|
this.callerResolver = new SimAwsCallerResolver({
|
|
18
19
|
credentialIdentityResolver: properties.credentialIdentityResolver,
|
|
19
20
|
defaultCaller: properties.defaultCaller,
|
|
21
|
+
ambientCaller: properties.ambientCaller,
|
|
20
22
|
});
|
|
21
23
|
}
|
|
22
24
|
/**
|
|
@@ -1,81 +1,15 @@
|
|
|
1
1
|
import type { SimArn } from "../../../aws/arn.js";
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
2
|
+
import type { SimAwsDefaultCaller, SimAwsPrincipal } from "../../../aws/caller/sim-aws-caller.js";
|
|
3
|
+
import type { SimAwsAmbientCaller } from "../../../aws/caller/sim-aws-ambient-caller.js";
|
|
4
4
|
import type { SimAwsAccountId } from "../../../aws/sim-aws-account.js";
|
|
5
5
|
import type { SimIamAccountResolver } from "../../registry/sim-iam-account-resolver.js";
|
|
6
|
-
import type {
|
|
6
|
+
import type { SimIamPolicy } from "../../policy/sim-iam-policy.js";
|
|
7
7
|
import type { SimIamRole, SimIamRoleName } from "../../role/sim-iam-role.js";
|
|
8
|
-
import type {
|
|
9
|
-
import type {
|
|
8
|
+
import type { SimIamAuthZContext, SimIamAuthZPolicySource } from "./sim-iam-auth-z-context.js";
|
|
9
|
+
import type { SimIamAuthorizationInput } from "./sim-iam-auth-z-input.js";
|
|
10
10
|
import type { SimAwsCredentialIdentityResolver } from "../../../aws/caller/sim-aws-caller-resolver.js";
|
|
11
11
|
import type { SimIamUser, SimIamUsername } from "../../user/sim-iam-user.js";
|
|
12
12
|
import type { SimIamServiceControlPolicyResolver } from "../scp/sim-iam-scp-resolver.js";
|
|
13
|
-
export interface SimIamResourcePolicyInput {
|
|
14
|
-
readonly document: SimIamPolicyDocument;
|
|
15
|
-
readonly sourceType?: Extract<SimIamAuthZPolicySourceType, "resource" | "trust">;
|
|
16
|
-
readonly policyName?: string | undefined;
|
|
17
|
-
readonly resourceArn?: string | undefined;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Entry-point input for sim IAM allow/deny authorization.
|
|
21
|
-
*/
|
|
22
|
-
export interface SimIamAuthorizationInput {
|
|
23
|
-
readonly action: string;
|
|
24
|
-
readonly resource: string;
|
|
25
|
-
/**
|
|
26
|
-
* The Region the request was made in, which sim IAM derives
|
|
27
|
-
* `aws:RequestedRegion` from.
|
|
28
|
-
*
|
|
29
|
-
* A simulated service supplies its own Region. A request reaching one
|
|
30
|
-
* through its command handlers therefore carries it, with the caller saying
|
|
31
|
-
* nothing. IAM itself belongs to an Account and has no Region to fall back
|
|
32
|
-
* on. A request arriving without one leaves the key out of the condition
|
|
33
|
-
* context, and a statement conditioned on it matches nothing.
|
|
34
|
-
*/
|
|
35
|
-
readonly region?: AwsRegionName | undefined;
|
|
36
|
-
/**
|
|
37
|
-
* Condition values known by the service handling the simulated request, such
|
|
38
|
-
* as S3 object tags. Sim IAM automatically supplies global condition values
|
|
39
|
-
* that it can derive itself, such as AWS:PrincipalArn.
|
|
40
|
-
*
|
|
41
|
-
* Context-key names are matched case-insensitively by the condition matcher,
|
|
42
|
-
* while string values remain case-sensitive. IAM-derived values take
|
|
43
|
-
* precedence over supplied values for equivalent keys.
|
|
44
|
-
*/
|
|
45
|
-
readonly conditionContext?: Readonly<Record<string, SimIamConditionValue>> | undefined;
|
|
46
|
-
/**
|
|
47
|
-
* Condition values the service can only supply once IAM has resolved the
|
|
48
|
-
* caller, such as the Account a KMS request came from.
|
|
49
|
-
*
|
|
50
|
-
* These are combined with the values supplied directly, and IAM-derived
|
|
51
|
-
* values still take precedence over both.
|
|
52
|
-
*/
|
|
53
|
-
readonly callerConditions?: SimIamCallerConditionSource | undefined;
|
|
54
|
-
/**
|
|
55
|
-
* Simulated request caller.
|
|
56
|
-
*
|
|
57
|
-
* If credentials are supplied, they are authenticated before policy
|
|
58
|
-
* evaluation. If omitted, authorization defaults to the Account root.
|
|
59
|
-
*/
|
|
60
|
-
readonly caller?: SimAwsCaller | undefined;
|
|
61
|
-
/**
|
|
62
|
-
* Resource policies supplied by the service that owns the target resource.
|
|
63
|
-
*
|
|
64
|
-
* Resource policies are not loaded from IAM's managed-policy store. They are
|
|
65
|
-
* supplied by the target service, such as an S3 Bucket policy or other
|
|
66
|
-
* service-level resource policy.
|
|
67
|
-
*/
|
|
68
|
-
readonly resourcePolicies?: readonly SimIamResourcePolicyInput[] | undefined;
|
|
69
|
-
/**
|
|
70
|
-
* Whether the resource's own policy must allow the request.
|
|
71
|
-
*
|
|
72
|
-
* Off by default, which is the ordinary AWS rule: a resource with no policy
|
|
73
|
-
* leaves the decision to the caller's identity policies. A service sets it
|
|
74
|
-
* for a resource whose policy is mandatory and is the root of trust for
|
|
75
|
-
* reaching it, which in AWS means a KMS key policy.
|
|
76
|
-
*/
|
|
77
|
-
readonly requiresResourcePolicyAllow?: boolean | undefined;
|
|
78
|
-
}
|
|
79
13
|
interface SimIamAuthZContextBuilderProperties {
|
|
80
14
|
/**
|
|
81
15
|
* The Account whose IAM is evaluating the request.
|
|
@@ -86,6 +20,10 @@ interface SimIamAuthZContextBuilderProperties {
|
|
|
86
20
|
readonly users: ReadonlyMap<SimIamUsername, SimIamUser>;
|
|
87
21
|
readonly credentialIdentityResolver: SimAwsCredentialIdentityResolver;
|
|
88
22
|
readonly defaultCaller?: SimAwsDefaultCaller | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Where a request naming no caller looks before the default.
|
|
25
|
+
*/
|
|
26
|
+
readonly ambientCaller?: SimAwsAmbientCaller | undefined;
|
|
89
27
|
/**
|
|
90
28
|
* Resolves other Accounts' IAM in the same simulation, for the identity side
|
|
91
29
|
* of a cross-Account request.
|
|
@@ -47,6 +47,7 @@ export class SimIamAuthZContextBuilder {
|
|
|
47
47
|
accountRootPrincipal: makeSimAwsAccountRootPrincipal(properties.accountId),
|
|
48
48
|
credentialIdentityResolver: properties.credentialIdentityResolver,
|
|
49
49
|
defaultCaller: properties.defaultCaller,
|
|
50
|
+
ambientCaller: properties.ambientCaller,
|
|
50
51
|
});
|
|
51
52
|
this.identityPolicyCoordinator = new SimIamAuthZIdentityPolicyCoordinator({
|
|
52
53
|
policies: properties.policies,
|
|
@@ -75,7 +76,7 @@ export class SimIamAuthZContextBuilder {
|
|
|
75
76
|
],
|
|
76
77
|
resourcePolicies: this.resourcePolicySources(input),
|
|
77
78
|
serviceControlPolicies: this.scpSourceBuilder.build(callerContext.caller),
|
|
78
|
-
allowRequirement: this.allowRequirement.resolve(callerAccount, input
|
|
79
|
+
allowRequirement: this.allowRequirement.resolve(callerAccount, input),
|
|
79
80
|
action: input.action,
|
|
80
81
|
resource: input.resource,
|
|
81
82
|
conditionContext: this.conditionContext(input, callerContext.caller),
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { AwsRegionName } from "../../../aws/sim-aws-region.js";
|
|
2
|
+
import type { SimAwsCaller } from "../../../aws/caller/sim-aws-caller.js";
|
|
3
|
+
import type { SimIamConditionValue, SimIamPolicyDocument } from "../../policy/sim-iam-policy.js";
|
|
4
|
+
import type { SimIamCallerConditionSource } from "./sim-iam-caller-condition-source.js";
|
|
5
|
+
import type { SimIamAuthZPolicySourceType } from "./sim-iam-auth-z-context.js";
|
|
6
|
+
export interface SimIamResourcePolicyInput {
|
|
7
|
+
readonly document: SimIamPolicyDocument;
|
|
8
|
+
readonly sourceType?: Extract<SimIamAuthZPolicySourceType, "resource" | "trust">;
|
|
9
|
+
readonly policyName?: string | undefined;
|
|
10
|
+
readonly resourceArn?: string | undefined;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Entry-point input for sim IAM allow/deny authorization.
|
|
14
|
+
*/
|
|
15
|
+
export interface SimIamAuthorizationInput {
|
|
16
|
+
readonly action: string;
|
|
17
|
+
readonly resource: string;
|
|
18
|
+
/**
|
|
19
|
+
* The Region the request was made in, which sim IAM derives
|
|
20
|
+
* `aws:RequestedRegion` from.
|
|
21
|
+
*
|
|
22
|
+
* A simulated service supplies its own Region. A request reaching one
|
|
23
|
+
* through its command handlers therefore carries it, with the caller saying
|
|
24
|
+
* nothing. IAM itself belongs to an Account and has no Region to fall back
|
|
25
|
+
* on. A request arriving without one leaves the key out of the condition
|
|
26
|
+
* context, and a statement conditioned on it matches nothing.
|
|
27
|
+
*/
|
|
28
|
+
readonly region?: AwsRegionName | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Condition values known by the service handling the simulated request, such
|
|
31
|
+
* as S3 object tags. Sim IAM automatically supplies global condition values
|
|
32
|
+
* that it can derive itself, such as AWS:PrincipalArn.
|
|
33
|
+
*
|
|
34
|
+
* Context-key names are matched case-insensitively by the condition matcher,
|
|
35
|
+
* while string values remain case-sensitive. IAM-derived values take
|
|
36
|
+
* precedence over supplied values for equivalent keys.
|
|
37
|
+
*/
|
|
38
|
+
readonly conditionContext?: Readonly<Record<string, SimIamConditionValue>> | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Condition values the service can only supply once IAM has resolved the
|
|
41
|
+
* caller, such as the Account a KMS request came from.
|
|
42
|
+
*
|
|
43
|
+
* These are combined with the values supplied directly, and IAM-derived
|
|
44
|
+
* values still take precedence over both.
|
|
45
|
+
*/
|
|
46
|
+
readonly callerConditions?: SimIamCallerConditionSource | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Simulated request caller.
|
|
49
|
+
*
|
|
50
|
+
* If credentials are supplied, they are authenticated before policy
|
|
51
|
+
* evaluation. If omitted, authorization falls back to the ambient caller of
|
|
52
|
+
* the run-as block the request is inside, then to the simulation's default
|
|
53
|
+
* caller, and then to the Account root.
|
|
54
|
+
*/
|
|
55
|
+
readonly caller?: SimAwsCaller | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* Resource policies supplied by the service that owns the target resource.
|
|
58
|
+
*
|
|
59
|
+
* Resource policies are not loaded from IAM's managed-policy store. They are
|
|
60
|
+
* supplied by the target service, such as an S3 Bucket policy or other
|
|
61
|
+
* service-level resource policy.
|
|
62
|
+
*/
|
|
63
|
+
readonly resourcePolicies?: readonly SimIamResourcePolicyInput[] | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* Whether the resource's own policy must allow the request.
|
|
66
|
+
*
|
|
67
|
+
* Off by default, which is the ordinary AWS rule: a resource with no policy
|
|
68
|
+
* leaves the decision to the caller's identity policies. A service sets it
|
|
69
|
+
* for a resource whose policy is mandatory and is the root of trust for
|
|
70
|
+
* reaching it, which in AWS means a KMS key policy.
|
|
71
|
+
*/
|
|
72
|
+
readonly requiresResourcePolicyAllow?: boolean | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* Whether the service is making this request with the caller's own
|
|
75
|
+
* permissions rather than with its own.
|
|
76
|
+
*
|
|
77
|
+
* Off by default, which is the ordinary AWS rule. Within one Account a
|
|
78
|
+
* resource policy admitting the caller is enough on its own. A service sets
|
|
79
|
+
* this where it reaches another service as the caller. A resource policy
|
|
80
|
+
* that admits whoever the request came from then grants nothing by itself,
|
|
81
|
+
* because what it admits is the service. Reading a SecureString needs
|
|
82
|
+
* kms:Decrypt for that reason, even under the aws/ssm key, whose policy
|
|
83
|
+
* admits the Account's principals reaching KMS through Parameter Store. A
|
|
84
|
+
* resource policy naming the caller still allows the request on its own.
|
|
85
|
+
*/
|
|
86
|
+
readonly withCallerPermissions?: boolean | undefined;
|
|
87
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -44,9 +44,12 @@ export declare class SimIamPolicyPrincipalMatcher {
|
|
|
44
44
|
/**
|
|
45
45
|
* Compare an AWS principal pattern with the resolved caller.
|
|
46
46
|
*
|
|
47
|
-
* The wildcard matches both authenticated and anonymous requests
|
|
48
|
-
* forms require an ARN-based caller. Account delegation
|
|
49
|
-
* the account ID derived by the caller resolver.
|
|
47
|
+
* The wildcard matches both authenticated and anonymous requests, and names
|
|
48
|
+
* neither. Other AWS forms require an ARN-based caller. Account delegation
|
|
49
|
+
* forms compare against the account ID derived by the caller resolver. An
|
|
50
|
+
* ARN carrying a wildcard of its own admits a set of principals without
|
|
51
|
+
* naming one, so it counts as a match on the same terms as `*`. Real IAM
|
|
52
|
+
* accepts no wildcard inside a Principal ARN at all.
|
|
50
53
|
*
|
|
51
54
|
* A pattern is compared against two ARNs, because an assumed-role session
|
|
52
55
|
* has two. The session ARN is the caller, and the Role behind it is the
|
|
@@ -55,6 +58,11 @@ export declare class SimIamPolicyPrincipalMatcher {
|
|
|
55
58
|
* that is not a session, so one comparison happens in that case.
|
|
56
59
|
*/
|
|
57
60
|
private awsPatternMatches;
|
|
61
|
+
/**
|
|
62
|
+
* The kind of match an ARN principal pattern makes, by whether it names one
|
|
63
|
+
* principal or admits a set of them.
|
|
64
|
+
*/
|
|
65
|
+
private arnPatternMatch;
|
|
58
66
|
/**
|
|
59
67
|
* Whether a principal pattern names one of the caller's ARNs.
|
|
60
68
|
*/
|
|
@@ -38,9 +38,9 @@ export class SimIamPolicyPrincipalMatcher {
|
|
|
38
38
|
return this.valueMatches(statement.principal);
|
|
39
39
|
}
|
|
40
40
|
if (statement.notPrincipal !== undefined) {
|
|
41
|
-
//
|
|
42
|
-
//
|
|
43
|
-
return SimIamPrincipalMatch.
|
|
41
|
+
// Leaving the caller out of the exclusion admits it without naming it,
|
|
42
|
+
// in the way a wildcard principal does.
|
|
43
|
+
return SimIamPrincipalMatch.everyone().when(!this.valueMatches(statement.notPrincipal).matched);
|
|
44
44
|
}
|
|
45
45
|
return SimIamPrincipalMatch.none();
|
|
46
46
|
}
|
|
@@ -78,9 +78,12 @@ export class SimIamPolicyPrincipalMatcher {
|
|
|
78
78
|
/**
|
|
79
79
|
* Compare an AWS principal pattern with the resolved caller.
|
|
80
80
|
*
|
|
81
|
-
* The wildcard matches both authenticated and anonymous requests
|
|
82
|
-
* forms require an ARN-based caller. Account delegation
|
|
83
|
-
* the account ID derived by the caller resolver.
|
|
81
|
+
* The wildcard matches both authenticated and anonymous requests, and names
|
|
82
|
+
* neither. Other AWS forms require an ARN-based caller. Account delegation
|
|
83
|
+
* forms compare against the account ID derived by the caller resolver. An
|
|
84
|
+
* ARN carrying a wildcard of its own admits a set of principals without
|
|
85
|
+
* naming one, so it counts as a match on the same terms as `*`. Real IAM
|
|
86
|
+
* accepts no wildcard inside a Principal ARN at all.
|
|
84
87
|
*
|
|
85
88
|
* A pattern is compared against two ARNs, because an assumed-role session
|
|
86
89
|
* has two. The session ARN is the caller, and the Role behind it is the
|
|
@@ -90,7 +93,7 @@ export class SimIamPolicyPrincipalMatcher {
|
|
|
90
93
|
*/
|
|
91
94
|
awsPatternMatches(pattern) {
|
|
92
95
|
if (pattern === "*") {
|
|
93
|
-
return SimIamPrincipalMatch.
|
|
96
|
+
return SimIamPrincipalMatch.everyone();
|
|
94
97
|
}
|
|
95
98
|
const caller = this.context.caller;
|
|
96
99
|
if (caller.arn === undefined) {
|
|
@@ -100,9 +103,18 @@ export class SimIamPolicyPrincipalMatcher {
|
|
|
100
103
|
if (delegatedAccountId !== undefined) {
|
|
101
104
|
return SimIamPrincipalMatch.accountDelegation().when(caller.accountId === delegatedAccountId);
|
|
102
105
|
}
|
|
103
|
-
return
|
|
106
|
+
return this.arnPatternMatch(pattern).when(this.arnMatches(pattern, caller.arn) ||
|
|
104
107
|
this.arnMatches(pattern, caller.identityPolicyArn));
|
|
105
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* The kind of match an ARN principal pattern makes, by whether it names one
|
|
111
|
+
* principal or admits a set of them.
|
|
112
|
+
*/
|
|
113
|
+
arnPatternMatch(pattern) {
|
|
114
|
+
return pattern.includes("*") || pattern.includes("?")
|
|
115
|
+
? SimIamPrincipalMatch.everyone()
|
|
116
|
+
: SimIamPrincipalMatch.direct();
|
|
117
|
+
}
|
|
106
118
|
/**
|
|
107
119
|
* Whether a principal pattern names one of the caller's ARNs.
|
|
108
120
|
*/
|
|
@@ -1,16 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* How a resource-policy statement came to apply to the caller.
|
|
3
3
|
*
|
|
4
|
-
* AWS treats these
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* AWS treats these apart. A statement naming the caller's own ARN is a grant
|
|
5
|
+
* to that principal. A statement naming the Account, as a bare account ID or a
|
|
6
|
+
* root ARN, delegates the decision to that Account's IAM and grants nothing by
|
|
7
|
+
* itself. A statement whose principal is a wildcard names nobody. It admits
|
|
8
|
+
* whoever the request came from, and a service calling with the caller's own
|
|
9
|
+
* permissions still needs IAM to allow that caller.
|
|
10
|
+
*
|
|
11
|
+
* A KMS key policy is where the difference shows. It is the whole reason the
|
|
12
|
+
* default key policy leaves a key unusable by the Account's principals until
|
|
13
|
+
* IAM allows them, and the reason the aws/ssm key leaves a SecureString
|
|
14
|
+
* unreadable to a caller holding no kms:Decrypt.
|
|
10
15
|
*/
|
|
11
16
|
export declare class SimIamPrincipalMatch {
|
|
17
|
+
/**
|
|
18
|
+
* Whether the statement applies to the caller at all.
|
|
19
|
+
*/
|
|
12
20
|
readonly matched: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Whether the statement applies by way of the caller's Account.
|
|
23
|
+
*/
|
|
13
24
|
readonly isAccountDelegation: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Whether the statement named the caller, rather than admitting it as one
|
|
27
|
+
* of a wider set.
|
|
28
|
+
*/
|
|
29
|
+
readonly namesCaller: boolean;
|
|
14
30
|
private constructor();
|
|
15
31
|
/**
|
|
16
32
|
* The statement does not apply to this caller.
|
|
@@ -24,11 +40,16 @@ export declare class SimIamPrincipalMatch {
|
|
|
24
40
|
* The statement applies by way of the caller's Account.
|
|
25
41
|
*/
|
|
26
42
|
static accountDelegation(): SimIamPrincipalMatch;
|
|
43
|
+
/**
|
|
44
|
+
* The statement applies to whoever made the request, naming nobody.
|
|
45
|
+
*/
|
|
46
|
+
static everyone(): SimIamPrincipalMatch;
|
|
27
47
|
/**
|
|
28
48
|
* The first match among alternatives, since Principal lists are an OR.
|
|
29
49
|
*
|
|
30
|
-
* A
|
|
31
|
-
*
|
|
50
|
+
* A statement naming the caller wins over one that admits it some other
|
|
51
|
+
* way, because naming the caller grants to the caller whatever else the
|
|
52
|
+
* statement says.
|
|
32
53
|
*/
|
|
33
54
|
static first(matches: readonly SimIamPrincipalMatch[]): SimIamPrincipalMatch;
|
|
34
55
|
/**
|
|
@@ -1,47 +1,72 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* How a resource-policy statement came to apply to the caller.
|
|
3
3
|
*
|
|
4
|
-
* AWS treats these
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* AWS treats these apart. A statement naming the caller's own ARN is a grant
|
|
5
|
+
* to that principal. A statement naming the Account, as a bare account ID or a
|
|
6
|
+
* root ARN, delegates the decision to that Account's IAM and grants nothing by
|
|
7
|
+
* itself. A statement whose principal is a wildcard names nobody. It admits
|
|
8
|
+
* whoever the request came from, and a service calling with the caller's own
|
|
9
|
+
* permissions still needs IAM to allow that caller.
|
|
10
|
+
*
|
|
11
|
+
* A KMS key policy is where the difference shows. It is the whole reason the
|
|
12
|
+
* default key policy leaves a key unusable by the Account's principals until
|
|
13
|
+
* IAM allows them, and the reason the aws/ssm key leaves a SecureString
|
|
14
|
+
* unreadable to a caller holding no kms:Decrypt.
|
|
10
15
|
*/
|
|
11
16
|
export class SimIamPrincipalMatch {
|
|
17
|
+
/**
|
|
18
|
+
* Whether the statement applies to the caller at all.
|
|
19
|
+
*/
|
|
12
20
|
matched;
|
|
21
|
+
/**
|
|
22
|
+
* Whether the statement applies by way of the caller's Account.
|
|
23
|
+
*/
|
|
13
24
|
isAccountDelegation;
|
|
14
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Whether the statement named the caller, rather than admitting it as one
|
|
27
|
+
* of a wider set.
|
|
28
|
+
*/
|
|
29
|
+
namesCaller;
|
|
30
|
+
constructor(matched, isAccountDelegation, namesCaller) {
|
|
15
31
|
this.matched = matched;
|
|
16
32
|
this.isAccountDelegation = isAccountDelegation;
|
|
33
|
+
this.namesCaller = namesCaller;
|
|
17
34
|
}
|
|
18
35
|
/**
|
|
19
36
|
* The statement does not apply to this caller.
|
|
20
37
|
*/
|
|
21
38
|
static none() {
|
|
22
|
-
return new SimIamPrincipalMatch(false, false);
|
|
39
|
+
return new SimIamPrincipalMatch(false, false, false);
|
|
23
40
|
}
|
|
24
41
|
/**
|
|
25
42
|
* The statement names this caller, or applies without naming an Account.
|
|
26
43
|
*/
|
|
27
44
|
static direct() {
|
|
28
|
-
return new SimIamPrincipalMatch(true, false);
|
|
45
|
+
return new SimIamPrincipalMatch(true, false, true);
|
|
29
46
|
}
|
|
30
47
|
/**
|
|
31
48
|
* The statement applies by way of the caller's Account.
|
|
32
49
|
*/
|
|
33
50
|
static accountDelegation() {
|
|
34
|
-
return new SimIamPrincipalMatch(true, true);
|
|
51
|
+
return new SimIamPrincipalMatch(true, true, false);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The statement applies to whoever made the request, naming nobody.
|
|
55
|
+
*/
|
|
56
|
+
static everyone() {
|
|
57
|
+
return new SimIamPrincipalMatch(true, false, false);
|
|
35
58
|
}
|
|
36
59
|
/**
|
|
37
60
|
* The first match among alternatives, since Principal lists are an OR.
|
|
38
61
|
*
|
|
39
|
-
* A
|
|
40
|
-
*
|
|
62
|
+
* A statement naming the caller wins over one that admits it some other
|
|
63
|
+
* way, because naming the caller grants to the caller whatever else the
|
|
64
|
+
* statement says.
|
|
41
65
|
*/
|
|
42
66
|
static first(matches) {
|
|
43
67
|
const matched = matches.filter((result) => result.matched);
|
|
44
|
-
return (matched.find((result) =>
|
|
68
|
+
return (matched.find((result) => result.namesCaller) ??
|
|
69
|
+
matched.find((result) => !result.isAccountDelegation) ??
|
|
45
70
|
matched[0] ??
|
|
46
71
|
this.none());
|
|
47
72
|
}
|