Skip to content

Commit 0985816

Browse files
committed
Fix nested trust boundaries
1 parent ae5554a commit 0985816

File tree

5 files changed

+49
-50
lines changed

5 files changed

+49
-50
lines changed

API.md

Lines changed: 28 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ new plus_aws.ApplicationLoadBalancer(scope: Construct, id: string, props: Applic
4444
| --- | --- |
4545
| <code><a href="#cdktg.plus_aws.ApplicationLoadBalancer.toString">toString</a></code> | Returns a string representation of this construct. |
4646
| <code><a href="#cdktg.plus_aws.ApplicationLoadBalancer.communicatesWith">communicatesWith</a></code> | *No description.* |
47+
| <code><a href="#cdktg.plus_aws.ApplicationLoadBalancer.isTrafficForwarding">isTrafficForwarding</a></code> | *No description.* |
4748
| <code><a href="#cdktg.plus_aws.ApplicationLoadBalancer.isWebApplication">isWebApplication</a></code> | *No description.* |
4849
| <code><a href="#cdktg.plus_aws.ApplicationLoadBalancer.isWebService">isWebService</a></code> | *No description.* |
4950
| <code><a href="#cdktg.plus_aws.ApplicationLoadBalancer.processes">processes</a></code> | *No description.* |
@@ -83,6 +84,12 @@ public communicatesWith(id: string, target: TechnicalAsset, options: Communicati
8384

8485
---
8586

87+
##### `isTrafficForwarding` <a name="isTrafficForwarding" id="cdktg.plus_aws.ApplicationLoadBalancer.isTrafficForwarding"></a>
88+
89+
```typescript
90+
public isTrafficForwarding(): boolean
91+
```
92+
8693
##### `isWebApplication` <a name="isWebApplication" id="cdktg.plus_aws.ApplicationLoadBalancer.isWebApplication"></a>
8794

8895
```typescript
@@ -182,7 +189,6 @@ Any object.
182189
| <code><a href="#cdktg.plus_aws.ApplicationLoadBalancer.property.owner">owner</a></code> | <code>string</code> | *No description.* |
183190
| <code><a href="#cdktg.plus_aws.ApplicationLoadBalancer.property.scope">scope</a></code> | <code><a href="#cdktg.Scope">Scope</a></code> | *No description.* |
184191
| <code><a href="#cdktg.plus_aws.ApplicationLoadBalancer.property.tags">tags</a></code> | <code>string[]</code> | *No description.* |
185-
| <code><a href="#cdktg.plus_aws.ApplicationLoadBalancer.property.trustBoundary">trustBoundary</a></code> | <code><a href="#cdktg.TrustBoundary">TrustBoundary</a></code> | *No description.* |
186192
| <code><a href="#cdktg.plus_aws.ApplicationLoadBalancer.property.securityGroup">securityGroup</a></code> | <code>cdktg.plus_aws.SecurityGroup</code> | *No description.* |
187193

188194
---
@@ -379,16 +385,6 @@ public readonly tags: string[];
379385

380386
---
381387

382-
##### `trustBoundary`<sup>Optional</sup> <a name="trustBoundary" id="cdktg.plus_aws.ApplicationLoadBalancer.property.trustBoundary"></a>
383-
384-
```typescript
385-
public readonly trustBoundary: TrustBoundary;
386-
```
387-
388-
- *Type:* <a href="#cdktg.TrustBoundary">TrustBoundary</a>
389-
390-
---
391-
392388
##### `securityGroup`<sup>Required</sup> <a name="securityGroup" id="cdktg.plus_aws.ApplicationLoadBalancer.property.securityGroup"></a>
393389

394390
```typescript
@@ -442,6 +438,7 @@ new plus.Browser(scope: Construct, id: string, props: BrowserProps)
442438
| --- | --- |
443439
| <code><a href="#cdktg.plus.Browser.toString">toString</a></code> | Returns a string representation of this construct. |
444440
| <code><a href="#cdktg.plus.Browser.communicatesWith">communicatesWith</a></code> | *No description.* |
441+
| <code><a href="#cdktg.plus.Browser.isTrafficForwarding">isTrafficForwarding</a></code> | *No description.* |
445442
| <code><a href="#cdktg.plus.Browser.isWebApplication">isWebApplication</a></code> | *No description.* |
446443
| <code><a href="#cdktg.plus.Browser.isWebService">isWebService</a></code> | *No description.* |
447444
| <code><a href="#cdktg.plus.Browser.processes">processes</a></code> | *No description.* |
@@ -481,6 +478,12 @@ public communicatesWith(id: string, target: TechnicalAsset, options: Communicati
481478

482479
---
483480

481+
##### `isTrafficForwarding` <a name="isTrafficForwarding" id="cdktg.plus.Browser.isTrafficForwarding"></a>
482+
483+
```typescript
484+
public isTrafficForwarding(): boolean
485+
```
486+
484487
##### `isWebApplication` <a name="isWebApplication" id="cdktg.plus.Browser.isWebApplication"></a>
485488

486489
```typescript
@@ -580,7 +583,6 @@ Any object.
580583
| <code><a href="#cdktg.plus.Browser.property.owner">owner</a></code> | <code>string</code> | *No description.* |
581584
| <code><a href="#cdktg.plus.Browser.property.scope">scope</a></code> | <code><a href="#cdktg.Scope">Scope</a></code> | *No description.* |
582585
| <code><a href="#cdktg.plus.Browser.property.tags">tags</a></code> | <code>string[]</code> | *No description.* |
583-
| <code><a href="#cdktg.plus.Browser.property.trustBoundary">trustBoundary</a></code> | <code><a href="#cdktg.TrustBoundary">TrustBoundary</a></code> | *No description.* |
584586

585587
---
586588

@@ -776,16 +778,6 @@ public readonly tags: string[];
776778

777779
---
778780

779-
##### `trustBoundary`<sup>Optional</sup> <a name="trustBoundary" id="cdktg.plus.Browser.property.trustBoundary"></a>
780-
781-
```typescript
782-
public readonly trustBoundary: TrustBoundary;
783-
```
784-
785-
- *Type:* <a href="#cdktg.TrustBoundary">TrustBoundary</a>
786-
787-
---
788-
789781

790782
### Cloud <a name="Cloud" id="cdktg.plus_aws.Cloud"></a>
791783

@@ -2581,6 +2573,7 @@ new TechnicalAsset(scope: Construct, id: string, props: TechnicalAssetProps)
25812573
| --- | --- |
25822574
| <code><a href="#cdktg.TechnicalAsset.toString">toString</a></code> | Returns a string representation of this construct. |
25832575
| <code><a href="#cdktg.TechnicalAsset.communicatesWith">communicatesWith</a></code> | *No description.* |
2576+
| <code><a href="#cdktg.TechnicalAsset.isTrafficForwarding">isTrafficForwarding</a></code> | *No description.* |
25842577
| <code><a href="#cdktg.TechnicalAsset.isWebApplication">isWebApplication</a></code> | *No description.* |
25852578
| <code><a href="#cdktg.TechnicalAsset.isWebService">isWebService</a></code> | *No description.* |
25862579
| <code><a href="#cdktg.TechnicalAsset.processes">processes</a></code> | *No description.* |
@@ -2620,6 +2613,12 @@ public communicatesWith(id: string, target: TechnicalAsset, options: Communicati
26202613

26212614
---
26222615

2616+
##### `isTrafficForwarding` <a name="isTrafficForwarding" id="cdktg.TechnicalAsset.isTrafficForwarding"></a>
2617+
2618+
```typescript
2619+
public isTrafficForwarding(): boolean
2620+
```
2621+
26232622
##### `isWebApplication` <a name="isWebApplication" id="cdktg.TechnicalAsset.isWebApplication"></a>
26242623

26252624
```typescript
@@ -2719,7 +2718,6 @@ Any object.
27192718
| <code><a href="#cdktg.TechnicalAsset.property.owner">owner</a></code> | <code>string</code> | *No description.* |
27202719
| <code><a href="#cdktg.TechnicalAsset.property.scope">scope</a></code> | <code><a href="#cdktg.Scope">Scope</a></code> | *No description.* |
27212720
| <code><a href="#cdktg.TechnicalAsset.property.tags">tags</a></code> | <code>string[]</code> | *No description.* |
2722-
| <code><a href="#cdktg.TechnicalAsset.property.trustBoundary">trustBoundary</a></code> | <code><a href="#cdktg.TrustBoundary">TrustBoundary</a></code> | *No description.* |
27232721

27242722
---
27252723

@@ -2915,16 +2913,6 @@ public readonly tags: string[];
29152913

29162914
---
29172915

2918-
##### `trustBoundary`<sup>Optional</sup> <a name="trustBoundary" id="cdktg.TechnicalAsset.property.trustBoundary"></a>
2919-
2920-
```typescript
2921-
public readonly trustBoundary: TrustBoundary;
2922-
```
2923-
2924-
- *Type:* <a href="#cdktg.TrustBoundary">TrustBoundary</a>
2925-
2926-
---
2927-
29282916

29292917
### TrustBoundary <a name="TrustBoundary" id="cdktg.TrustBoundary"></a>
29302918

@@ -3165,6 +3153,7 @@ new plus.Vault(scope: Construct, id: string, props: VaultProps)
31653153
| --- | --- |
31663154
| <code><a href="#cdktg.plus.Vault.toString">toString</a></code> | Returns a string representation of this construct. |
31673155
| <code><a href="#cdktg.plus.Vault.communicatesWith">communicatesWith</a></code> | *No description.* |
3156+
| <code><a href="#cdktg.plus.Vault.isTrafficForwarding">isTrafficForwarding</a></code> | *No description.* |
31683157
| <code><a href="#cdktg.plus.Vault.isWebApplication">isWebApplication</a></code> | *No description.* |
31693158
| <code><a href="#cdktg.plus.Vault.isWebService">isWebService</a></code> | *No description.* |
31703159
| <code><a href="#cdktg.plus.Vault.processes">processes</a></code> | *No description.* |
@@ -3205,6 +3194,12 @@ public communicatesWith(id: string, target: TechnicalAsset, options: Communicati
32053194

32063195
---
32073196

3197+
##### `isTrafficForwarding` <a name="isTrafficForwarding" id="cdktg.plus.Vault.isTrafficForwarding"></a>
3198+
3199+
```typescript
3200+
public isTrafficForwarding(): boolean
3201+
```
3202+
32083203
##### `isWebApplication` <a name="isWebApplication" id="cdktg.plus.Vault.isWebApplication"></a>
32093204

32103205
```typescript
@@ -3316,7 +3311,6 @@ Any object.
33163311
| <code><a href="#cdktg.plus.Vault.property.owner">owner</a></code> | <code>string</code> | *No description.* |
33173312
| <code><a href="#cdktg.plus.Vault.property.scope">scope</a></code> | <code><a href="#cdktg.Scope">Scope</a></code> | *No description.* |
33183313
| <code><a href="#cdktg.plus.Vault.property.tags">tags</a></code> | <code>string[]</code> | *No description.* |
3319-
| <code><a href="#cdktg.plus.Vault.property.trustBoundary">trustBoundary</a></code> | <code><a href="#cdktg.TrustBoundary">TrustBoundary</a></code> | *No description.* |
33203314
| <code><a href="#cdktg.plus.Vault.property.configurationSecrets">configurationSecrets</a></code> | <code><a href="#cdktg.DataAsset">DataAsset</a></code> | *No description.* |
33213315
| <code><a href="#cdktg.plus.Vault.property.vaultStorage">vaultStorage</a></code> | <code><a href="#cdktg.TechnicalAsset">TechnicalAsset</a></code> | *No description.* |
33223316

@@ -3514,16 +3508,6 @@ public readonly tags: string[];
35143508

35153509
---
35163510

3517-
##### `trustBoundary`<sup>Optional</sup> <a name="trustBoundary" id="cdktg.plus.Vault.property.trustBoundary"></a>
3518-
3519-
```typescript
3520-
public readonly trustBoundary: TrustBoundary;
3521-
```
3522-
3523-
- *Type:* <a href="#cdktg.TrustBoundary">TrustBoundary</a>
3524-
3525-
---
3526-
35273511
##### `configurationSecrets`<sup>Required</sup> <a name="configurationSecrets" id="cdktg.plus.Vault.property.configurationSecrets"></a>
35283512

35293513
```typescript

src/plus-aws/application-load-balancer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export class ApplicationLoadBalancer extends TechnicalAsset {
4545
customDevelopedParts: false,
4646
});
4747

48-
this.securityGroup =
48+
this.securityGroup = this.trustBoundary =
4949
props.securityGroup ?? new SecurityGroup(this, `${id} SG`);
5050

5151
this.securityGroup.addTechnicalAssets(this);

src/technical-asset.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,11 @@ export class TechnicalAsset extends Resource {
4545
public readonly ciaTriad: CIATriad;
4646
public readonly multiTenant: boolean;
4747
public readonly redundant: boolean;
48-
public readonly trustBoundary?: TrustBoundary;
4948
public readonly customDevelopedParts: boolean;
5049
public readonly dataFormatsAccepted?: DataFormat[];
5150

51+
protected trustBoundary?: TrustBoundary;
52+
5253
private dataAssetsProcessed: Set<string>;
5354
private dataAssetsStored: Set<string>;
5455
private communications: Communication[];
@@ -119,6 +120,14 @@ export class TechnicalAsset extends Resource {
119120
);
120121
}
121122

123+
public isTrafficForwarding(): boolean {
124+
return [
125+
Technology.LOAD_BALANCER,
126+
Technology.REVERSE_PROXY,
127+
Technology.WAF,
128+
].includes(this.technology);
129+
}
130+
122131
public communicatesWith(
123132
id: string,
124133
target: TechnicalAsset,
@@ -135,6 +144,13 @@ export class TechnicalAsset extends Resource {
135144
return communication;
136145
}
137146

147+
/**
148+
* @internal
149+
*/
150+
public get _trustBoundary() {
151+
return this.trustBoundary;
152+
}
153+
138154
/**
139155
* @internal
140156
*/

src/trust-boundary.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,8 @@ export class TrustBoundary extends Resource {
3333

3434
public addTechnicalAssets(...assets: TechnicalAsset[]) {
3535
assets.forEach((a) => {
36-
if (a.trustBoundary) {
37-
this.addTrustBoundary(a.trustBoundary);
38-
return;
36+
if (a._trustBoundary) {
37+
return this.addTrustBoundary(a._trustBoundary);
3938
}
4039

4140
this.technicalAssetsInside.add(a.uuid);

test/plus-aws/application-load-balancer.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ test("synth application-load-balancer with default securit-group", () => {
3535

3636
const cloud = new Cloud(model, "AWS-Cloud");
3737

38-
cloud.addTrustBoundary(alb.securityGroup);
38+
cloud.addTechnicalAssets(alb);
3939

4040
project.synth();
4141
});

0 commit comments

Comments
 (0)