Auf dieser Seite wird beschrieben, wie Sie Autorisierungsrichtlinien für Ambient Networking erstellen.
Vorbereitung
Bevor Sie die Schritte in diesem Dokument ausführen können, müssen die folgenden Voraussetzungen erfüllt sein:
- Ein aktiver GKE-Cluster mit aktiviertem Cloud Service Mesh Ambient Networking.
- Ein Namespace, der für Ambient Networking registriert ist (z. B.
ambient-test), mit bereitgestellten Beispielarbeitslasten für Client und Server. - Gegenseitiges TLS (mTLS) zwischen den Client- und Server-Workloads mithilfe eines
GCPServerTLSPolicy(mitmtlsMode: Strict) und einesGCPClientTLSPolicyaktiviert. Für identitätsbasierteGCPAuthzPolicy-Regeln, dieCLIENT_CERT_URI_SANentsprechen, ist eine aktive mTLS-Authentifizierung erforderlich, um die SPIFFE-Identität des Clients zu extrahieren.
Eine detaillierte Einrichtung der Umgebung finden Sie unter GKE-Umgebungsnetzwerk vorbereiten.
Standardmäßig ablehnende Richtlinie
Standardmäßig lässt die GKE Ambient Authorization Policy API den gesamten Traffic zu, sofern er nicht durch eine Richtlinie eingeschränkt wird. Dies entspricht dem Standardverhalten von Kubernetes NetworkPolicy.
Mit der Aktion DENY_BY_DEFAULT können Sie dieses Standardverhalten ändern. Wenn diese Richtlinie auf einen Namespace angewendet wird, wird der gesamte Traffic zu Arbeitslasten in diesem Namespace blockiert, sofern er nicht explizit durch eine ALLOW-Richtlinie zugelassen wird.
Auf dieser Seite wird beschrieben, wie Sie DENY_BY_DEFAULT in Cloud Service Mesh konfigurieren und verwenden, um einen standardmäßig sicheren Sicherheitsstatus für Ihre Arbeitslasten zu schaffen.
Beschränkungen
Beachten Sie vor dem Anwenden einer DENY_BY_DEFAULT-Richtlinie die folgenden Einschränkungen:
- Sie können nur eine
DENY_BY_DEFAULT-Richtlinie pro Namespace erstellen. - Für eine Richtlinie mit der Aktion
DENY_BY_DEFAULTdürfen keine Regeln definiert sein. - Mit dieser Aktion legen Sie einen Namespace-weiten
matchLabels: {}fest, der auf alle Pods ausgerichtet ist.DENY_BY_DEFAULTkann nicht für Einschränkungen pro Pod verwendet werden.
Standardmäßig ablehnende Autorisierungsrichtlinie einrichten
So legen Sie eine Standard-Ablehnungsrichtlinie für einen Namespace fest und erlauben selektiv den Zugriff auf bestimmte Arbeitslasten:
Erstellen Sie ein
GCPAuthzPolicymit der aufDENY_BY_DEFAULTfestgelegten Aktion und wenden Sie es auf Ihren Namespace an.cat <<EOF > deny-by-default-policy.yaml && kubectl apply -f deny-by-default-policy.yaml apiVersion: networking.gke.io/v1 kind: GCPAuthzPolicy metadata: name: deny-by-default-authz namespace: ambient-test spec: action: DENY_BY_DEFAULT enforcementLevel: L4 targetRefs: - group: "" kind: Pod selector: matchLabels: {} EOFDie Ausgabe sieht etwa so aus:
gcpauthzpolicy.networking.gke.io/deny-by-default-authz createdDiese Richtlinie blockiert standardmäßig den gesamten eingehenden Traffic (Ost-West und eingehend) zu Arbeitslasten im Namespace
ambient-test. Der ausgehende Traffic von Arbeitslasten im Namespace wird nicht eingeschränkt.Wenn Sie Traffic selektiv zulassen möchten, erstellen Sie eine
ALLOW-Richtlinie und wenden Sie sie an:cat <<EOF > allow-policy.yaml && kubectl apply -f allow-policy.yaml apiVersion: networking.gke.io/v1 kind: GCPAuthzPolicy metadata: name: allow-client-to-server namespace: ambient-test spec: action: ALLOW enforcementLevel: L4 targetRefs: - group: "" kind: Pod selector: matchLabels: app: server rules: - from: sources: - principals: - principalSelector: CLIENT_CERT_URI_SAN principal: type: Exact value: spiffe://PROJECT_ID.s3ns.svc.id.goog/ns/ambient-test/sa/client EOFErsetzen Sie PROJECT_ID durch Ihre Projekt-ID.
Es kann bis zu drei Minuten dauern, bis die Richtlinie nach der Bestätigung durch den Controller weitergegeben wird. Warten Sie drei Minuten, bevor Sie fortfahren.
Verbindung vom Client zum Server testen Der Vorgang sollte erfolgreich sein, da er der
ALLOW-Richtlinie entspricht.kubectl exec -it deploy/client -n ambient-test -- /bin/curl -fsLS server.ambient-test.svc.cluster.localTesten Sie die Verbindung vom Server zu sich selbst (oder zu einer anderen Arbeitslast ohne explizite Zulassungsrichtlinie). Der Vorgang sollte aufgrund der Richtlinie
DENY_BY_DEFAULTfehlschlagen.kubectl exec -it deploy/server -n ambient-test -- /bin/curl -fsLS server.ambient-test.svc.cluster.localDie Ausgabe sieht etwa so aus:
curl: (52) Empty reply from server.
Logging
Wenn eine Anfrage von der Autorisierungsrichtlinie abgelehnt wird, enthalten die GKE Ambient Proxy-Zugriffsprotokolle die folgenden Felder in der JSON-Nutzlast:
jsonPayload.error_details: Auf- rbac_access_denied_matched_policy[none]festlegen
Sie können den Log-Explorer in der Cloud de Confiance Console verwenden, um die Zugriffslogeinträge für abgelehnte Verbindungen aufzurufen. Weitere Informationen finden Sie unter Authentifizierung und Autorisierung von Traffic überprüfen.
Sicherheitsrichtlinien für ausgehenden Traffic
Wenn Sie ausgehenden Traffic von Ambient Networking-Arbeitslasten zu externen Endpunkten oder ins Internet prüfen und steuern möchten, können Sie den ausgehenden Traffic über Secure Web Proxy (SWP) weiterleiten.
Eine Anleitung zum Konfigurieren von GCPBackend- und GCPEgressRouting-Ressourcen finden Sie unter Ausgehenden Ambient-Traffic über den sicheren Webproxy weiterleiten.