@intentius/chant-lexicon-gcp 0.44.1 → 0.44.2
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/composites/landing-zone.d.ts +2 -2
- package/dist/governance.d.ts +6 -6
- package/dist/integrity.json +5 -5
- package/dist/lint/post-synth/wgc501.d.ts +1 -1
- package/dist/lint/post-synth/wgc502.d.ts +1 -1
- package/dist/lint/post-synth/wgc503.d.ts +1 -1
- package/dist/manifest.json +1 -1
- package/dist/rules/wgc501.ts +1 -1
- package/dist/rules/wgc502.ts +1 -1
- package/dist/rules/wgc503.ts +1 -1
- package/package.json +2 -2
- package/src/composites/landing-zone.test.ts +1 -1
- package/src/composites/landing-zone.ts +2 -2
- package/src/governance.test.ts +1 -1
- package/src/governance.ts +7 -7
- package/src/index.ts +2 -2
- package/src/lint/audit-catalog.ts +1 -1
- package/src/lint/post-synth/wgc501.ts +1 -1
- package/src/lint/post-synth/wgc502.ts +1 -1
- package/src/lint/post-synth/wgc503.ts +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Landing-zone bootstrap composites
|
|
2
|
+
* Landing-zone bootstrap composites — the GCP slice.
|
|
3
3
|
*
|
|
4
4
|
* Fixed-shape resources for greenfield creation of the recommended
|
|
5
5
|
* governance foundation through a Config Connector management stack. The
|
|
6
6
|
* evaluability rules (EVL002/004) require composites to declare a fixed set
|
|
7
7
|
* of resources, so these carry the foundation only; arbitrary folder/project
|
|
8
8
|
* trees are authored as config with `landingZoneConfig()` (../governance.ts)
|
|
9
|
-
* and reconciled by
|
|
9
|
+
* and reconciled by an external governance reconciler, and further folders/projects are
|
|
10
10
|
* declared as ordinary resources.
|
|
11
11
|
*
|
|
12
12
|
* The pieces compose:
|
package/dist/governance.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* GCP governance authoring
|
|
3
|
-
* shape
|
|
2
|
+
* GCP governance authoring: the desired-state config
|
|
3
|
+
* shape an external governance reconciler reconciles, and `landingZoneConfig()` — the
|
|
4
4
|
* typed authoring layer that emits it.
|
|
5
5
|
*
|
|
6
6
|
* This is deliberately NOT a composite. The evaluability rules (EVL002/004,
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* data-driven folder tree walker cannot be one. The split mirrors the AWS
|
|
9
9
|
* slice (lexicons/aws/src/governance.ts): authoring emits config (this
|
|
10
10
|
* module, arbitrary cardinality); resources for greenfield bootstrap are the
|
|
11
|
-
* fixed-shape composites in `composites/landing-zone.ts`; the
|
|
11
|
+
* fixed-shape composites in `composites/landing-zone.ts`; the reconciler
|
|
12
12
|
* consumes only the config.
|
|
13
13
|
*
|
|
14
14
|
* GCP has no OrganizationRoot analog — organizations are created through
|
|
@@ -37,8 +37,8 @@ export interface FolderConfig {
|
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
* The desired-state governance tree for one GCP organization. This is the
|
|
40
|
-
* shape
|
|
41
|
-
* `AwsGovernanceConfig`. Cycles map onto the governance verbs
|
|
40
|
+
* shape an external governance reconciler loads as config — the GCP counterpart of
|
|
41
|
+
* `AwsGovernanceConfig`. Cycles map onto the governance verbs: the
|
|
42
42
|
* folder/project tree is `org-unit`, org policies are `policy-guardrail`,
|
|
43
43
|
* audit configuration is `audit-sink`.
|
|
44
44
|
*/
|
|
@@ -93,7 +93,7 @@ export interface LandingZoneConfigProps {
|
|
|
93
93
|
auditAllServices?: boolean;
|
|
94
94
|
}
|
|
95
95
|
/**
|
|
96
|
-
* Author the desired-state tree
|
|
96
|
+
* Author the desired-state tree an external governance reconciler reconciles. Pure.
|
|
97
97
|
* Throws when the tree attaches an org-policy name with no definition; only
|
|
98
98
|
* policies the tree actually attaches are included in the output.
|
|
99
99
|
*/
|
package/dist/integrity.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"algorithm": "sha256",
|
|
3
3
|
"artifacts": {
|
|
4
|
-
"manifest.json": "
|
|
4
|
+
"manifest.json": "aa850a2fa5518536aa451e735570ad0a7a633ee97f1b5e5d26979495768a3a95",
|
|
5
5
|
"meta.json": "475f10909854d059a2e2d4fb541c058803422e38b9c64bd4d6858c0623eedb8c",
|
|
6
6
|
"types/index.d.ts": "5433b54c04b57d6fda8f3d81ef92ed0aca87f7e8e5dd3ea92d8de6e62a3ccfab",
|
|
7
7
|
"rules/hardcoded-project.ts": "228631d3159e1ffcce2359c66073d4ae59bb0285f378e46e446f416aec50481c",
|
|
@@ -32,13 +32,13 @@
|
|
|
32
32
|
"rules/wgc401.ts": "287a28258a6987eacf4228df8e57cdc6d5357d5efcb35a732fb01e4b7b8ce797",
|
|
33
33
|
"rules/wgc402.ts": "4dacefea0ead25987ded5f8f5b83d02d2aa957f3816a7d0cc602cc9872257458",
|
|
34
34
|
"rules/wgc403.ts": "156a8af8f8e419d36e740f4fc6f2ed7576a1692e3286e4c9ca6f9e9ccf772965",
|
|
35
|
-
"rules/wgc501.ts": "
|
|
36
|
-
"rules/wgc502.ts": "
|
|
37
|
-
"rules/wgc503.ts": "
|
|
35
|
+
"rules/wgc501.ts": "bf99d8dc97537687fdfe9a8d5eb420172bf3279a4147311037f9c1d1f5fd4c85",
|
|
36
|
+
"rules/wgc502.ts": "6460a028f73ef31a66653954e67142079130112b70fa01a79f80464968a1b9f6",
|
|
37
|
+
"rules/wgc503.ts": "44dc51efbf9f9384b61a4e19b173b4c182557143cb59fbaf4da087e70a38f916",
|
|
38
38
|
"skills/chant-gcp.md": "6fd732fb5df2fd6561b4b704379f6779ff4ac12e3069ea4f641d9b222e0c3c81",
|
|
39
39
|
"skills/chant-gcp-security.md": "39a1c97b7425ed43b081257132449d11ce9d12f2d4755fc30d8b14bbc38f60bd",
|
|
40
40
|
"skills/chant-gcp-patterns.md": "a7ef31c1eb2f7244d3f73952c300472ef94c1eb09bd7a1003281b89299b6b704",
|
|
41
41
|
"skills/chant-gcp-gke.md": "be277019da9a722c851e47cd2dfb9c9536668948c3535fb20db7697e934c4e2b"
|
|
42
42
|
},
|
|
43
|
-
"composite": "
|
|
43
|
+
"composite": "aa9608e822f035c8219ca487c3a3dc85d29f4ea9b081853df4436aa2fe784107"
|
|
44
44
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* WGC501: Org Policy Guardrail Not Enforced
|
|
2
|
+
* WGC501: Org Policy Guardrail Not Enforced
|
|
3
3
|
*
|
|
4
4
|
* Flags OrgPolicyPolicy resources whose rules switch enforcement off or that
|
|
5
5
|
* reset the constraint to its default. A disabled org policy is the GCP
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* WGC502: Org Policy Guardrail Defines No Rules
|
|
2
|
+
* WGC502: Org Policy Guardrail Defines No Rules
|
|
3
3
|
*
|
|
4
4
|
* Flags OrgPolicyPolicy resources with no rules (and no reset). A rule-less
|
|
5
5
|
* org policy binds a constraint to nothing — the usual leftover of a
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* WGC503: Audit Logging Dropped or Scoped Down
|
|
2
|
+
* WGC503: Audit Logging Dropped or Scoped Down
|
|
3
3
|
*
|
|
4
4
|
* Flags IAMAuditConfig resources that capture nothing (no auditLogConfigs)
|
|
5
5
|
* or that carve identities out of the audit trail via exemptedMembers.
|
package/dist/manifest.json
CHANGED
package/dist/rules/wgc501.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* WGC501: Org Policy Guardrail Not Enforced
|
|
2
|
+
* WGC501: Org Policy Guardrail Not Enforced
|
|
3
3
|
*
|
|
4
4
|
* Flags OrgPolicyPolicy resources whose rules switch enforcement off or that
|
|
5
5
|
* reset the constraint to its default. A disabled org policy is the GCP
|
package/dist/rules/wgc502.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* WGC502: Org Policy Guardrail Defines No Rules
|
|
2
|
+
* WGC502: Org Policy Guardrail Defines No Rules
|
|
3
3
|
*
|
|
4
4
|
* Flags OrgPolicyPolicy resources with no rules (and no reset). A rule-less
|
|
5
5
|
* org policy binds a constraint to nothing — the usual leftover of a
|
package/dist/rules/wgc503.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* WGC503: Audit Logging Dropped or Scoped Down
|
|
2
|
+
* WGC503: Audit Logging Dropped or Scoped Down
|
|
3
3
|
*
|
|
4
4
|
* Flags IAMAuditConfig resources that capture nothing (no auditLogConfigs)
|
|
5
5
|
* or that carve identities out of the audit trail via exemptedMembers.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentius/chant-lexicon-gcp",
|
|
3
|
-
"version": "0.44.
|
|
3
|
+
"version": "0.44.2",
|
|
4
4
|
"description": "Google Cloud lexicon for chant — declarative IaC in TypeScript",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://intentius.io/chant",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"typescript": "^5.9.3"
|
|
77
77
|
},
|
|
78
78
|
"peerDependencies": {
|
|
79
|
-
"@intentius/chant": "^0.44.
|
|
79
|
+
"@intentius/chant": "^0.44.2",
|
|
80
80
|
"typescript": "^5.9.3"
|
|
81
81
|
}
|
|
82
82
|
}
|
|
@@ -7,7 +7,7 @@ function p(member: unknown): Record<string, any> {
|
|
|
7
7
|
return (member as any).props;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
describe("GovernanceFoundation
|
|
10
|
+
describe("GovernanceFoundation", () => {
|
|
11
11
|
test("declares the foundation folders and baseline org policies", () => {
|
|
12
12
|
const lz = GovernanceFoundation({ orgId: "123456789012" });
|
|
13
13
|
expect(Object.keys(lz.members)).toEqual([
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Landing-zone bootstrap composites
|
|
2
|
+
* Landing-zone bootstrap composites — the GCP slice.
|
|
3
3
|
*
|
|
4
4
|
* Fixed-shape resources for greenfield creation of the recommended
|
|
5
5
|
* governance foundation through a Config Connector management stack. The
|
|
6
6
|
* evaluability rules (EVL002/004) require composites to declare a fixed set
|
|
7
7
|
* of resources, so these carry the foundation only; arbitrary folder/project
|
|
8
8
|
* trees are authored as config with `landingZoneConfig()` (../governance.ts)
|
|
9
|
-
* and reconciled by
|
|
9
|
+
* and reconciled by an external governance reconciler, and further folders/projects are
|
|
10
10
|
* declared as ordinary resources.
|
|
11
11
|
*
|
|
12
12
|
* The pieces compose:
|
package/src/governance.test.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, expect, test } from "vitest";
|
|
2
2
|
import { landingZoneConfig, FOUNDATION_FOLDERS } from "./governance";
|
|
3
3
|
|
|
4
|
-
describe("landingZoneConfig
|
|
4
|
+
describe("landingZoneConfig", () => {
|
|
5
5
|
test("the default is the recommended foundation", () => {
|
|
6
6
|
const cfg = landingZoneConfig();
|
|
7
7
|
expect(Object.keys(cfg.folders)).toEqual(["Security", "Infrastructure", "Sandbox", "Workloads"]);
|
package/src/governance.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* GCP governance authoring
|
|
3
|
-
* shape
|
|
2
|
+
* GCP governance authoring: the desired-state config
|
|
3
|
+
* shape an external governance reconciler reconciles, and `landingZoneConfig()` — the
|
|
4
4
|
* typed authoring layer that emits it.
|
|
5
5
|
*
|
|
6
6
|
* This is deliberately NOT a composite. The evaluability rules (EVL002/004,
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* data-driven folder tree walker cannot be one. The split mirrors the AWS
|
|
9
9
|
* slice (lexicons/aws/src/governance.ts): authoring emits config (this
|
|
10
10
|
* module, arbitrary cardinality); resources for greenfield bootstrap are the
|
|
11
|
-
* fixed-shape composites in `composites/landing-zone.ts`; the
|
|
11
|
+
* fixed-shape composites in `composites/landing-zone.ts`; the reconciler
|
|
12
12
|
* consumes only the config.
|
|
13
13
|
*
|
|
14
14
|
* GCP has no OrganizationRoot analog — organizations are created through
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
// ---------------------------------------------------------------------------
|
|
19
|
-
// The desired-state config shape
|
|
19
|
+
// The desired-state config shape an external governance reconciler consumes
|
|
20
20
|
// ---------------------------------------------------------------------------
|
|
21
21
|
|
|
22
22
|
/** An org-policy definition, keyed by name in `GcpGovernanceConfig.orgPolicies`. */
|
|
@@ -45,8 +45,8 @@ export interface FolderConfig {
|
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
47
|
* The desired-state governance tree for one GCP organization. This is the
|
|
48
|
-
* shape
|
|
49
|
-
* `AwsGovernanceConfig`. Cycles map onto the governance verbs
|
|
48
|
+
* shape an external governance reconciler loads as config — the GCP counterpart of
|
|
49
|
+
* `AwsGovernanceConfig`. Cycles map onto the governance verbs: the
|
|
50
50
|
* folder/project tree is `org-unit`, org policies are `policy-guardrail`,
|
|
51
51
|
* audit configuration is `audit-sink`.
|
|
52
52
|
*/
|
|
@@ -132,7 +132,7 @@ export interface LandingZoneConfigProps {
|
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
/**
|
|
135
|
-
* Author the desired-state tree
|
|
135
|
+
* Author the desired-state tree an external governance reconciler reconciles. Pure.
|
|
136
136
|
* Throws when the tree attaches an org-policy name with no definition; only
|
|
137
137
|
* policies the tree actually attaches are included in the output.
|
|
138
138
|
*/
|
package/src/index.ts
CHANGED
|
@@ -42,8 +42,8 @@ export type {
|
|
|
42
42
|
GovernanceFoundationProps, LocationRestrictionProps, OrganizationAuditConfigProps,
|
|
43
43
|
} from "./composites/index";
|
|
44
44
|
|
|
45
|
-
// GCP governance authoring
|
|
46
|
-
//
|
|
45
|
+
// GCP governance authoring: the desired-state config an external governance
|
|
46
|
+
// reconciler applies, and the typed landing-zone authoring layer.
|
|
47
47
|
export {
|
|
48
48
|
landingZoneConfig, resourceLocationRestriction,
|
|
49
49
|
DISABLE_SA_KEY_CREATION, SKIP_DEFAULT_NETWORK, AUDIT_ALL_SERVICES, FOUNDATION_FOLDERS,
|
|
@@ -31,7 +31,7 @@ export const gcpAuditCatalog: Record<string, RuleMeta> = {
|
|
|
31
31
|
WGC402: auditRule("WGC402", "merge-worthy", "guidance", "Missing required spec field", "Add the required spec field.", { category: "correctness" }),
|
|
32
32
|
WGC403: auditRule("WGC403", "merge-worthy", "guidance", "Spec field has wrong type/structure", "Fix the field's type/structure.", { category: "correctness" }),
|
|
33
33
|
|
|
34
|
-
//
|
|
34
|
+
// governance posture regressions.
|
|
35
35
|
WGC501: auditRule("WGC501", "merge-worthy", "guidance", "Org Policy guardrail not enforced", "Enable enforce on the rule (or remove the policy deliberately) — a disabled org policy constrains nothing.", { authority: [GCP_SEC] }),
|
|
36
36
|
WGC502: auditRule("WGC502", "merge-worthy", "guidance", "Org Policy guardrail defines no rules", "Add rules to the OrgPolicyPolicy — without them the constraint binds nothing.", { authority: [GCP_SEC] }),
|
|
37
37
|
WGC503: auditRule("WGC503", "merge-worthy", "guidance", "Audit logging dropped or scoped down", "Keep auditLogConfigs populated and remove exemptedMembers from the IAMAuditConfig.", { authority: [GCP_SEC] }),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* WGC501: Org Policy Guardrail Not Enforced
|
|
2
|
+
* WGC501: Org Policy Guardrail Not Enforced
|
|
3
3
|
*
|
|
4
4
|
* Flags OrgPolicyPolicy resources whose rules switch enforcement off or that
|
|
5
5
|
* reset the constraint to its default. A disabled org policy is the GCP
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* WGC502: Org Policy Guardrail Defines No Rules
|
|
2
|
+
* WGC502: Org Policy Guardrail Defines No Rules
|
|
3
3
|
*
|
|
4
4
|
* Flags OrgPolicyPolicy resources with no rules (and no reset). A rule-less
|
|
5
5
|
* org policy binds a constraint to nothing — the usual leftover of a
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* WGC503: Audit Logging Dropped or Scoped Down
|
|
2
|
+
* WGC503: Audit Logging Dropped or Scoped Down
|
|
3
3
|
*
|
|
4
4
|
* Flags IAMAuditConfig resources that capture nothing (no auditLogConfigs)
|
|
5
5
|
* or that carve identities out of the audit trail via exemptedMembers.
|