Funktionsressourcen mit benutzerdefinierten Einschränkungen verwalten
Als Organisationsadministrator können Sie benutzerdefinierte Einschränkungen für Cloud Run-Funktionen erstellen. Mit Organisationsrichtlinien werden diese benutzerdefinierten Einschränkungen auf Projekt-, Ordner- oder Organisationsebene erzwungen.
Die Organisationsrichtlinie bietet vordefinierte Einschränkungen für verschiedene Google Cloud-Dienste. Wenn Sie jedoch eine detailliertere, anpassbare Steuerung der spezifischen Felder wünschen, die in Ihren Organisationsrichtlinien eingeschränkt werden, können Sie auch benutzerdefinierte Organisationsrichtlinien erstellen.
Auf dieser Seite erfahren Sie, wie Sie benutzerdefinierte Einschränkungen für Funktionen erstellen, die mithilfe der Cloud Functions v2 APIs erstellt wurden, und diese auf Projektebene erzwingen. Informationen zu benutzerdefinierten Organisationsrichtlinien finden Sie unter Benutzerdefinierte Organisationsrichtlinien erstellen und verwalten.
Vorteile
- Kostenverwaltung: Verwenden Sie Organisationsrichtlinien, um die VM-Instanz und Laufwerkgrößen und -typen zu beschränken, die in Ihrer Organisation verwendet werden können. Sie können auch die Maschinenfamilie einschränken, die für die VM-Instanz verwendet wird
- Sicherheit, Compliance und Governance :
- Zur Durchsetzung von Sicherheitsanforderungen können Sie bestimmte Firewallregeln für VMs auf VMs festlegen.
- Zur Unterstützung der Hardware-Isolation oder der Lizenzcompliance kann die Ausführung aller VMs in einem bestimmten Projekt oder Ordner auf Knoten für einzelne Mandanten erforderlich sein.
- Zur Steuerung von Automatisierungsskripts können Sie benutzerdefinierte Organisationsrichtlinien verwenden, um zu prüfen, ob die Labels den erforderlichen Ausdrücken entsprechen.
Übernahme von Richtlinien
Wenn eine Organisationsrichtlinie für eine Ressource erzwungen wird, wird sie auch von allen untergeordneten Elementen der Ressource übernommen. Wenn Sie beispielsweise eine Richtlinie für einen Ordner erzwingen, erzwingt Google Cloud die Richtlinie für alle Projekte in dem Ordner. Weitere Informationen zu diesem Verhalten und zu dessen Änderung finden Sie unter Regeln für die Evaluierung der Hierarchie.
Preise
Der Organisationsrichtliniendienst, einschließlich vordefinierter und benutzerdefinierter Organisationsrichtlinien, wird kostenlos angeboten.
Beschränkungen
Für benutzerdefinierte Organisationsrichtlinien gelten die folgenden Einschränkungen:
- Wird nicht für VM-Instanznamen erzwungen, wenn Sie die Bulk Insert API verwenden.
- Wird nur für die Methode
CREATE
für Compute Engine-Ressourcen erzwungen. - Nur für Cloud Functions v2 APIs verfügbar. Sie können nicht auf Cloud Run Functions der 1. Generation angewendet werden.
- Schützen Sie Funktionen nur, wenn Sie die Cloud Functions v2 APIs verwenden. Cloud Run Functions können auch über die Cloud Run API geändert werden. Für zusätzlichen Schutz müssen Sie möglicherweise auch benutzerdefinierte Einschränkungen auf Cloud Run anwenden.
Hinweise
- Sie müssen Ihre Organisations-ID kennen.
Erforderliche Rollen
- Zum Erstellen oder Ändern von Organisationsrichtlinien muss Ihr Konto die Rolle
roles/orgpolicy.policyAdmin
haben.
Benutzerdefinierte Einschränkung erstellen
Eine benutzerdefinierte Einschränkung wird in einer YAML-Datei durch die Ressourcen, Methoden, Bedingungen und Aktionen definiert, die von dem Dienst unterstützt werden, für den Sie die Organisationsrichtlinie erzwingen. Bedingungen für Ihre benutzerdefinierten Einschränkungen werden mithilfe der Common Expression Language (CEL) definiert. Weitere Informationen zum Erstellen von Bedingungen in benutzerdefinierten Einschränkungen mit CEL finden Sie im Abschnitt CEL unter Benutzerdefinierte Einschränkungen erstellen und verwalten.
So legen Sie eine benutzerdefinierte Einschränkung fest, die die Erstellung aller Funktionen mit einer maximalen Instanzanzahl von mehr als 150 verhindert:
Erstellen Sie eine neue Datei vom Typ
maxInstanceConstraint.yaml
mit folgendem Inhalt:name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME resourceTypes: - cloudfunctions.googleapis.com/Function methodTypes: - CREATE - UPDATE condition: resource.serviceConfig.maxInstanceCount > 150 actionType: DENY displayName: Deny functions with max instance count greater than 150 description: Functions cannot be created with a max instance count greater than 150
Ersetzen Sie ORGANIZATION_ID
durch Ihre Organisations-ID, z. B. 123456789
.
Weitere Informationen finden Sie unter Benutzerdefinierte Einschränkungen definieren.
Benutzerdefinierte Einschränkung einrichten
Nachdem Sie die YAML-Datei für eine neue benutzerdefinierte Einschränkung erstellt haben, müssen Sie sie einrichten, um sie für Organisationsrichtlinien in Ihrer Organisation verfügbar zu machen. Verwenden Sie zum Einrichten einer benutzerdefinierten Einschränkung den Befehlgcloud org-policies set-custom-constraint
:
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
CONSTRAINT_PATH
durch den vollständigen Pfad zu Ihrer benutzerdefinierten Einschränkungsdatei. Beispiel: /home/user/customconstraint.yaml
Nach Abschluss des Vorgangs sind Ihre benutzerdefinierten Einschränkungen als Organisationsrichtlinien in der Liste der Google Cloud-Organisationsrichtlinien verfügbar.
Prüfen Sie mit dem Befehl gcloud org-policies list-custom-constraints
, ob die benutzerdefinierte Einschränkung vorhanden ist:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID
durch die ID Ihrer Organisationsressource.
Weitere Informationen finden Sie unter Organisationsrichtlinien aufrufen.
Benutzerdefinierte Organisationsrichtlinie erzwingen
Sie können eine boolesche Einschränkung erzwingen, indem Sie eine Organisationsrichtlinie erstellen, die darauf verweist, und diese Organisationsrichtlinie dann auf eine Google Cloud-Ressource anwenden.Console
- Wechseln Sie in der Google Cloud Console zur Seite Organisationsrichtlinien.
- Wählen Sie in der Projektauswahl das Projekt aus, für das Sie die Organisationsrichtlinie festlegen möchten.
- Wählen Sie auf der Seite Organisationsrichtlinien die gewünschte Einschränkung aus, um die Seite Richtliniendetails aufzurufen.
- Zum Konfigurieren der Organisationsrichtlinie für diese Ressource klicken Sie auf Richtlinie verwalten.
- Wählen Sie auf der Seite Richtlinie bearbeiten die Option Richtlinie der übergeordneten Ressource überschreiben aus.
- Klicken Sie auf Regel hinzufügen.
- Wählen Sie im Abschnitt Erzwingung aus, ob die Erzwingung dieser Organisationsrichtlinie aktiviert oder deaktiviert werden soll.
- Klicken Sie optional auf Bedingung hinzufügen, um die Organisationsrichtlinie von einem Tag abhängig zu machen. Wenn Sie einer Organisationsrichtlinie eine bedingte Regel hinzufügen, müssen Sie mindestens eine bedingungsfreie Regel hinzufügen oder die Richtlinie kann nicht gespeichert werden. Weitere Informationen finden Sie unter Organisationsrichtlinie mit Tags festlegen.
- Wenn dies eine benutzerdefinierte Einschränkung ist, können Sie auf Änderungen testen klicken, um die Auswirkungen dieser Organisationsrichtlinie zu simulieren. Weitere Informationen finden Sie unter Änderungen an Organisationsrichtlinien mit dem Richtliniensimulator testen.
- Klicken Sie auf Richtlinie festlegen, um den Vorgang abzuschließen und die Organisationsrichtlinie anzuwenden. Es kann bis zu 15 Minuten dauern, bis die Richtlinie wirksam wird.
gcloud
Um eine Organisationsrichtlinie zu erstellen, die eine boolesche Einschränkung erzwingt, erstellen Sie eine YAML-Richtliniendatei, die auf die Einschränkung verweist:
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true
Ersetzen Sie Folgendes:
-
PROJECT_ID
: das Projekt, für das Sie die Einschränkung erzwingen möchten -
CONSTRAINT_NAME
: der Name, den Sie für Ihre benutzerdefinierte Einschränkung definiert haben. Beispiel:custom.cloudFunctionsMaxInstanceLimit
.
Führen Sie den folgenden Befehl aus, um die Organisationsrichtlinie mit der Einschränkung zu erzwingen:
gcloud org-policies set-policy POLICY_PATH
Ersetzen Sie POLICY_PATH
durch den vollständigen Pfad zur YAML-Datei Ihrer Organisationsrichtlinie. Es kann bis zu 15 Minuten dauern, bis die Richtlinie wirksam wird.
Benutzerdefinierte Organisationsrichtlinie testen
Führen Sie den folgenden Befehl aus, um eine Funktion mit einer maximalen Instanzanzahl von 151 zu erstellen:
gcloud functions deploy FUNCTION_NAME \
...
--max-instances 151
Die angezeigte Ausgabe sieht so aus:
Operation denied by custom org policy on resource: ["customConstraints/custom.cloudFunctionsMaxInstanceLimit": "Cloud Functions cannot be created with a max instance count greater than 150."]
Von Cloud Run-Funktionen unterstützte Ressourcen und Vorgänge
Ressourcentyp | Methodentypen | API-Referenz |
---|---|---|
cloudfunctions.googleapis.com/Function |
CREATE , UPDATE |
projects.locations.functions |
Beispiele für gängige Organisationsrichtlinien
In der folgenden Tabelle finden Sie die Syntax einiger benutzerdefinierter Organisationsrichtlinien, die für Sie nützlich sein könnten:
Beschreibung | Einschränkungssyntax |
---|---|
Verhindern, dass Funktionen in einer bestimmten Sprache erstellt werden |
name: organizations/ORGANIZATION_IDcustomConstraints/custom.cloudFunctionRuntimeBlock resource_types: cloudfunctions.googleapis.com/Function method_types: - CREATE - UPDATE condition: resource.buildConfig.runtime == "python312" action_type: DENY display_name: Deny functions using Python 3.12 description: Functions cannot be created with Python 3.12 as the language runtime |
Funktionen für die Verwendung eines bestimmten Worker-Pools vorschreiben |
name: organizations/ORGANIZATION_ID/customConstraints/custom.cloudFunctionsWorkerPool resource_types: cloudfunctions.googleapis.com/Function method_types: - CREATE - UPDATE condition: resource.buildConfig.workerPool == "WORKER_POOL" action_type: DENY display_name: Require worker pool description: Functions must use a worker pool |
Erforderlich, dass Funktionen alle Container-Images in einem bestimmten Image-Repository speichern |
name: organizations/ORGANIZATION_ID/customConstraints/custom.cloudFunctionsRepository resource_types: cloudfunctions.googleapis.com/Function method_types: - CREATE - UPDATE condition: resource.buildConfig.dockerRepository.startsWith("REPO_PATH") action_type: DENY display_name: Image repository constraint description: Functions must push images to a central image repository under REPO_PATH |
Nächste Schritte
- Weitere Informationen zu Organisationsrichtlinien finden Sie unter Einführung in den Organisationsrichtliniendienst.
- Organisationsrichtlinien erstellen und verwalten
- Eine vollständige Liste der vordefinierten Einschränkungen für Organisationsrichtlinien finden Sie hier.