@@ -64,7 +64,6 @@ type restrictedEndpointsAdmission struct {
6464
6565 authorizer authorizer.Authorizer
6666 restrictedNetworks []* net.IPNet
67- restrictedPorts []kapi.EndpointPort
6867}
6968
7069var _ = initializer .WantsAuthorizer (& restrictedEndpointsAdmission {})
@@ -87,10 +86,6 @@ func NewRestrictedEndpointsAdmission(restrictedNetworks []*net.IPNet) *restricte
8786 return & restrictedEndpointsAdmission {
8887 Handler : admission .NewHandler (admission .Create , admission .Update ),
8988 restrictedNetworks : restrictedNetworks ,
90- restrictedPorts : []kapi.EndpointPort {
91- {Protocol : kapi .ProtocolTCP , Port : 22623 },
92- {Protocol : kapi .ProtocolTCP , Port : 22624 },
93- },
9489 }
9590}
9691
@@ -105,14 +100,26 @@ func (r *restrictedEndpointsAdmission) ValidateInitialization() error {
105100 return nil
106101}
107102
108- func (r * restrictedEndpointsAdmission ) findRestrictedIP (ep * kapi.Endpoints ) error {
103+ var (
104+ defaultRestrictedPorts = []kapi.EndpointPort {
105+ // MCS ports
106+ {Protocol : kapi .ProtocolTCP , Port : 22623 },
107+ {Protocol : kapi .ProtocolTCP , Port : 22624 },
108+ }
109+ defaultRestrictedNetworks = []* net.IPNet {
110+ // IPv4 link-local range 169.254.0.0/16 (including cloud metadata IP)
111+ {IP : net .ParseIP ("169.254.0.0" ), Mask : net .CIDRMask (16 , 32 )},
112+ }
113+ )
114+
115+ func (r * restrictedEndpointsAdmission ) findRestrictedIP (ep * kapi.Endpoints , restricted []* net.IPNet ) error {
109116 for _ , subset := range ep .Subsets {
110117 for _ , addr := range subset .Addresses {
111118 ip := net .ParseIP (addr .IP )
112119 if ip == nil {
113120 continue
114121 }
115- for _ , net := range r . restrictedNetworks {
122+ for _ , net := range restricted {
116123 if net .Contains (ip ) {
117124 return fmt .Errorf ("endpoint address %s is not allowed" , addr .IP )
118125 }
@@ -122,10 +129,10 @@ func (r *restrictedEndpointsAdmission) findRestrictedIP(ep *kapi.Endpoints) erro
122129 return nil
123130}
124131
125- func (r * restrictedEndpointsAdmission ) findRestrictedPort (ep * kapi.Endpoints ) error {
132+ func (r * restrictedEndpointsAdmission ) findRestrictedPort (ep * kapi.Endpoints , restricted []kapi. EndpointPort ) error {
126133 for _ , subset := range ep .Subsets {
127134 for _ , port := range subset .Ports {
128- for _ , restricted := range r . restrictedPorts {
135+ for _ , restricted := range restricted {
129136 if port .Protocol == restricted .Protocol && port .Port == restricted .Port {
130137 return fmt .Errorf ("endpoint port %s:%d is not allowed" , string (port .Protocol ), port .Port )
131138 }
@@ -164,9 +171,12 @@ func (r *restrictedEndpointsAdmission) Validate(a admission.Attributes) error {
164171 return nil
165172 }
166173
167- restrictedErr := r .findRestrictedIP (ep )
174+ restrictedErr := r .findRestrictedIP (ep , r .restrictedNetworks )
175+ if restrictedErr == nil {
176+ restrictedErr = r .findRestrictedIP (ep , defaultRestrictedNetworks )
177+ }
168178 if restrictedErr == nil {
169- restrictedErr = r .findRestrictedPort (ep )
179+ restrictedErr = r .findRestrictedPort (ep , defaultRestrictedPorts )
170180 }
171181 if restrictedErr == nil {
172182 return nil
0 commit comments