Dienstsicherheit in Envoy-Sidecar-Service-Mesh in GKE einrichten
Auf dieser Seite wird beschrieben, wie Sie Sicherheitsfeatures im Envoy-Sidecar-Service-Mesh einrichten GKE
Vorbereitung
Sie sollten Folgendes bereits haben:
- Sie haben einen GKE-Cluster erstellt und bei einer Flotte registriert.
- Envoy-Sidecar-Service-Mesh mit Gateway APIs einrichten
Autorisierungsrichtlinien für Sidecars in GKE einrichten
In diesem Abschnitt erfahren Sie, wie Sie verschiedene Autorisierungsrichtlinien in Cloud Service Mesh-Sidecars in GKE.
Bevor Sie eine Autorisierungsrichtlinie erstellen können, müssen Sie die CustomResourceDefinition (CRD) der GCPAuthzPolicy:
curl https://github.com/GoogleCloudPlatform/gke-networking-recipes/blob/main/gateway-api/config/mesh/crd/experimental/gcpauthzpolicy.yaml \
| kubectl apply -f -
Mit Autorisierungsrichtlinien kann die Zugriffssteuerung für Traffic erzwungen werden, der Envoy-Sidecars erreicht. Richtlinien können auf Kubernetes-Deployments angewendet werden. Die Bereitstellung sollte sich im selben Namespace wie die Autorisierungsrichtlinie befinden.
Autorisierungsrichtlinie zum Ablehnen aller Anfragen
Wenn eine Arbeitslast nur ausgehende Aufrufe ausführen soll, z. B. ein Cron-Job, können Sie eine Autorisierungsrichtlinie konfigurieren, um alle eingehenden HTTP-Anfragen an die Arbeitslast abzulehnen. Im folgenden Beispiel werden eingehende HTTP-Anfragen an
die Arbeitslast whereami
.
Führen Sie die folgenden Schritte aus, um die Autorisierungsrichtlinie „Deny“ (Ablehnen) zu erstellen und anzuwenden:
Erstellen Sie eine Ablehnungsrichtlinie, indem Sie eine Datei mit dem Namen
deny-all-authz-policy.yaml
erstellen:cat >deny-all-authz-policy.yaml <<EOF apiVersion: networking.gke.io/v1 kind: GCPAuthzPolicy metadata: name: myworkload-authz namespace: sidecar-example spec: targetRefs: - kind: Deployment name: wherami httpRules: - to: operations: - paths: - type: Prefix value: "/" action: DENY EOF
Wenden Sie die Richtlinie an:
kubectl apply -f deny-all-authz-policy.yaml
Autorisierungsrichtlinie zum Zulassen von Anfragen
Sie können auch eine Zulassungsrichtlinie konfigurieren, sodass nur Anfragen zugelassen werden, die einer
und die übrigen
ablehnen. Im folgenden Beispiel wird eine Autorisierungsrichtlinie für whereami
konfiguriert, bei der nur GET
-Anfragen mit dem HTTP-Header x-user-role:admin
zulässig sind.
Führen Sie die folgenden Schritte aus, um die Autorisierungsrichtlinie „Zulassen“ zu erstellen und anzuwenden. Löschen Sie die zuvor erstellte Ablehnungsrichtlinie, bevor Sie diese Richtlinie hinzufügen, um die Ergebnisse zu sehen:
Erstellen Sie eine benutzerdefinierte Richtlinie, indem Sie eine Datei mit dem Namen
allow-authz-policy.yaml
erstellen:cat >allow-authz-policy.yaml <<EOF apiVersion: networking.gke.io/v1 kind: GCPAuthzPolicy metadata: name: myworkload-authz namespace: sidecar-example spec: targetRefs: - kind: Deployment name: whereami httpRules: - to: operations: - methods: ["GET"] when: "request.headers['x-user-role'] == 'admin' action: ALLOW EOF
Wenden Sie die Richtlinie an:
kubectl apply -f allow-authz-policy.yaml
Autorisierungsrichtlinie zum Ablehnen von Anfragen basierend auf Regeln
Im folgenden Beispiel werden eingehende HTTP-GET
-Anfragen an die Arbeitslast whereami
abgelehnt, wenn sie sich auf dem Pfad /admin
befinden.
Führen Sie die folgenden Schritte aus, um die Richtlinie zur Ablehnung der Autorisierung zu erstellen und anzuwenden:
Erstellen Sie eine Ablehnungsrichtlinie, indem Sie eine Datei namens
deny-path-authz-policy.yaml
erstellen:cat >deny-path-authz-policy.yaml <<EOF apiVersion: networking.gke.io/v1 kind: GCPAuthzPolicy metadata: name: myworkload-authz namespace: sidecar-example spec: targetRefs: - kind: Deployment name: whereami httpRules: - to: operations: - paths: - type: Prefix value: "/admin" methods: ["GET"] action: DENY EOF
Wenden Sie die Richtlinie an:
kubectl apply -f deny-path-authz-policy.yaml