configsync/policycontroller/constraints.yaml (54 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. # Adds selected constraints from the PolicyController libbrary # https://cloud.google.com/anthos-config-management/docs/reference/constraint-template-library --- # Prevent Services of type NodePort apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sBlockNodePort metadata: name: block-node-port spec: match: kinds: - apiGroups: [""] kinds: ["Service"] --- # Prevent the creation of known resources that expose workloads to external IPs. apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sNoExternalServices metadata: name: no-external-services spec: match: kinds: - apiGroups: [""] kinds: ["Service"] - apiGroups: ["networking.k8s.io"] kinds: ["Ingress"] - apiGroups: ["networking.istio.io"] kinds: ["Gateway"] excludedNamespaces: ["istio-egress", "istio-ingress", "istio-system"] --- # In tenant namespaces, only allow images to be pulled from # a named set of repositories apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sAllowedRepos metadata: name: known-repos-only spec: match: kinds: - apiGroups: [""] kinds: ["Pod"] namespaceSelector: matchLabels: tenant-ns: "true" parameters: # In prod, make these more specific repos: - "gcr.io/" - "eu.gcr.io/" - "us-docker.pkg.dev/" - "europe-docker.pkg.dev/" --- # ASM/Istio DestinationRules must enable TLS apiVersion: constraints.gatekeeper.sh/v1beta1 kind: DestinationRuleTLSEnabled metadata: name: istio-destination-rule-tls-required spec: match: kinds: - apiGroups: ["networking.istio.io"] kinds: ["DestinationRule"]