Skip to content

Commit d272578

Browse files
authored
We need to allow external instead of all-namespaces when ingress/egress rules only contain {} (Azure#466)
1 parent 570f9b0 commit d272578

File tree

2 files changed

+32
-25
lines changed

2 files changed

+32
-25
lines changed

npm/translatePolicy.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,9 @@ func translateIngress(ns string, targetSelector metav1.LabelSelector, rules []ne
162162
targetSelectorComment := craftPartialIptablesCommentFromSelector(ns, &targetSelector, false)
163163

164164
for _, rule := range rules {
165-
allowExternal, portRuleExists, fromRuleExists := false, false, false
166-
portRuleExists = rule.Ports != nil && len(rule.Ports) > 0
165+
allowExternal := false
166+
portRuleExists := rule.Ports != nil && len(rule.Ports) > 0
167+
fromRuleExists := false
167168
addedPortEntry = addedPortEntry || portRuleExists
168169

169170
if rule.From != nil {
@@ -180,6 +181,8 @@ func translateIngress(ns string, targetSelector metav1.LabelSelector, rules []ne
180181
break
181182
}
182183
}
184+
} else if !portRuleExists {
185+
allowExternal = true
183186
}
184187

185188
if !portRuleExists && !fromRuleExists && !allowExternal {
@@ -644,8 +647,9 @@ func translateEgress(ns string, targetSelector metav1.LabelSelector, rules []net
644647
targetSelectorIptEntrySpec := craftPartialIptEntrySpecFromOpsAndLabels(ns, ops, labels, util.IptablesSrcFlag, false)
645648
targetSelectorComment := craftPartialIptablesCommentFromSelector(ns, &targetSelector, false)
646649
for _, rule := range rules {
647-
allowExternal, portRuleExists, toRuleExists := false, false, false
648-
portRuleExists = rule.Ports != nil && len(rule.Ports) > 0
650+
allowExternal := false
651+
portRuleExists := rule.Ports != nil && len(rule.Ports) > 0
652+
toRuleExists := false
649653
addedPortEntry = addedPortEntry || portRuleExists
650654

651655
if rule.To != nil {
@@ -662,6 +666,8 @@ func translateEgress(ns string, targetSelector metav1.LabelSelector, rules []net
662666
break
663667
}
664668
}
669+
} else if !portRuleExists {
670+
allowExternal = true
665671
}
666672

667673
if !portRuleExists && !toRuleExists && !allowExternal {

npm/translatePolicy_test.go

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1248,7 +1248,7 @@ func TestTranslatePolicy(t *testing.T) {
12481248
}
12491249
allowToFrontendPolicy := &networkingv1.NetworkPolicy{
12501250
ObjectMeta: metav1.ObjectMeta{
1251-
Name: "ALLOW-all-TO-app:frontend-FROM-all-namespaces-policy",
1251+
Name: "ALLOW-all-TO-app:frontend-policy",
12521252
Namespace: "testnamespace",
12531253
},
12541254
Spec: networkingv1.NetworkPolicySpec{
@@ -1269,16 +1269,14 @@ func TestTranslatePolicy(t *testing.T) {
12691269
"ns-testnamespace",
12701270
}
12711271
if !reflect.DeepEqual(sets, expectedSets) {
1272-
t.Errorf("translatedPolicy failed @ ALLOW-all-TO-app:frontend-FROM-all-namespaces-policy sets comparison")
1272+
t.Errorf("translatedPolicy failed @ ALLOW-all-TO-app:frontend-policy sets comparison")
12731273
t.Errorf("sets: %v", sets)
12741274
t.Errorf("expectedSets: %v", expectedSets)
12751275
}
12761276

1277-
expectedLists = []string{
1278-
util.KubeAllNamespacesFlag,
1279-
}
1277+
expectedLists = []string{}
12801278
if !reflect.DeepEqual(lists, expectedLists) {
1281-
t.Errorf("translatedPolicy failed @ ALLOW-all-TO-app:frontend-FROM-all-namespaces-policy lists comparison")
1279+
t.Errorf("translatedPolicy failed @ ALLOW-all-TO-app:frontend-policy lists comparison")
12821280
t.Errorf("lists: %v", lists)
12831281
t.Errorf("expectedLists: %v", expectedLists)
12841282
}
@@ -1289,11 +1287,6 @@ func TestTranslatePolicy(t *testing.T) {
12891287
&iptm.IptEntry{
12901288
Chain: util.IptablesAzureIngressPortChain,
12911289
Specs: []string{
1292-
util.IptablesModuleFlag,
1293-
util.IptablesSetModuleFlag,
1294-
util.IptablesMatchSetFlag,
1295-
util.GetHashedName(util.KubeAllNamespacesFlag),
1296-
util.IptablesSrcFlag,
12971290
util.IptablesModuleFlag,
12981291
util.IptablesSetModuleFlag,
12991292
util.IptablesMatchSetFlag,
@@ -1304,14 +1297,14 @@ func TestTranslatePolicy(t *testing.T) {
13041297
util.IptablesModuleFlag,
13051298
util.IptablesCommentModuleFlag,
13061299
util.IptablesCommentFlag,
1307-
"ALLOW-ALL-TO-app:frontend-FROM-all-namespaces",
1300+
"ALLOW-ALL-TO-app:frontend",
13081301
},
13091302
},
13101303
}
13111304
expectedIptEntries = append(expectedIptEntries, nonKubeSystemEntries...)
13121305
expectedIptEntries = append(expectedIptEntries, getDefaultDropEntries("testnamespace", targetSelector, false, false)...)
13131306
if !reflect.DeepEqual(iptEntries, expectedIptEntries) {
1314-
t.Errorf("translatedPolicy failed @ ALLOW-all-TO-app:frontend-FROM-all-namespaces-policy policy comparison")
1307+
t.Errorf("translatedPolicy failed @ ALLOW-all-TO-app:frontend-policy policy comparison")
13151308
marshalledIptEntries, _ := json.Marshal(iptEntries)
13161309
marshalledExpectedIptEntries, _ := json.Marshal(expectedIptEntries)
13171310
t.Errorf("iptEntries: %s", marshalledIptEntries)
@@ -2633,9 +2626,7 @@ func TestTranslatePolicy(t *testing.T) {
26332626
t.Errorf("expectedSets: %v", expectedSets)
26342627
}
26352628

2636-
expectedLists = []string{
2637-
util.KubeAllNamespacesFlag,
2638-
}
2629+
expectedLists = []string{}
26392630
if !reflect.DeepEqual(lists, expectedLists) {
26402631
t.Errorf("translatedPolicy failed @ ALLOW-all-FROM-app:backend-policy lists comparison")
26412632
t.Errorf("lists: %v", lists)
@@ -2652,18 +2643,28 @@ func TestTranslatePolicy(t *testing.T) {
26522643
util.IptablesMatchSetFlag,
26532644
util.GetHashedName("app:backend"),
26542645
util.IptablesSrcFlag,
2646+
util.IptablesJumpFlag,
2647+
util.IptablesAccept,
2648+
util.IptablesModuleFlag,
2649+
util.IptablesCommentModuleFlag,
2650+
util.IptablesCommentFlag,
2651+
"ALLOW-ALL-FROM-app:backend",
2652+
},
2653+
},
2654+
&iptm.IptEntry{
2655+
Chain: util.IptablesAzureEgressPortChain,
2656+
Specs: []string{
26552657
util.IptablesModuleFlag,
26562658
util.IptablesSetModuleFlag,
26572659
util.IptablesMatchSetFlag,
2658-
util.GetHashedName(util.KubeAllNamespacesFlag),
2659-
util.IptablesDstFlag,
2660+
util.GetHashedName("app:backend"),
2661+
util.IptablesSrcFlag,
26602662
util.IptablesJumpFlag,
2661-
util.IptablesAccept,
2663+
util.IptablesAzureTargetSetsChain,
26622664
util.IptablesModuleFlag,
26632665
util.IptablesCommentModuleFlag,
26642666
util.IptablesCommentFlag,
2665-
"ALLOW-ALL-FROM-app:backend-TO-" +
2666-
util.KubeAllNamespacesFlag,
2667+
"ALLOW-ALL-FROM-app:backend-TO-JUMP-TO-AZURE-NPM-TARGET-SETS",
26672668
},
26682669
},
26692670
}

0 commit comments

Comments
 (0)