Vorbeugende Kontrollen für akzeptable Ressourcenkonfigurationen

Last reviewed 2023-12-20 UTC

Es wird empfohlen, Richtlinieneinschränkungen zu definieren, die akzeptable Ressourcenkonfigurationen erzwingen und riskante Konfigurationen verhindern. Der Blueprint verwendet eine Kombination aus Organisationsrichtlinieneinschränkungen und der IaC-Validierung (Infrastructure-as-Code) in Ihrer Pipeline. Durch diese Steuerelemente wird verhindert, dass Ressourcen erstellt werden, die nicht Ihren Richtlinienrichtlinien entsprechen. Wenn Sie diese Kontrollen früh im Design und Build Ihrer Arbeitslasten erzwingen, können Sie spätere Abhilfemaßnahmen vermeiden.

Einschränkungen für Organisationsrichtlinien

Der Organisationsrichtliniendienst erzwingt Einschränkungen, um sicherzustellen, dass bestimmte Ressourcenkonfigurationen in Ihrer Google Cloud-Organisation nicht erstellt werden können, auch nicht durch eine Person mit ausreichenden IAM-Rollen.

Der Blueprint erzwingt Richtlinien auf dem Organisationsknoten, sodass diese Kontrollen von allen Ordnern und Projekten innerhalb der Organisation übernommen werden. Mit diesem Richtlinien-Bundle sollen bestimmte Konfigurationen mit hohem Risiko verhindert werden, z. B. die Freigabe einer VM im öffentlichen Internet oder das Gewähren des öffentlichen Zugriffs auf Storage-Buckets, es sei denn, Sie erlauben explizit eine Ausnahme von der Richtlinie.

In der folgenden Tabelle werden die Einschränkungen für Organisationsrichtlinien vorgestellt, die im Blueprint implementiert sind:

Organisationsrichtlinie-Beschränkung Beschreibung

compute.disableNestedVirtualization

Verschachtelte Virtualisierung auf Compute Engine-VMs kann das Monitoring und andere Sicherheitstools für Ihre VMs umgehen, wenn sie schlecht konfiguriert sind. Diese Einschränkung verhindert die Erstellung der verschachtelten Virtualisierung.

compute.disableSerialPortAccess

IAM-Rollen wie compute.instanceAdmin ermöglichen den privilegierten Zugriff auf den seriellen Port einer Instanz mithilfe von SSH-Schlüsseln. Wenn der SSH-Schlüssel offengelegt wird, kann ein Angreifer auf den seriellen Port zugreifen und Netzwerk- und Firewall-Kontrollen umgehen. Diese Einschränkung verhindert den Zugriff auf den seriellen Port.

compute.disableVpcExternalIpv6

Externe IPv6-Subnetze können bei nicht autorisierter Konfiguration für nicht autorisierten Internetzugriff freigegeben werden. Diese Einschränkung verhindert die Erstellung externer IPv6-Subnetze.

compute.requireOsLogin

Das Standardverhalten bei der Einstellung SSH-Schlüssel in Metadaten kann den nicht autorisierten Remotezugriff auf VMs zulassen, wenn Schlüssel verfügbar gemacht werden. Diese Einschränkung erzwingt die Verwendung von OS Login anstelle von metadatenbasierten SSH-Schlüsseln.

compute.restrictProtocolForwardingCreationForTypes

Eine VM-Protokollweiterleitung für externe IP-Adressen kann bei nicht ausreichender Weiterleitung zu nicht autorisiertem ausgehenden Internettraffic führen. Diese Einschränkung ermöglicht die VM-Protokollweiterleitung nur für interne Adressen.

compute.restrictXpnProjectLienRemoval

Das Löschen eines freigegebenen VPC-Hostprojekts kann alle Dienstprojekte beeinträchtigen, die Netzwerkressourcen verwenden. Diese Einschränkung verhindert das versehentliche oder böswillige Löschen der freigegebenen VPC-Hostprojekte, da die Projektsperre für diese Projekte nicht entfernt wird.

compute.setNewProjectDefaultToZonalDNSOnly

Eine Legacy-Einstellung für das globale (projektweite) interne DNS wird nicht empfohlen, da dies die Dienstverfügbarkeit reduziert. Diese Einschränkung verhindert die Verwendung der Legacy-Einstellung.

compute.skipDefaultNetworkCreation

In jedem neuen Projekt, für das die Compute Engine API aktiviert ist, werden ein Standard-VPC-Netzwerk und zu moderate Standard-VPC-Firewallregeln erstellt. Mit dieser Einschränkung wird die Erstellung der Standardnetzwerk- und Standard-VPC-Firewallregeln übersprungen.

compute.vmExternalIpAccess

Standardmäßig wird eine VM mit einer externen IPv4-Adresse erstellt, die zu einem nicht autorisierten Internetzugriff führen kann. Mit dieser Einschränkung wird eine leere Zulassungsliste externer IP-Adressen konfiguriert, die die VM verwenden kann. Alle anderen werden abgelehnt.

essentialcontacts.allowedContactDomains

Standardmäßig können Wichtige Kontakte so konfiguriert werden, dass Benachrichtigungen über Ihre Domain an eine andere Domain gesendet werden. Durch diese Einschränkung wird erzwungen, dass nur E-Mail-Adressen in genehmigten Domains als Empfänger für wichtige Kontakte festgelegt werden können.

iam.allowedPolicyMemberDomains

Standardmäßig können Zulassungsrichtlinien jedem Google-Konto zugewiesen werden, einschließlich nicht verwalteter Konten und Konten, die zu externen Organisationen gehören. Mit dieser Einschränkung wird sichergestellt, dass Richtlinien in Ihrer Organisation nur verwalteten Konten aus Ihrer eigenen Domain gewährt werden können. Optional können Sie zusätzliche Domains zulassen.

iam.automaticIamGrantsForDefaultServiceAccounts

Standardmäßig werden Standarddienstkonten automatisch zu moderate Rollen zugewiesen. Diese Einschränkung verhindert, dass Standarddienstkonten automatisch eine IAM-Rolle zugewiesen wird.

iam.disableServiceAccountKeyCreation

Dienstkontoschlüssel sind nichtflüchtige Anmeldedaten mit hohem Risiko. In den meisten Fällen kann eine sicherere Alternative zu Dienstkontoschlüsseln verwendet werden. Diese Einschränkung verhindert das Erstellen von Dienstkontoschlüsseln.

iam.disableServiceAccountKeyUpload

Das Hochladen von Schlüsselmaterial für das Dienstkonto kann das Risiko erhöhen, wenn Schlüsselmaterial bereitgestellt wird. Diese Einschränkung verhindert das Hochladen von Dienstkontoschlüsseln.

sql.restrictAuthorizedNetworks

Cloud SQL-Instanzen können über einen nicht authentifizierten Internetzugriff bereitgestellt werden, wenn die Instanzen so konfiguriert sind, dass sie autorisierte Netzwerke ohne Cloud SQL Auth-Proxy verwenden. Diese Richtlinie verhindert die Konfiguration autorisierter Netzwerke für den Datenbankzugriff und erzwingt stattdessen die Verwendung des Cloud SQL Auth-Proxys.

sql.restrictPublicIp

Cloud SQL-Instanzen können nicht authentifizierten Internetzugriff ausgesetzt sein, wenn die Instanzen mit öffentlichen IP-Adressen erstellt werden. Diese Einschränkung verhindert öffentliche IP-Adressen auf Cloud SQL-Instanzen.

storage.uniformBucketLevelAccess

Auf Objekte kann in Cloud Storage standardmäßig über Legacy-Access Control Lists (ACLs) statt auf IAM zugegriffen werden. Dies kann zu inkonsistenten Zugriffssteuerungen und zu einer versehentlichen Offenlegung führen, wenn falsch konfiguriert wird. eine Der Zugriff auf Legacy-ACLs ist von der Einschränkung iam.allowedPolicyMemberDomains nicht betroffen. Diese Einschränkung erzwingt, dass der Zugriff nur über den einheitlichen Zugriff auf Bucket-Ebene von IAM konfiguriert werden kann, nicht über Legacy-ACLs.

storage.publicAccessPrevention

Cloud Storage-Buckets können bei nicht konfiguriertem Internetzugriff freigegeben werden. Diese Einschränkung verhindert ACLs und IAM-Berechtigungen, mit denen der Zugriff auf allUsers und allAuthenticatedUsers gewährt wird.

Diese Richtlinien sind ein Ausgangspunkt, den wir für die meisten Kunden und die meisten Szenarien empfehlen. Möglicherweise müssen Sie jedoch die Einschränkungen für Organisationsrichtlinien ändern, um bestimmte Arbeitslasttypen anzupassen. Beispielsweise wird eine Arbeitslast, die einen Cloud Storage-Bucket als Back-End für Cloud CDN zum Hosten öffentlicher Ressourcen verwendet, von storage.publicAccessPrevention oder einer öffentlichen Cloud Run-Anwendung blockiert, die keine Authentifizierung durch iam.allowedPolicyMemberDomains blockiert. Ändern Sie in diesen Fällen die Organisationsrichtlinie auf Ordner- oder Projektebene, um eine enge Ausnahme zu ermöglichen. Sie können auch Organisationsrichtlinien Einschränkungen hinzufügen, indem Sie ein Tag definieren, das eine Ausnahme oder Erzwingung für Richtlinien gewährt, und das Tag dann auf Projekte und Ordner anwenden.

Weitere Einschränkungen finden Sie unter Verfügbare Einschränkungen und benutzerdefinierte Einschränkungen.

Infrastruktur als Code vor der Bereitstellung validieren

Der Blueprint verwendet einen GitOps-Ansatz zur Verwaltung der Infrastruktur. Das bedeutet, dass alle Infrastrukturänderungen über die versionsgesteuerte Infrastruktur als Code (IaC) implementiert werden und vor dem Deployment validiert werden können.

Die im Blueprint erzwungenen Richtlinien definieren akzeptable Ressourcenkonfigurationen, die von Ihrer Pipeline bereitgestellt werden können. Wenn Code, der an Ihr GitHub-Repository gesendet wird, die Richtlinienprüfungen nicht besteht, werden keine Ressourcen bereitgestellt.

Informationen zur Verwendung von Pipelines und zur Durchsetzung von Kontrollen über die CI/CD-Automatisierung finden Sie unter Bereitstellungsmethode.

Wie geht es weiter?