@intentius/chant-lexicon-aws 0.57.0 → 0.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agentcore/trace-fetch.d.ts +5 -4
- package/dist/agentcore/trace-fetch.d.ts.map +1 -1
- package/dist/codegen/enum-overlay.d.ts +113 -0
- package/dist/codegen/enum-overlay.d.ts.map +1 -0
- package/dist/codegen/enum-overlay.json +1843 -0
- package/dist/codegen/generate.d.ts.map +1 -1
- package/dist/integrity.json +4 -4
- package/dist/lint/audit-catalog.d.ts.map +1 -1
- package/dist/lint/audit-lineage.d.ts +10 -0
- package/dist/lint/audit-lineage.d.ts.map +1 -0
- package/dist/manifest.json +1 -1
- package/dist/meta.json +1613 -0
- package/dist/okf/types/DbCluster.md +1 -1
- package/dist/okf/types/DbInstance.md +1 -1
- package/dist/okf/types/EC2Volume.md +1 -1
- package/dist/okf/types/Function.md +1 -1
- package/dist/okf/types/Instance.md +2 -2
- package/dist/okf/types/LoadBalancer.md +1 -1
- package/dist/okf/types/ScalableTarget.md +2 -2
- package/dist/okf/types/Subscription.md +1 -1
- package/dist/okf/types/Table.md +1 -1
- package/dist/okf/types/TargetGroup.md +2 -2
- package/dist/op/activities/aws-apply.d.ts.map +1 -1
- package/dist/op/activities/floci.d.ts +3 -2
- package/dist/op/activities/floci.d.ts.map +1 -1
- package/dist/op/builders.d.ts +4 -4
- package/dist/types/index.d.ts +1587 -18
- package/package.json +2 -2
- package/src/agentcore/trace-fetch.ts +5 -4
- package/src/codegen/docs.ts +3 -3
- package/src/codegen/enum-overlay.json +1843 -0
- package/src/codegen/enum-overlay.test.ts +298 -0
- package/src/codegen/enum-overlay.ts +245 -0
- package/src/codegen/generate.ts +40 -2
- package/src/deep-observe.test.ts +23 -15
- package/src/deep-topology.test.ts +7 -3
- package/src/generated/index.d.ts +1587 -18
- package/src/generated/lexicon-aws.json +1613 -0
- package/src/index.ts +3 -3
- package/src/lint/audit-catalog.ts +5 -1
- package/src/lint/audit-lineage.ts +159 -0
- package/src/op/activities/aws-apply.ts +1 -3
- package/src/op/activities/floci.ts +3 -2
- package/src/op/builders.ts +4 -4
package/src/index.ts
CHANGED
|
@@ -28,9 +28,9 @@ export type { AwsReceiptStoreOptions, ReceiptRowObservation } from "./receipt-st
|
|
|
28
28
|
// Typed Op step-builder wrappers (chant #1288 Stage 2) — awsApply/awsDelete/
|
|
29
29
|
// flociUp/flociDown with authoring-time types derived from this lexicon's
|
|
30
30
|
// own *Args interfaces (see ./op/builders.ts's module doc for why these live
|
|
31
|
-
// here rather than in core
|
|
32
|
-
//
|
|
33
|
-
//
|
|
31
|
+
// here rather than in core). Opt-in: `@intentius/chant/op`'s same-named
|
|
32
|
+
// exports are core's original untyped builders, unchanged, for
|
|
33
|
+
// cloud-agnostic authoring.
|
|
34
34
|
export { awsApply, awsDelete, flociUp, flociDown } from "./op/builders";
|
|
35
35
|
|
|
36
36
|
// Serializer
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* #350); core keeps only the generic catalog machinery + cross-cutting ids.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { auditRule, type RuleMeta, type Authority } from "@intentius/chant/audit/catalog";
|
|
8
|
+
import { auditRule, type RuleMeta, type Authority, applyLineage } from "@intentius/chant/audit/catalog";
|
|
9
|
+
import { awsAuditLineage } from "./audit-lineage";
|
|
9
10
|
|
|
10
11
|
/** AWS Well-Architected Security Pillar — the authority chant cites for AWS security findings. */
|
|
11
12
|
const AWS_SEC: Authority = {
|
|
@@ -90,3 +91,6 @@ export const awsAuditCatalog: Record<string, RuleMeta> = {
|
|
|
90
91
|
WAW068: auditRule("WAW068", "report-only", "guidance", "VPN Gateway or Transit Gateway has only one attached VPN Connection", "Attach a second VPNConnection (ideally to a separate Customer Gateway) for redundancy.", { category: "best-practice" }),
|
|
91
92
|
WAW069: auditRule("WAW069", "merge-worthy", "guidance", "Template references a condition it never declares", "Declare the condition in the Conditions section (new Condition(...)), or fix the referenced name.", { category: "correctness" }),
|
|
92
93
|
};
|
|
94
|
+
|
|
95
|
+
// Prior art credits live beside the rules in ./audit-lineage.ts (see core audit/prior-art.ts).
|
|
96
|
+
applyLineage(awsAuditCatalog, awsAuditLineage);
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prior art for these audit rules: the open-source tools whose checks cover the
|
|
3
|
+
* same condition, credited per rule. See packages/core/src/audit/prior-art.ts for
|
|
4
|
+
* the registry, the relation vocabulary, and why this is credit rather than
|
|
5
|
+
* authority. Kept by hand; the prior-art sweep (scripts/prior-art-sweep.ts) reports
|
|
6
|
+
* when a credited tool's index no longer lists a rule cited here.
|
|
7
|
+
*/
|
|
8
|
+
import type { Lineage } from "@intentius/chant/audit/catalog";
|
|
9
|
+
|
|
10
|
+
export const awsAuditLineage: Record<string, Lineage[]> = {
|
|
11
|
+
WAW010: [
|
|
12
|
+
{ tool: "cfn-lint", rule: "W3005", url: "https://github.com/aws-cloudformation/cfn-lint/blob/main/docs/rules.md#W3005", relation: "equivalent" },
|
|
13
|
+
],
|
|
14
|
+
WAW011: [
|
|
15
|
+
{ tool: "cfn-lint", rule: "W2531", url: "https://github.com/aws-cloudformation/cfn-lint/blob/main/docs/rules.md#W2531", relation: "equivalent" },
|
|
16
|
+
{ tool: "checkov", rule: "CKV_AWS_363", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "equivalent" },
|
|
17
|
+
],
|
|
18
|
+
WAW017: [
|
|
19
|
+
{ tool: "kics", rule: "Lambda Function Without Tags", url: "https://docs.kics.io/latest/queries/cloudformation-queries/aws/8df8e857-bd59-44fa-9f4c-d77594b95b46/", relation: "extends" },
|
|
20
|
+
{ tool: "kics", rule: "EFS Without Tags", url: "https://docs.kics.io/latest/queries/cloudformation-queries/aws/08e39832-5e42-4304-98a0-aa5b43393162/", relation: "extends" },
|
|
21
|
+
],
|
|
22
|
+
WAW018: [
|
|
23
|
+
{ tool: "guard-rules-registry", rule: "S3_BUCKET_LEVEL_PUBLIC_ACCESS_PROHIBITED", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/amazon_s3/s3_bucket_level_public_access_prohibited.guard", relation: "equivalent" },
|
|
24
|
+
{ tool: "checkov", rule: "CKV_AWS_53", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "extends" },
|
|
25
|
+
{ tool: "checkov", rule: "CKV_AWS_56", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "extends" },
|
|
26
|
+
],
|
|
27
|
+
WAW019: [
|
|
28
|
+
{ tool: "guard-rules-registry", rule: "RESTRICTED_INCOMING_TRAFFIC", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/amazon_ec2/restricted_common_ports.guard", relation: "overlaps" },
|
|
29
|
+
{ tool: "kics", rule: "EC2 Sensitive Port Is Publicly Exposed", url: "https://docs.kics.io/latest/queries/cloudformation-queries/aws/494b03d3-bf40-4464-8524-7c56ad0700ed/", relation: "overlaps" },
|
|
30
|
+
{ tool: "checkov", rule: "CKV_AWS_24", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "extends" },
|
|
31
|
+
],
|
|
32
|
+
WAW020: [
|
|
33
|
+
{ tool: "checkov", rule: "CKV_AWS_63", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "equivalent" },
|
|
34
|
+
{ tool: "cfn-nag", rule: "F4", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/IamPolicyWildcardActionRule.rb", relation: "overlaps" },
|
|
35
|
+
{ tool: "guard-rules-registry", rule: "IAM_ROLE_NO_WILDCARD_ACTIONS_ON_PERMISSIONS", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/iam/iam_role_no_wildcard_actions_on_permissions.guard", relation: "overlaps" },
|
|
36
|
+
],
|
|
37
|
+
WAW021: [
|
|
38
|
+
{ tool: "cfn-nag", rule: "F27", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/RDSDBInstanceStorageEncryptedRule.rb", relation: "equivalent" },
|
|
39
|
+
{ tool: "checkov", rule: "CKV_AWS_16", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "equivalent" },
|
|
40
|
+
{ tool: "guard-rules-registry", rule: "RDS_STORAGE_ENCRYPTED", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/amazon_rds/rds_storage_encrypted.guard", relation: "equivalent" },
|
|
41
|
+
],
|
|
42
|
+
WAW022: [
|
|
43
|
+
{ tool: "cfn-nag", rule: "W89", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/LambdaFunctionInsideVPCRule.rb", relation: "equivalent" },
|
|
44
|
+
{ tool: "checkov", rule: "CKV_AWS_117", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "equivalent" },
|
|
45
|
+
{ tool: "guard-rules-registry", rule: "LAMBDA_INSIDE_VPC", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/lambda/lambda_inside_vpc.guard", relation: "equivalent" },
|
|
46
|
+
],
|
|
47
|
+
WAW023: [
|
|
48
|
+
{ tool: "checkov", rule: "CKV_AWS_68", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "equivalent" },
|
|
49
|
+
{ tool: "kics", rule: "CloudFront Without WAF", url: "https://docs.kics.io/latest/queries/cloudformation-queries/aws/0f139403-303f-467c-96bd-e717e6cfd62d/", relation: "equivalent" },
|
|
50
|
+
],
|
|
51
|
+
WAW024: [
|
|
52
|
+
{ tool: "cfn-nag", rule: "W52", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/ElasticLoadBalancerV2AccessLoggingRule.rb", relation: "equivalent" },
|
|
53
|
+
{ tool: "checkov", rule: "CKV_AWS_91", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "equivalent" },
|
|
54
|
+
{ tool: "kics", rule: "ELBv2 ALB Access Log Disabled", url: "https://docs.kics.io/latest/queries/cloudformation-queries/aws/c62e8b7d-1fdf-4050-ac4c-76ba9e1d9621/", relation: "equivalent" },
|
|
55
|
+
],
|
|
56
|
+
WAW025: [
|
|
57
|
+
{ tool: "cfn-nag", rule: "W47", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/SnsTopicKmsMasterKeyIdRule.rb", relation: "equivalent" },
|
|
58
|
+
{ tool: "checkov", rule: "CKV_AWS_26", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "equivalent" },
|
|
59
|
+
{ tool: "guard-rules-registry", rule: "SNS_ENCRYPTED_KMS", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/amazon_sns/sns_encrypted_kms.guard", relation: "equivalent" },
|
|
60
|
+
],
|
|
61
|
+
WAW026: [
|
|
62
|
+
{ tool: "checkov", rule: "CKV_AWS_27", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "equivalent" },
|
|
63
|
+
{ tool: "kics", rule: "SQS With SSE Disabled", url: "https://docs.kics.io/latest/queries/cloudformation-queries/aws/12726829-93ed-4d51-9cbe-13423f4299e1/", relation: "equivalent" },
|
|
64
|
+
{ tool: "cfn-nag", rule: "W48", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/SqsQueueKmsMasterKeyIdRule.rb", relation: "overlaps" },
|
|
65
|
+
],
|
|
66
|
+
WAW027: [
|
|
67
|
+
{ tool: "cfn-nag", rule: "W78", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/DynamoDBBackupRule.rb", relation: "equivalent" },
|
|
68
|
+
{ tool: "checkov", rule: "CKV_AWS_28", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "equivalent" },
|
|
69
|
+
{ tool: "guard-rules-registry", rule: "DYNAMODB_PITR_ENABLED", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/dynamodb/dynamodb_pitr_enabled.guard", relation: "equivalent" },
|
|
70
|
+
],
|
|
71
|
+
WAW028: [
|
|
72
|
+
{ tool: "cfn-nag", rule: "F1", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/EbsVolumeHasSseRule.rb", relation: "equivalent" },
|
|
73
|
+
{ tool: "checkov", rule: "CKV_AWS_3", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "equivalent" },
|
|
74
|
+
{ tool: "guard-rules-registry", rule: "ENCRYPTED_VOLUMES", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/amazon_ec2/encrypted_volumes.guard", relation: "equivalent" },
|
|
75
|
+
],
|
|
76
|
+
WAW029: [
|
|
77
|
+
{ tool: "cfn-lint", rule: "E3005", url: "https://github.com/aws-cloudformation/cfn-lint/blob/main/docs/rules.md#E3005", relation: "equivalent" },
|
|
78
|
+
],
|
|
79
|
+
WAW032: [
|
|
80
|
+
{ tool: "checkov", rule: "CKV_AWS_97", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "equivalent" },
|
|
81
|
+
{ tool: "kics", rule: "EFS Volume With Disabled Transit Encryption", url: "https://docs.kics.io/latest/queries/cloudformation-queries/aws/c1282e03-b285-4637-aee7-eefe3a7bb658/", relation: "equivalent" },
|
|
82
|
+
],
|
|
83
|
+
WAW038: [
|
|
84
|
+
{ tool: "cfn-nag", rule: "F22", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/RDSInstancePubliclyAccessibleRule.rb", relation: "equivalent" },
|
|
85
|
+
{ tool: "checkov", rule: "CKV_AWS_17", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "equivalent" },
|
|
86
|
+
{ tool: "kics", rule: "RDS DB Instance Publicly Accessible", url: "https://docs.kics.io/latest/queries/cloudformation-queries/aws/de38e1d5-54cb-4111-a868-6f7722695007/", relation: "equivalent" },
|
|
87
|
+
],
|
|
88
|
+
WAW039: [
|
|
89
|
+
{ tool: "cfn-nag", rule: "W75", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/RDSInstanceBackupRetentionPeriodRule.rb", relation: "equivalent" },
|
|
90
|
+
{ tool: "guard-rules-registry", rule: "DB_INSTANCE_BACKUP_ENABLED", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/amazon_rds/db_instance_backup_enabled.guard", relation: "equivalent" },
|
|
91
|
+
{ tool: "kics", rule: "RDS With Backup Disabled", url: "https://docs.kics.io/latest/queries/cloudformation-queries/aws/8c415f6f-7b90-4a27-a44a-51047e1506f9/", relation: "equivalent" },
|
|
92
|
+
],
|
|
93
|
+
WAW040: [
|
|
94
|
+
{ tool: "cfn-nag", rule: "F80", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/RDSInstanceDeletionProtectionRule.rb", relation: "equivalent" },
|
|
95
|
+
{ tool: "guard-rules-registry", rule: "RDS_INSTANCE_DELETION_PROTECTION_ENABLED", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/amazon_rds/rds_instance_deletion_protection_enabled.guard", relation: "equivalent" },
|
|
96
|
+
{ tool: "kics", rule: "RDS DB Instance With Deletion Protection Disabled", url: "https://docs.kics.io/latest/queries/cloudformation-queries/aws/2c161e58-cb52-454f-abea-6470c37b5e6e/", relation: "equivalent" },
|
|
97
|
+
],
|
|
98
|
+
WAW042: [
|
|
99
|
+
{ tool: "guard-rules-registry", rule: "S3_BUCKET_SSL_REQUESTS_ONLY", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/amazon_s3/s3_bucket_ssl_requests_only.guard", relation: "equivalent" },
|
|
100
|
+
{ tool: "kics", rule: "S3 Bucket Without SSL In Write Actions", url: "https://docs.kics.io/latest/queries/cloudformation-queries/aws/38c64e76-c71e-4d92-a337-60174d1de1c9/", relation: "overlaps" },
|
|
101
|
+
],
|
|
102
|
+
WAW043: [
|
|
103
|
+
{ tool: "cfn-nag", rule: "F19", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/KMSKeyRotationRule.rb", relation: "equivalent" },
|
|
104
|
+
{ tool: "checkov", rule: "CKV_AWS_7", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "equivalent" },
|
|
105
|
+
{ tool: "guard-rules-registry", rule: "CMK_BACKING_KEY_ROTATION_ENABLED", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/aws_kms/cmk_backing_key_rotation_enabled.guard", relation: "equivalent" },
|
|
106
|
+
],
|
|
107
|
+
WAW044: [
|
|
108
|
+
{ tool: "checkov", rule: "CKV_AWS_2", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "overlaps" },
|
|
109
|
+
{ tool: "cfn-nag", rule: "W56", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/ElasticLoadBalancerV2ListenerProtocolRule.rb", relation: "overlaps" },
|
|
110
|
+
],
|
|
111
|
+
WAW045: [
|
|
112
|
+
{ tool: "cfn-nag", rule: "W55", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/ElasticLoadBalancerV2ListenerSslPolicyRule.rb", relation: "equivalent" },
|
|
113
|
+
{ tool: "checkov", rule: "CKV_AWS_103", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "equivalent" },
|
|
114
|
+
{ tool: "guard-rules-registry", rule: "ELBV2_LISTENER_SSL_POLICY_RULE", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/elastic_load_balancing_v2/elbv2_listener_ssl_policy_rule.guard", relation: "equivalent" },
|
|
115
|
+
],
|
|
116
|
+
WAW049: [
|
|
117
|
+
{ tool: "cfn-nag", rule: "W2", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/SecurityGroupIngressOpenToWorldRule.rb", relation: "overlaps" },
|
|
118
|
+
{ tool: "guard-rules-registry", rule: "EC2_SECURITY_GROUP_INGRESS_OPEN_TO_WORLD_RULE", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/amazon_ec2/ec2_security_group_ingress_open_to_world_rule.guard", relation: "overlaps" },
|
|
119
|
+
{ tool: "kics", rule: "Unrestricted Security Group Ingress", url: "https://docs.kics.io/latest/queries/cloudformation-queries/aws/4a1e6b34-1008-4e61-a5f2-1f7c276f8d14/", relation: "overlaps" },
|
|
120
|
+
],
|
|
121
|
+
WAW052: [
|
|
122
|
+
{ tool: "cfn-nag", rule: "F78", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/CognitoUserPoolMfaConfigurationOnorOptionalRule.rb", relation: "overlaps" },
|
|
123
|
+
{ tool: "guard-rules-registry", rule: "COGNITO_USER_POOL_MFA_CONFIGURATION_RULE", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/aws_cognito/cognito_user_pool_mfa_configuration_rule.guard", relation: "overlaps" },
|
|
124
|
+
{ tool: "kics", rule: "Cognito UserPool Without MFA", url: "https://docs.kics.io/latest/queries/cloudformation-queries/aws/74a18d1a-cf02-4a31-8791-ed0967ad7fdc/", relation: "overlaps" },
|
|
125
|
+
],
|
|
126
|
+
WAW053: [
|
|
127
|
+
{ tool: "cfn-nag", rule: "W79", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/ECRRepositoryScanOnPushRule.rb", relation: "equivalent" },
|
|
128
|
+
{ tool: "checkov", rule: "CKV_AWS_163", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "equivalent" },
|
|
129
|
+
{ tool: "guard-rules-registry", rule: "ECR_REPO_SCAN_ON_PUSH", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/aws_ecr/ecr_repo_scan_on_push_rule.guard", relation: "equivalent" },
|
|
130
|
+
],
|
|
131
|
+
WAW054: [
|
|
132
|
+
{ tool: "checkov", rule: "CKV_AWS_51", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "equivalent" },
|
|
133
|
+
{ tool: "kics", rule: "ECR Image Tag Not Immutable", url: "https://docs.kics.io/latest/queries/cloudformation-queries/aws/33f41d31-86b1-46a4-81f7-9c9a671f59ac/", relation: "equivalent" },
|
|
134
|
+
],
|
|
135
|
+
WAW055: [
|
|
136
|
+
{ tool: "cfn-nag", rule: "W86", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/LogsLogGroupRetentionRule.rb", relation: "equivalent" },
|
|
137
|
+
{ tool: "checkov", rule: "CKV_AWS_66", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "equivalent" },
|
|
138
|
+
{ tool: "guard-rules-registry", rule: "CW_LOGGROUP_RETENTION_PERIOD_CHECK", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/cloudwatch/cw_loggroup_retention_period_check.guard", relation: "equivalent" },
|
|
139
|
+
],
|
|
140
|
+
WAW058: [
|
|
141
|
+
{ tool: "guard-rules-registry", rule: "MULTI_REGION_CLOUD_TRAIL_ENABLED", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/cloudtrail/multi_region_cloud_trail_enabled.guard", relation: "overlaps" },
|
|
142
|
+
{ tool: "checkov", rule: "CKV_AWS_67", url: "https://www.checkov.io/5.Policy%20Index/cloudformation.html", relation: "overlaps" },
|
|
143
|
+
{ tool: "kics", rule: "CloudTrail Logging Disabled", url: "https://docs.kics.io/latest/queries/cloudformation-queries/aws/5c0b06d5-b7a4-484c-aeb0-75a836269ff0/", relation: "overlaps" },
|
|
144
|
+
],
|
|
145
|
+
WAW059: [
|
|
146
|
+
{ tool: "cfn-nag", rule: "W12", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/IamPolicyWildcardResourceRule.rb", relation: "overlaps" },
|
|
147
|
+
{ tool: "cfn-nag", rule: "W11", url: "https://github.com/stelligent/cfn_nag/blob/master/lib/cfn-nag/custom_rules/IamRoleWildcardResourceOnPermissionsPolicyRule.rb", relation: "overlaps" },
|
|
148
|
+
{ tool: "guard-rules-registry", rule: "IAM_POLICYDOCUMENT_NO_WILDCARD_RESOURCE", url: "https://github.com/aws-cloudformation/aws-guard-rules-registry/blob/main/rules/aws/iam/iam_policydocument_no_wildcard_resource.guard", relation: "overlaps" },
|
|
149
|
+
],
|
|
150
|
+
WAW061: [
|
|
151
|
+
{ tool: "cfn-lint", rule: "E3059", url: "https://github.com/aws-cloudformation/cfn-lint/blob/main/docs/rules.md#E3059", relation: "equivalent" },
|
|
152
|
+
],
|
|
153
|
+
WAW062: [
|
|
154
|
+
{ tool: "cfn-lint", rule: "E3019", url: "https://github.com/aws-cloudformation/cfn-lint/blob/main/docs/rules.md#E3019", relation: "overlaps" },
|
|
155
|
+
],
|
|
156
|
+
WAW069: [
|
|
157
|
+
{ tool: "cfn-lint", rule: "E8002", url: "https://github.com/aws-cloudformation/cfn-lint/blob/main/docs/rules.md#E8002", relation: "equivalent" },
|
|
158
|
+
],
|
|
159
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
|
-
import {
|
|
2
|
+
import { sleep } from "@intentius/chant/op";
|
|
3
3
|
import { awsDeployCapabilitiesForBody } from "../../components/cloud-executor.js";
|
|
4
4
|
import { resolveEndpointOverride } from "../../api/read-client.js";
|
|
5
5
|
import { ownershipStackTagsForBody } from "../../ownership.js";
|
|
@@ -128,7 +128,6 @@ export async function waitForStackSettled(
|
|
|
128
128
|
const deadline = Date.now() + opts.timeoutMs;
|
|
129
129
|
while (Date.now() < deadline) {
|
|
130
130
|
if (signal?.aborted) throw new Error("awsApply aborted");
|
|
131
|
-
safeHeartbeat({ step: "awsApply", stack: stackName });
|
|
132
131
|
const res = await http(url, cfnForm("DescribeStacks", { StackName: stackName }), signal);
|
|
133
132
|
const status = stackStatus(res.text);
|
|
134
133
|
if (status && isTerminalStatus(status)) return status;
|
|
@@ -231,7 +230,6 @@ export async function awsDelete(
|
|
|
231
230
|
const deadline = Date.now() + timeoutMs;
|
|
232
231
|
while (Date.now() < deadline) {
|
|
233
232
|
if (signal?.aborted) throw new Error("awsDelete aborted");
|
|
234
|
-
safeHeartbeat({ step: "awsDelete", stack: args.stackName });
|
|
235
233
|
const d = await http(url, cfnForm("DescribeStacks", { StackName: args.stackName }), signal);
|
|
236
234
|
if (d.status >= 300 && isStackMissing(d.text)) return { stackName: args.stackName, deleted: true };
|
|
237
235
|
const status = stackStatus(d.text);
|
|
@@ -101,8 +101,9 @@ export function flociRunCommand(args: FlociUpArgs = {}): string {
|
|
|
101
101
|
* Idempotent: reuses a running container of the same name. Waits for the health
|
|
102
102
|
* endpoint to report `readyService`, then sets `AWS_ENDPOINT_URL` + test creds in
|
|
103
103
|
* the process environment so a following `nativeApply`/`cfn-deploy` targets the
|
|
104
|
-
* emulator. Env injection
|
|
105
|
-
*
|
|
104
|
+
* emulator. Env injection works because the local executor runs every step of a
|
|
105
|
+
* run in this process; a step that runs anywhere else needs the endpoint passed
|
|
106
|
+
* to it explicitly.
|
|
106
107
|
*/
|
|
107
108
|
export async function flociUp(args: FlociUpArgs = {}, signal?: AbortSignal): Promise<{ endpoint: string }> {
|
|
108
109
|
const region = args.region ?? DEFAULT_REGION;
|
package/src/op/builders.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Typed step-builder wrappers for this lexicon's activities (chant #1288
|
|
3
3
|
* Stage 2). See `lexicons/k8s/src/op/builders.ts`'s module doc for why these
|
|
4
|
-
* live beside their `*Args` interfaces rather than in core
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* live beside their `*Args` interfaces rather than in core: core cannot
|
|
5
|
+
* import a lexicon's types (lexicons depend on core, not the reverse), so a
|
|
6
|
+
* wrapper whose `opts` IS the activity's own `*Args` interface can only sit
|
|
7
|
+
* in the lexicon that declares that interface. `opts`'s type in
|
|
8
8
|
* each wrapper below IS the activity's own `*Args` interface (via
|
|
9
9
|
* `Omit`/`WithStepRefs`) — never restated. `core`'s own
|
|
10
10
|
* `awsApply`/`awsDelete`/`flociUp`/`flociDown` are unchanged and produce
|