solutions/gke/kubernetes/cluster-defaults/admin-namespaces/networkpolicy.yaml (106 lines of code) (raw):

# Copyright 2021 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ######### # AC-4, AC-4(21), SC-7(5), SC-7(9), SC-7(11) - Network Policies to allow or deny ingress and egress traffic to/from gateway-infra namespace # Allow ingress within namespace kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: namespace: gateway-infra name: allow-ingress-within-namespace spec: podSelector: {} # AC-4, AC-4(21), SC-7(5), SC-7(9), SC-7(11) ingress: # From all pods within the same namespace - from: - podSelector: {} --- # Allow ingress from lb health check kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: namespace: gateway-infra name: allow-ingress-from-lb-health-check spec: podSelector: {} # AC-4, AC-4(21), SC-7(5), SC-7(9), SC-7(11) ingress: - from: - ipBlock: cidr: 35.191.0.0/16 - from: - ipBlock: cidr: 130.211.0.0/22 - from: - ipBlock: cidr: 209.85.152.0/22 - from: - ipBlock: cidr: 209.85.204.0/22 --- # Allow egress within namespace kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: namespace: gateway-infra name: allow-egress-within-namespace spec: podSelector: {} # AC-4, AC-4(21), SC-7(5), SC-7(9), SC-7(11) egress: # To all pods within the same namespace - to: - podSelector: {} --- # Allow egress to metadata server kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: namespace: gateway-infra name: allow-egress-to-metadata-server spec: podSelector: {} # AC-4, AC-4(21), SC-7(5), SC-7(9), SC-7(11) egress: # Network policy and Workload Identity # For clusters running GKE version 1.21.0-gke.1000 and later, allow egress to 169.254.169.252/32 on port 988 # For clusters running GKE Dataplane V2, allow egress to 169.254.169.254/32 on port 80 # Allow access to NodeLocal DNSCache on ip 169.254.20.10 and port 53 - to: - ipBlock: cidr: 169.254.169.252/32 ports: - port: 988 - to: - ipBlock: cidr: 169.254.169.254/32 ports: - port: 53 protocol: UDP - port: 53 protocol: TCP - port: 80 - to: - ipBlock: cidr: 169.254.20.10/32 ports: - port: 53 protocol: UDP - port: 53 protocol: TCP --- # Allow egress for GCP API apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: namespace: gateway-infra name: allow-egrees-to-gcp-api spec: podSelector: {} # AC-4, AC-4(21), SC-7(5), SC-7(9), SC-7(11) egress: - to: - ipBlock: cidr: 10.255.255.254/32 ports: - port: 443 --- # Allow egress to private IP ranges (includes K8S cluster) kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: allow-private-egress spec: podSelector: {} # AC-4, AC-4(21), SC-7(5), SC-7(9), SC-7(11) policyTypes: - Egress egress: - to: - ipBlock: cidr: 10.0.0.0/8 - to: - ipBlock: cidr: 192.168.0.0/16 - to: - ipBlock: cidr: 172.16.0.0/20