Benutzerdefinierte Einschränkungen erstellen

Mit der Organisationsrichtlinie vonGoogle Cloud können Sie die Ressourcen Ihrer Organisation zentral und programmatisch steuern. Als Administrator für Organisationsrichtlinien können Sie eine Organisationsrichtlinie definieren, also eine Reihe von Einschränkungen, die fürGoogle Cloud -Ressourcen und untergeordnete Elemente dieser Ressourcen in der Google Cloud -Ressourcenhierarchie gelten. Sie können Organisationsrichtlinien auf Organisations-, Ordner- oder Projektebene erzwingen.

Die Organisationsrichtlinie bietet vordefinierte Einschränkungen für verschiedeneGoogle 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 Einschränkungen erstellen und diese benutzerdefinierten Einschränkungen in einer Organisationsrichtlinie verwenden.

Vorteile

Mit einer benutzerdefinierten Organisationsrichtlinie können Sie bestimmte Vorgänge für Managed Service for Apache Spark-Batches, -Sitzungen und -Sitzungsvorlagen zulassen oder ablehnen. Wenn beispielsweise eine Anfrage zum Erstellen einer Batch-Workload die benutzerdefinierte Beschränkungsvalidierung, die durch Ihre Organisationsrichtlinie festgelegt wurde, nicht erfüllt, schlägt die Anfrage fehl und dem Aufrufer wird ein Fehler zurückgegeben.

Übernahme von Richtlinien

Standardmäßig werden Organisationsrichtlinien von den Nachfolgerelementen der Ressourcen übernommen, für die Sie die Richtlinie erzwingen. 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 Bewertung der Hierarchie.

Preise

Der Organisationsrichtliniendienst, einschließlich vordefinierter und benutzerdefinierter Einschränkungen, wird kostenlos angeboten.

Hinweis

  1. Projekt einrichten
    1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
    2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

    3. Verify that billing is enabled for your Google Cloud project.

    4. Enable the Managed Service for Apache Spark API.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the API

    5. Installieren Sie die Google Cloud CLI.

    6. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

    7. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

      gcloud init
    8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

    9. Verify that billing is enabled for your Google Cloud project.

    10. Enable the Managed Service for Apache Spark API.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the API

    11. Installieren Sie die Google Cloud CLI.

    12. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

    13. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

      gcloud init
    14. Sie müssen Ihre Organisations-ID kennen.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Administrator für Organisationsrichtlinien (roles/orgpolicy.policyAdmin) für die Organisationsressource zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwalten von Organisationsrichtlinien benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Verwalten von Organisationsrichtlinien erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind für die Verwaltung von Organisationsrichtlinien erforderlich:

  • orgpolicy.constraints.list
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Benutzerdefinierte Beschränkung erstellen

Eine benutzerdefinierte Einschränkung wird in einer YAML-Datei durch die Ressourcen, Methoden, Bedingungen und Aktionen definiert, auf die sie angewendet wird. Managed Service for Apache Spark unterstützt benutzerdefinierte Einschränkungen, die auf die CREATE-Methode der Batch- und Sitzungsressourcen angewendet werden.

Weitere Informationen zum Erstellen einer benutzerdefinierten Einschränkung finden Sie unter Benutzerdefinierte Organisationsrichtlinien erstellen und verwalten.

Benutzerdefinierte Einschränkung für eine Batchressource erstellen

Verwenden Sie das folgende Format, um eine YAML-Datei für eine benutzerdefinierte Einschränkung für Managed Service for Apache Spark für eine Batchressource zu erstellen:

name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- dataproc.googleapis.com/Batch
methodTypes: 
- CREATE
condition: CONDITION
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION

Ersetzen Sie Folgendes:

  • ORGANIZATION_ID: Ihre Organisations-ID, z. B. 123456789.

  • CONSTRAINT_NAME: Name, den Sie für Ihre neue benutzerdefinierte Einschränkung verwenden möchten. Eine benutzerdefinierte Einschränkung muss mit custom. beginnen und darf nur Großbuchstaben, Kleinbuchstaben oder Ziffern enthalten, z. B. custom.batchMustHaveSpecifiedCategoryLabel. Die maximale Länge dieses Feldes beträgt 70 Zeichen, das Präfix wird nicht gezählt (z. B. organizations/123456789/customConstraints/custom.).

  • CONDITION: eine CEL-Bedingung, die für eine Darstellung einer unterstützten Dienstressource geschrieben wird. Dieses Feld hat eine maximale Länge von 1.000 Zeichen. Weitere Informationen zu den verfügbaren Ressourcen, auf die Bedingungen geschrieben werden können, finden Sie unter Einschränkungen für Ressourcen und Vorgänge in Dataproc Serverless. Beispielbedingung: ("category" in resource.labels) && (resource.labels['category'] in ['retail', 'ads', 'service']).

  • ACTION: Aktion, die ausgeführt werden soll, wenn die Bedingung erfüllt ist. Dies kann entweder ALLOW oder DENY sein.

  • DISPLAY_NAME: Ein nutzerfreundlicher Name für die Beschränkung. Beispiel für einen Anzeigenamen: „Batchlabel-Anforderung für Kategorie erzwingen“. Dieses Feld hat eine maximale Länge von 200 Zeichen.

  • DESCRIPTION: Eine nutzerfreundliche Beschreibung der Einschränkung, die als Fehlermeldung angezeigt werden soll, wenn die Richtlinie verletzt wird Dieses Feld hat eine maximale Länge von 2000 Zeichen. Beispielbeschreibung: „Dataproc-Batcherstellung nur zulassen, wenn ein Label vom Typ ‚category‘ mit dem Wert ‚retail‘, ‚ads‘ oder ‚service‘ vorhanden ist.“

Benutzerdefinierte Einschränkung für eine Sitzungsressource erstellen

Verwenden Sie das folgende Format, um eine YAML-Datei für eine benutzerdefinierte Einschränkung für Managed Service for Apache Spark für eine Sitzungsressource zu erstellen:

name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- dataproc.googleapis.com/Session
methodTypes: 
- CREATE
condition: CONDITION
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION

Ersetzen Sie Folgendes:

  • ORGANIZATION_ID: Ihre Organisations-ID, z. B. 123456789.

  • CONSTRAINT_NAME: Name, den Sie für Ihre neue benutzerdefinierte Einschränkung verwenden möchten. Eine benutzerdefinierte Einschränkung muss mit custom. beginnen und darf nur Großbuchstaben, Kleinbuchstaben oder Ziffern enthalten, z. B. custom.SessionNameMustStartWithTeamName. Die maximale Länge dieses Feldes beträgt 70 Zeichen, das Präfix wird nicht gezählt (z. B. organizations/123456789/customConstraints/custom.).

  • CONDITION: eine CEL-Bedingung, die für eine Darstellung einer unterstützten Dienstressource geschrieben wird. Dieses Feld hat eine maximale Länge von 1.000 Zeichen. Weitere Informationen zu den verfügbaren Ressourcen, auf die Bedingungen geschrieben werden können, finden Sie unter Dataproc Serverless-Einschränkungen für Ressourcen und Vorgänge. Beispielbedingung: (resource.name.startsWith("dataproc").

  • ACTION: Aktion, die ausgeführt werden soll, wenn die Bedingung erfüllt ist. Dies kann entweder ALLOW oder DENY sein.

  • DISPLAY_NAME: Ein nutzerfreundlicher Name für die Beschränkung. Beispiel für einen Anzeigenamen: „Sitzung mit einer TTL von < 2 Stunden erzwingen“. Dieses Feld hat eine maximale Länge von 200 Zeichen.

  • DESCRIPTION: Eine nutzerfreundliche Beschreibung der Einschränkung, die als Fehlermeldung angezeigt werden soll, wenn die Richtlinie verletzt wird Dieses Feld hat eine maximale Länge von 2000 Zeichen. Beispielbeschreibung: „Sitzungserstellung nur zulassen, wenn eine zulässige TTL festgelegt wird.“

Benutzerdefinierte Einschränkung für eine Sitzungsvorlagenressource erstellen

Verwenden Sie das folgende Format, um eine YAML-Datei für eine benutzerdefinierte Einschränkung für Managed Service for Apache Spark für eine Sitzungsvorlagenressource zu erstellen:

name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- dataproc.googleapis.com/SessionTemplate
methodTypes: 
- CREATE
- UPDATE
condition: CONDITION
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION

Ersetzen Sie Folgendes:

  • ORGANIZATION_ID: Ihre Organisations-ID, z. B. 123456789.

  • CONSTRAINT_NAME: Name, den Sie für Ihre neue benutzerdefinierte Einschränkung verwenden möchten. Eine benutzerdefinierte Einschränkung muss mit custom. beginnen und darf nur Großbuchstaben, Kleinbuchstaben oder Ziffern enthalten, z. B. custom.SessionTemplateNameMustStartWithTeamName. Die maximale Länge dieses Feldes beträgt 70 Zeichen, das Präfix wird nicht gezählt (z. B. organizations/123456789/customConstraints/custom.).

  • CONDITION: eine CEL-Bedingung, die für eine Darstellung einer unterstützten Dienstressource geschrieben wird. Dieses Feld hat eine maximale Länge von 1.000 Zeichen. Weitere Informationen zu den verfügbaren Ressourcen, auf die Bedingungen geschrieben werden können, finden Sie unter Einschränkungen für Ressourcen und Vorgänge. Beispielbedingung: (resource.name.startsWith("dataproc").

  • ACTION: Aktion, die ausgeführt werden soll, wenn die Bedingung erfüllt ist. Dies kann entweder ALLOW oder DENY sein.

  • DISPLAY_NAME: Ein nutzerfreundlicher Name für die Beschränkung. Beispiel für einen Anzeigenamen: „Sitzungsvorlage muss eine TTL von unter 2 Stunden haben“. Dieses Feld hat eine maximale Länge von 200 Zeichen.

  • DESCRIPTION: Eine nutzerfreundliche Beschreibung der Einschränkung, die als Fehlermeldung angezeigt werden soll, wenn die Richtlinie verletzt wird Dieses Feld hat eine maximale Länge von 2000 Zeichen. Beispielbeschreibung: „Nur die Erstellung von Sitzungsvorlagen zulassen, wenn eine zulässige TTL festgelegt wird.“

Benutzerdefinierte Beschränkung einrichten

Console

So erstellen Sie eine benutzerdefinierte Einschränkung:

  1. Wechseln Sie in der Google Cloud Console zur Seite Organisationsrichtlinien.

    Zu den Organisationsrichtlinien

  2. Wählen Sie in der Projektauswahl das Projekt aus, für das Sie die Organisationsrichtlinie festlegen möchten.
  3. Klicken Sie auf Benutzerdefinierte Einschränkung.
  4. Geben Sie im Feld Anzeigename einen nutzerfreundlichen Namen für die Einschränkung ein. Dieser Name wird in Fehlermeldungen verwendet und kann zur Identifizierung und Fehlerbehebung genutzt werden. Verwenden Sie keine personenidentifizierbaren Informationen oder vertraulichen Daten in Anzeigenamen, da dieser Name in Fehlermeldungen angezeigt werden kann. Dieses Feld kann bis zu 200 Zeichen enthalten.
  5. Geben Sie im Feld Einschränkungs-ID die gewünschte ID für die neue benutzerdefinierte Einschränkung ein. Eine benutzerdefinierte Einschränkung darf nur Buchstaben (Groß- und Kleinbuchstaben) oder Ziffern enthalten, z. B. custom.batchMustHaveSpecifiedCategoryLabel. Dieses Feld kann bis zu 70 Zeichen enthalten, das Präfix (custom.) wird nicht gezählt, z. B. organizations/123456789/customConstraints/custom. Beziehen Sie weder personenidentifizierbare Informationen noch sensible Daten in die Einschränkungs-ID ein, da sie in Fehlermeldungen preisgegeben werden könnten.
  6. Geben Sie im Feld Beschreibung eine für Menschen lesbare Beschreibung der Einschränkung ein. Diese Beschreibung wird als Fehlermeldung verwendet, wenn gegen die Richtlinie verstoßen wird. Geben Sie Details dazu an, warum der Richtlinienverstoß aufgetreten ist und wie er behoben werden kann. Beziehen Sie weder personenidentifizierbare Informationen noch sensible Daten in die Beschreibung ein, da sie in Fehlermeldungen preisgegeben werden könnten. Dieses Feld kann bis zu 2.000 Zeichen enthalten.
  7. Wählen Sie im Feld Ressourcentyp den Namen der Google Cloud REST-Ressource aus, die das Objekt und das Feld enthält, das Sie einschränken möchten, z. B. container.googleapis.com/NodePool. Die meisten Ressourcentypen unterstützen bis zu 20 benutzerdefinierte Einschränkungen. Wenn Sie versuchen, weitere benutzerdefinierte Einschränkungen zu erstellen, schlägt der Vorgang fehl.
  8. Diese Einschränkung kann nur für die REST-Methode CREATE erzwungen werden.
  9. Die unterstützten Methoden für die einzelnen Dienste finden Sie unter Dienste, die benutzerdefinierte Einschränkungen unterstützen.

  10. Klicken Sie zum Definieren einer Bedingung auf Bedingung bearbeiten.
    1. Erstellen Sie im Bereich Bedingung hinzufügen eine CEL-Bedingung, die auf eine unterstützte Dienstressource verweist, z. B. resource.management.autoUpgrade == false. Dieses Feld kann bis zu 1.000 Zeichen enthalten. Weitere Informationen zur Verwendung von CEL finden Sie unter Common Expression Language. Weitere Informationen zu den Dienstressourcen, die Sie in Ihren benutzerdefinierten Einschränkungen verwenden können, finden Sie unter Von benutzerdefinierten Einschränkungen unterstützte Dienste.
    2. Klicken Sie auf Speichern.
  11. Wählen Sie unter Aktion aus, ob die ausgewertete Methode zugelassen oder abgelehnt werden soll, wenn die Bedingung erfüllt ist.
  12. Die Aktion „Verweigern“ bedeutet, dass der Vorgang zum Erstellen oder Aktualisieren der Ressource blockiert wird, wenn die Bedingung als „true“ ausgewertet wird.

    Die Aktion „Zulassen“ bedeutet, dass der Vorgang zum Erstellen oder Aktualisieren der Ressource nur zulässig ist, wenn die Bedingung als „true“ ausgewertet wird. Alle anderen Fälle mit Ausnahme der in der Bedingung ausdrücklich aufgeführten werden blockiert.

  13. Klicken Sie auf Einschränkung erstellen.
  14. Wenn Sie in jedes Feld einen Wert eingegeben haben, wird rechts die entsprechende YAML-Konfiguration für diese benutzerdefinierte Einschränkung angezeigt.

gcloud

  1. Zum Erstellen einer benutzerdefinierten Beschränkung erstellen Sie eine YAML-Datei im folgenden Format:
  2. name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
    resourceTypes: RESOURCE_NAME
    methodTypes:
      - CREATE
    condition: "CONDITION"
    actionType: ACTION
    displayName: DISPLAY_NAME
    description: DESCRIPTION

    Ersetzen Sie Folgendes:

    • ORGANIZATION_ID: Ihre Organisations-ID, z. B. 123456789.
    • CONSTRAINT_NAME: der Name, den Sie für Ihre neue benutzerdefinierte Einschränkung verwenden möchten. Eine benutzerdefinierte Einschränkung darf nur Buchstaben (Groß- und Kleinbuchstaben) oder Ziffern enthalten, z. B. custom.batchMustHaveSpecifiedCategoryLabel. Dieses Feld kann bis zu 70 Zeichen enthalten, das Präfix (custom.) wird nicht gezählt, z. B. organizations/123456789/customConstraints/custom. Beziehen Sie weder personenidentifizierbare Informationen noch sensible Daten in die Einschränkungs-ID ein, da sie in Fehlermeldungen preisgegeben werden könnten.
    • RESOURCE_NAME: Der vollständig qualifizierte Name der Google Cloud-Ressource, die das Objekt und das Feld enthält, das Sie einschränken möchten. Beispiel: dataproc.googleapis.com/batch. Die meisten Ressourcentypen unterstützen bis zu 20 benutzerdefinierte Einschränkungen. Wenn Sie versuchen, weitere benutzerdefinierte Einschränkungen zu erstellen, schlägt der Vorgang fehl.
    • methodTypes: die REST-Methoden, für die die Einschränkung erzwungen wird. Kann nur CREATE sein.
    • Die unterstützten Methoden für die einzelnen Dienste finden Sie unter Dienste, die benutzerdefinierte Einschränkungen unterstützen.

    • CONDITION: eine CEL-Bedingung, die für eine Darstellung einer unterstützten Dienstressource geschrieben wird. Dieses Feld kann bis zu 1.000 Zeichen enthalten. Beispiel: ("category" in resource.labels) && (resource.labels['category'] in ['retail', 'ads', 'service']).
    • Weitere Informationen zu den verfügbaren Ressourcen, auf die Bedingungen geschrieben werden können, finden Sie unter Unterstützte Ressourcen.

    • ACTION: Aktion, die ausgeführt werden soll, wenn condition erfüllt ist. Kann nur ALLOW sein.
    • Die Aktion „allow“ bedeutet, dass der Vorgang zum Erstellen oder Aktualisieren der Ressource zulässig ist, wenn die Bedingung als „true“ ausgewertet wird. Das bedeutet auch, dass jeder andere Fall als der in der Bedingung explizit aufgeführte blockiert wird.

    • DISPLAY_NAME: Ein für Nutzer lesbarer Name für die Einschränkung. Dieser Name wird in Fehlermeldungen verwendet und kann zur Identifizierung und Fehlerbehebung genutzt werden. Verwenden Sie keine personenidentifizierbaren Informationen oder vertraulichen Daten in Anzeigenamen, da dieser Name in Fehlermeldungen angezeigt werden kann. Dieses Feld kann bis zu 200 Zeichen enthalten.
    • DESCRIPTION: Eine nutzerfreundliche Beschreibung der Einschränkung, die als Fehlermeldung angezeigt werden soll, wenn die Richtlinie verletzt wird. Dieses Feld kann bis zu 2.000 Zeichen enthalten.
  3. 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 Befehl gcloud org-policies set-custom-constraint:
  4. gcloud org-policies set-custom-constraint CONSTRAINT_PATH

    Ersetzen Sie CONSTRAINT_PATH durch den vollständigen Pfad zu Ihrer benutzerdefinierten Einschränkungsdatei. Beispiel: /home/user/customconstraint.yaml.

    Nach Abschluss dieses Vorgangs sind Ihre benutzerdefinierten Einschränkungen als Organisationsrichtlinien in der Liste der Organisationsrichtlinien von Google Cloud verfügbar.

  5. Prüfen Sie mit dem Befehl gcloud org-policies list-custom-constraints, ob die benutzerdefinierte Einschränkung vorhanden ist:
  6. gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID

    Ersetzen Sie ORGANIZATION_ID durch die ID Ihrer Organisationsressource.

    Weitere Informationen finden Sie unter Organisationsrichtlinien aufrufen.

Benutzerdefinierte Einschränkung erzwingen

Sie können eine Beschränkung erzwingen, indem Sie eine Organisationsrichtlinie erstellen, die darauf verweist, und diese Organisationsrichtlinie dann auf eine Ressource von Google Cloud anwenden.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Organisationsrichtlinien.

    Zu den Organisationsrichtlinien

  2. Wählen Sie in der Projektauswahl das Projekt aus, für das Sie die Organisationsrichtlinie festlegen möchten.
  3. Wählen Sie auf der Seite Organisationsrichtlinien die gewünschte Beschränkung aus, um die Seite Richtliniendetails aufzurufen.
  4. Zum Konfigurieren der Organisationsrichtlinie für diese Ressource klicken Sie auf Richtlinie verwalten.
  5. Wählen Sie auf der Seite Richtlinie bearbeiten die Option Richtlinie der übergeordneten Ressource überschreiben aus.
  6. Klicken Sie auf Regel hinzufügen.
  7. Wählen Sie im Abschnitt Erzwingung aus, ob diese Organisationsrichtlinie erzwungen wird.
  8. 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 unbedingte Regel hinzufügen, da die Richtlinie sonst nicht gespeichert werden kann. Weitere Informationen finden Sie unter Organisationsrichtlinien mit Tags eingrenzen.
  9. Klicken Sie auf Änderungen testen, um die Auswirkungen der Organisationsrichtlinie zu simulieren. Weitere Informationen finden Sie unter Änderungen an Organisationsrichtlinien mit dem Richtliniensimulator testen.
  10. Klicken Sie auf Probelaufrichtlinie festlegen, um die Organisationsrichtlinie im Probelaufmodus zu erzwingen. Weitere Informationen finden Sie unter Organisationsrichtlinien testen.
  11. Nachdem Sie überprüft haben, ob die Organisationsrichtlinie im Probelaufmodus wie vorgesehen funktioniert, legen Sie die aktive Richtlinie fest, indem Sie auf Richtlinie festlegen klicken.

gcloud

  1. Wenn Sie eine Organisationsrichtlinie mit booleschen Regeln erstellen möchten, erstellen Sie eine YAML-Richtliniendatei, die auf die Beschränkung verweist:
  2. name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
    spec:
      rules:
      - enforce: true
    
    dryRunSpec:
      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 Beschränkung definiert haben. Beispiel: custom.batchMustHaveSpecifiedCategoryLabel.
  3. Führen Sie den folgenden Befehl mit dem Flag dryRunSpec aus, um die Organisationsrichtlinie im Probelaufmodus zu erzwingen:
  4. gcloud org-policies set-policy POLICY_PATH --update-mask=dryRunSpec

    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.

  5. Nachdem Sie überprüft haben, ob die Organisationsrichtlinie im Probelaufmodus wie vorgesehen funktioniert, legen Sie die aktive Richtlinie mit dem Befehl org-policies set-policy und dem Flag spec fest:
  6. gcloud org-policies set-policy POLICY_PATH --update-mask=spec

    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 Einschränkung testen

In diesem Abschnitt wird beschrieben, wie Sie benutzerdefinierte Einschränkungen für Batch-, Sitzungs- und Sitzungsvorlagenressourcen testen.

Benutzerdefinierte Einschränkung für eine Batchressource testen

Im folgenden Beispiel für die Batch-Erstellung wird davon ausgegangen, dass eine benutzerdefinierte Einschränkung erstellt und bei der Batch-Erstellung erzwungen wurde, um sicherzustellen, dass dem Batch das Label „category“ mit dem Wert „retail“, „ads“ oder „service:("category" in resource.labels) && (resource.labels['category'] in ['retail', 'ads', 'service'])“ zugewiesen ist.

gcloud dataproc batches submit spark \
  --region us-west1
  --jars file:///usr/lib/spark/examples/jars/spark-examples.jar \
  --class org.apache.spark.examples.SparkPi  \
  --network default \
  --labels category=foo \
  --100

Beispielausgabe:

Operation denied by custom org policies: ["customConstraints/custom.batchMustHaveSpecifiedCategoryLabel": ""Only allow Dataproc batch creation if it has a 'category' label with
  a 'retail', 'ads', or 'service' value""]

Benutzerdefinierte Einschränkung für eine Sitzungsressource testen

Im folgenden Beispiel für die Sitzungserstellung wird davon ausgegangen, dass eine benutzerdefinierte Einschränkung erstellt und bei der Sitzungserstellung erzwungen wurde, um sicherzustellen, dass die Sitzung ein name hat, das mit orgName beginnt.

gcloud beta dataproc sessions create spark test-session
  --location us-central1

Beispielausgabe:

Operation denied by custom org policy:
["customConstraints/custom.denySessionNameNotStartingWithOrgName": "Deny session
creation if its name does not start with 'orgName'"]

Benutzerdefinierte Einschränkung für eine Sitzungsvorlagenressource testen

Im folgenden Beispiel für die Erstellung einer Sitzungsvorlage wird davon ausgegangen, dass eine benutzerdefinierte Einschränkung erstellt und bei der Erstellung und Aktualisierung der Sitzungsvorlage erzwungen wurde, um sicherzustellen, dass die Sitzungsvorlage eine name hat, die mit orgName beginnt.

gcloud beta dataproc session-templates import test-session-template
--source=saved-template.yaml

Beispielausgabe:

Operation denied by custom org policy:
["customConstraints/custom.denySessionTemplateNameNotStartingWithOrgName":
"Deny session template creation or update if its name does not start with
'orgName'"]

Einschränkungen für Ressourcen und Vorgänge

In diesem Abschnitt werden die verfügbaren benutzerdefinierten Einschränkungen für Managed Service for Apache Spark für Batch- und Sitzungsressourcen aufgeführt.

Unterstützte Batch-Einschränkungen

Die folgenden benutzerdefinierten Einschränkungen für Managed Service for Apache Spark sind verfügbar, wenn Sie eine Batcharbeitslast erstellen (einreichen):

Allgemein

  • resource.labels

PySparkBatch

  • resource.pysparkBatch.mainPythonFileUri
  • resource.pysparkBatch.args
  • resource.pysparkBatch.pythonFileUris
  • resource.pysparkBatch.jarFileUris
  • resource.pysparkBatch.fileUris
  • resource.pysparkBatch.archiveUris

SparkBatch

  • resource.sparkBatch.mainJarFileUri
  • resource.sparkBatch.mainClass
  • resource.sparkBatch.args
  • resource.sparkBatch.jarFileUris
  • resource.sparkBatch.fileUris
  • resource.sparkBatch.archiveUris

SparRBatch

  • resource.sparkRBatch.mainRFileUri
  • resource.sparkRBatch.args
  • resource.sparkRBatch.fileUris
  • resource.sparkRBatch.archiveUris

SparkSqlBatch

  • resource.sparkSqlBatch.queryFileUri
  • resource.sparkSqlBatch.queryVariables
  • resource.sparkSqlBatch.jarFileUris

RuntimeConfig

  • resource.runtimeConfig.version
  • resource.runtimeConfig.containerImage
  • resource.runtimeConfig.properties
  • resource.runtimeConfig.repositoryConfig.pypiRepositoryConfig.pypiRepository
  • resource.runtimeConfig.autotuningConfig.scenarios
  • resource.runtimeConfig.cohort

ExecutionConfig

  • resource.environmentConfig.executionConfig.serviceAccount
  • resource.environmentConfig.executionConfig.networkUri
  • resource.environmentConfig.executionConfig.subnetworkUri
  • resource.environmentConfig.executionConfig.networkTags
  • resource.environmentConfig.executionConfig.kmsKey
  • resource.environmentConfig.executionConfig.idleTtl
  • resource.environmentConfig.executionConfig.ttl
  • resource.environmentConfig.executionConfig.stagingBucket
  • resource.environmentConfig.executionConfig.authenticationConfig.userWorkloadAuthenticationType

PeripheralsConfig

  • resource.environmentConfig.peripheralsConfig.metastoreService
  • resource.environmentConfig.peripheralsConfig.sparkHistoryServerConfig.dataprocCluster

Unterstützte Sitzungseinschränkungen

Die folgenden Sitzungsattribute stehen zur Verfügung, wenn Sie benutzerdefinierte Einschränkungen für serverlose Sitzungen erstellen:

Allgemein

  • resource.name
  • resource.sparkConnectSession
  • resource.user
  • resource.sessionTemplate

JupyterSession

  • resource.jupyterSession.kernel
  • resource.jupyterSession.displayName

RuntimeConfig

  • resource.runtimeConfig.version
  • resource.runtimeConfig.containerImage
  • resource.runtimeConfig.properties
  • resource.runtimeConfig.repositoryConfig.pypiRepositoryConfig.pypiRepository
  • resource.runtimeConfig.autotuningConfig.scenarios
  • resource.runtimeConfig.cohort

ExecutionConfig

  • resource.environmentConfig.executionConfig.serviceAccount
  • resource.environmentConfig.executionConfig.networkUri
  • resource.environmentConfig.executionConfig.subnetworkUri
  • resource.environmentConfig.executionConfig.networkTags
  • resource.environmentConfig.executionConfig.kmsKey
  • resource.environmentConfig.executionConfig.idleTtl
  • resource.environmentConfig.executionConfig.ttl
  • resource.environmentConfig.executionConfig.stagingBucket
  • resource.environmentConfig.executionConfig.authenticationConfig.userWorkloadAuthenticationType

PeripheralsConfig

  • resource.environmentConfig.peripheralsConfig.metastoreService
  • resource.environmentConfig.peripheralsConfig.sparkHistoryServerConfig.dataprocCluster

Unterstützte Einschränkungen für Sitzungsvorlagen

Die folgenden Attribute von Sitzungsvorlagen können verwendet werden, wenn Sie benutzerdefinierte Einschränkungen für serverlose Sitzungsvorlagen erstellen:

Allgemein

  • resource.name
  • resource.description
  • resource.sparkConnectSession

JupyterSession

  • resource.jupyterSession.kernel
  • resource.jupyterSession.displayName

RuntimeConfig

  • resource.runtimeConfig.version
  • resource.runtimeConfig.containerImage
  • resource.runtimeConfig.properties
  • resource.runtimeConfig.repositoryConfig.pypiRepositoryConfig.pypiRepository
  • resource.runtimeConfig.autotuningConfig.scenarios
  • resource.runtimeConfig.cohort

ExecutionConfig

  • resource.environmentConfig.executionConfig.serviceAccount
  • resource.environmentConfig.executionConfig.networkUri
  • resource.environmentConfig.executionConfig.subnetworkUri
  • resource.environmentConfig.executionConfig.networkTags
  • resource.environmentConfig.executionConfig.kmsKey
  • resource.environmentConfig.executionConfig.idleTtl
  • resource.environmentConfig.executionConfig.ttl
  • resource.environmentConfig.executionConfig.stagingBucket
  • resource.environmentConfig.executionConfig.authenticationConfig.userWorkloadAuthenticationType

PeripheralsConfig

  • resource.environmentConfig.peripheralsConfig.metastoreService
  • resource.environmentConfig.peripheralsConfig.sparkHistoryServerConfig.dataprocCluster

Beispiele für benutzerdefinierte Einschränkungen für häufige Anwendungsfälle

In diesem Abschnitt finden Sie Beispiele für benutzerdefinierte Einschränkungen für häufige Anwendungsfälle für Batch- und Sitzungsressourcen.

Beispiele für benutzerdefinierte Einschränkungen für eine Batchressource

In der folgenden Tabelle finden Sie Beispiele für benutzerdefinierte Batchbeschränkungen für Managed Service for Apache Spark:

Beschreibung Beschränkungssyntax
Dem Batch muss ein „category“-Label mit zulässigen Werten angehängt werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchMustHaveSpecifiedCategoryLabel
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition: ("category" in resource.labels) && (resource.labels['category'] in ['retail', 'ads', 'service'])
    actionType: ALLOW
    displayName: Enforce batch "category" label requirement.
    description: Only allow batch creation if it attaches a "category" label with an allowable value.
Für den Batch muss eine zulässige Laufzeitversion festgelegt werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchMustUseAllowedVersion
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition:  (has(resource.runtimeConfig.version)) && (resource.runtimeConfig.version in ["2.0.45", "2.0.48"])
    actionType: ALLOW
    displayName: Enforce batch runtime version.
    description: Only allow batch creation if it sets an allowable runtime version.
SparkSQL muss verwendet werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchMustUseSparkSQL
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition: (has(resource.sparkSqlBatch))
    actionType: ALLOW
    displayName: Enforce batch only use SparkSQL Batch.
    description: Only allow creation of SparkSQL Batch.
Die TTL für den Batch muss weniger als 2 Stunden betragen.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchMustSetLessThan2hTtl
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition:  (has(resource.environmentConfig.executionConfig.ttl)) && (resource.environmentConfig.executionConfig.ttl <= duration('2h'))
    actionType: ALLOW
    displayName: Enforce batch TTL.
    description: Only allow batch creation if it sets an allowable TTL.
Im Batch können maximal 20 Spark-Executors festgelegt werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchInitialExecutorMax20
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition: (has(resource.runtimeConfig.properties)) && ('spark.executor.instances' in resource.runtimeConfig.properties)
     && (int(resource.runtimeConfig.properties['spark.executor.instances'])>20)
    actionType: DENY
    displayName: Enforce maximum number of batch Spark executor instances.
    description: Deny batch creation if it specifies more than 20 Spark executor instances.
Im Batch können maximal 20 anfängliche Executors für die dynamische Zuordnung von Spark festgelegt werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchDynamicAllocationInitialExecutorMax20
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition: (has(resource.runtimeConfig.properties)) && ('spark.dynamicAllocation.initialExecutors' in resource.runtimeConfig.properties)
     && (int(resource.runtimeConfig.properties['spark.dynamicAllocation.initialExecutors'])>20)
    actionType: DENY
    displayName: Enforce maximum number of batch dynamic allocation initial executors.
    description: Deny batch creation if it specifies more than 20 Spark dynamic allocation initial executors.
Der Batch darf nicht mehr als 20 Executors für die dynamische Zuweisung enthalten.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchDynamicAllocationMaxExecutorMax20
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition: (resource.runtimeConfig.properties['spark.dynamicAllocation.enabled']=='false') || (('spark.dynamicAllocation.maxExecutors' in resource.runtimeConfig.properties) && (int(resource.runtimeConfig.properties['spark.dynamicAllocation.maxExecutors'])<=20))
    actionType: ALLOW
    displayName: Enforce batch maximum number of dynamic allocation executors.
    description:  Only allow batch creation if dynamic allocation is disabled or
    the maximum number of dynamic allocation executors is set to less than or equal to 20.
Im Batch muss der KMS-Schlüssel auf ein zulässiges Muster festgelegt werden.
    name: organizations/ORGANIZATION_ID/custom.batchKmsPattern
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition:  matches(resource.environmentConfig.executionConfig.kmsKey, '^keypattern[a-z]$')
    actionType: ALLOW
    displayName: Enforce batch KMS Key pattern.
    description: Only allow batch creation if it sets the KMS key to an allowable pattern.
Für den Staging-Bucket-Präfix muss ein zulässiger Wert festgelegt werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchStagingBucketPrefix
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition:  resource.environmentConfig.executionConfig.stagingBucket.startsWith(ALLOWED_PREFIX)
    actionType: ALLOW
    displayName: Enforce batch staging bucket prefix.
    description: Only allow batch creation if it sets the staging bucket prefix to ALLOWED_PREFIX.
Die Speichereinstellung für die Batch-Ausführung muss mit einem Suffix m enden und kleiner als 20.000 m sein.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchExecutorMemoryMax
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition:  ('spark.executor.memory' in resource.runtimeConfig.properties) && (resource.runtimeConfig.properties['spark.executor.memory'].endsWith('m')) && (int(resource.runtimeConfig.properties['spark.executor.memory'].split('m')[0])<20000)
    actionType: ALLOW
    displayName: Enforce batch executor maximum memory.
    description: Only allow batch creation if the executor memory setting ends with a suffix 'm' and is less than 20000 m.

Beispiele für benutzerdefinierte Einschränkungen für eine Sitzungsressource

Die folgende Tabelle enthält Beispiele für benutzerdefinierte Einschränkungen für Managed Service for Apache Spark-Sitzungen:

Beschreibung Beschränkungssyntax
In der Sitzung muss sessionTemplate auf einen leeren String festgelegt werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.sessionTemplateMustBeEmpty
    resourceTypes:
    - dataproc.googleapis.com/Session
    methodTypes:
    - CREATE
    condition: resource.sessionTemplate == ""
    actionType: ALLOW
    displayName: Enforce empty session templates.
    description: Only allow session creation if session template is empty string.
sessionTemplate muss mit genehmigten Vorlagen-IDs übereinstimmen.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.sessionTemplateIdMustBeApproved
    resourceTypes:
    - dataproc.googleapis.com/Session
    methodTypes:
    - CREATE
    condition:
    resource.sessionTemplate.startsWith("https://www.googleapis.com/compute/v1/projects/")
      &&
      resource.sessionTemplate.contains("/locations/") &&
      resource.sessionTemplate.contains("/sessionTemplates/") &&
       (
         resource.sessionTemplate.endsWith("/1") ||
         resource.sessionTemplate.endsWith("/2") ||
         resource.sessionTemplate.endsWith("/13")
       )
    actionType: ALLOW
    displayName: Enforce templateId must be 1, 2, or 13.
    description: Only allow session creation if session template ID is in the
    approved list, that is, 1, 2 and 13.
Für die Authentifizierung der Arbeitslast müssen Anmeldedaten des Endnutzers verwendet werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.AllowEUCSessions
    resourceTypes:
    - dataproc.googleapis.com/Session
    methodTypes:
    - CREATE
    condition:
    resource.environmentConfig.executionConfig.authenticationConfig.userWorkloadAuthenticationType=="END_USER_CREDENTIALS"
    actionType: ALLOW
    displayName: Require end user credential authenticated sessions.
    description: Allow session creation only if the workload is authenticated
    using end-user credentials.
In der Sitzung muss eine zulässige Laufzeitversion festgelegt werden.
    name: organizations/ORGANIZATION_ID/custom.sessionMustUseAllowedVersion
    resourceTypes:
    - dataproc.googleapis.com/Session
    methodTypes:
    - CREATE
    condition: (has(resource.runtimeConfig.version)) &&
    (resource.runtimeConfig.version in ["2.0.45", "2.0.48"])
    actionType: ALLOW
    displayName: Enforce session runtime version.
    description: Only allow session creation if it sets an allowable runtime
    version.
Für die Sitzung muss eine TTL von weniger als 2 Stunden festgelegt werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.sessionMustSetLessThan2hTtl
    resourceTypes:
    - dataproc.googleapis.com/Session
    methodTypes:
    - CREATE
    condition: (has(resource.environmentConfig.executionConfig.ttl)) &&
    (resource.environmentConfig.executionConfig.ttl <= duration('2h'))
    actionType: ALLOW
    displayName: Enforce session TTL.
    description: Only allow session creation if it sets an allowable TTL.
Für eine Sitzung können maximal 20 Spark-Initial-Executors festgelegt werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.sessionInitialExecutorMax20
    resourceTypes:
    - dataproc.googleapis.com/Session
    methodTypes:
    - CREATE
    condition: (has(resource.runtimeConfig.properties)) &&
    ('spark.executor.instances' in resource.runtimeConfig.properties) &&
    (int(resource.runtimeConfig.properties['spark.executor.instances'])>20)
    actionType: DENY
    displayName: Enforce maximum number of session Spark executor instances.
    description: Deny session creation if it specifies more than 20 Spark executor
    instances.
In der Sitzung können nicht mehr als 20 anfängliche Executors für die dynamische Zuordnung von Spark festgelegt werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.sessionDynamicAllocationInitialExecutorMax20
    resourceTypes:
    - dataproc.googleapis.com/Session
    methodTypes:
    - CREATE
    condition: (has(resource.runtimeConfig.properties)) &&
    ('spark.dynamicAllocation.initialExecutors' in resource.runtimeConfig.properties)
    && (int(resource.runtimeConfig.properties['spark.dynamicAllocation.initialExecutors'])>20)
    actionType: DENY
    displayName: Enforce maximum number of session dynamic allocation initial executors.
    description: Deny session creation if it specifies more than 20 Spark dynamic
    allocation initial executors.
In der Sitzung muss der KMS-Schlüssel auf ein zulässiges Muster festgelegt werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.sessionKmsPattern
    resourceTypes:
    - dataproc.googleapis.com/Session
    methodTypes:
    - CREATE
    condition: matches(resource.environmentConfig.executionConfig.kmsKey, '^keypattern[a-z]$')
    actionType: ALLOW
    displayName: Enforce session KMS Key pattern.
    description: Only allow session creation if it sets the KMS key to an
    allowable pattern.
In der Sitzung muss das Präfix des Staging-Buckets auf einen zulässigen Wert festgelegt werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.sessionStagingBucketPrefix
    resourceTypes:
    - dataproc.googleapis.com/Session
    methodTypes:
    - CREATE
    condition: resource.environmentConfig.executionConfig.stagingBucket.startsWith(ALLOWED_PREFIX)
    actionType: ALLOW
    displayName: Enforce session staging bucket prefix.
    description: Only allow session creation if it sets the staging bucket prefix
    to ALLOWED_PREFIX.
Die Einstellung für den Arbeitsspeicher des Sitzungsausführers muss mit dem Suffix m enden und darf nicht mehr als 20.000 m betragen.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.sessionExecutorMemoryMax
    resourceTypes:
    - dataproc.googleapis.com/Session
    methodTypes:
    - CREATE
    condition: ('spark.executor.memory' in resource.runtimeConfig.properties) &&
    (resource.runtimeConfig.properties['spark.executor.memory'].endsWith('m')) &&
    (int(resource.runtimeConfig.properties['spark.executor.memory'].split('m')[0])<20000)
    actionType: ALLOW
    displayName: Enforce session executor maximum memory.
    description: Only allow session creation if the executor memory setting ends
    with a suffix 'm' and is less than 20000 m.

Beispiele für benutzerdefinierte Einschränkungen für eine Sitzungsvorlagenressource

Die folgende Tabelle enthält Beispiele für benutzerdefinierte Einschränkungen für Sitzungsvorlagen für Managed Service for Apache Spark:

Beschreibung Beschränkungssyntax
Der Name der Sitzungsvorlage muss mit org-name enden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.denySessionTemplateNameNotEndingWithOrgName
    resourceTypes:
    - dataproc.googleapis.com/SessionTemplate
    methodTypes:
    - CREATE
    - UPDATE
    condition: '!resource.name.endsWith(''org-name'')'
    actionType: DENY
    displayName: DenySessionTemplateNameNotEndingWithOrgName
    description: Deny session template creation/update if its name does not end with 'org-name'
In der Sitzungsvorlage muss eine zulässige Laufzeitversion festgelegt sein.
    name: organizations/ORGANIZATION_ID/custom.sessionTemplateMustUseAllowedVersion
    resourceTypes:
    - dataproc.googleapis.com/SessionTemplate
    methodTypes:
    - CREATE
    - UPDATE
    condition: (has(resource.runtimeConfig.version)) &&
    (resource.runtimeConfig.version in ["2.0.45", "2.0.48"])
    actionType: ALLOW
    displayName: Enforce session template runtime version.
    description: Only allow session template creation or update if it sets an
    allowable runtime version.
In der Sitzungsvorlage muss eine TTL von weniger als 2 Stunden festgelegt werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.sessionTemplateMustSetLessThan2hTtl
    resourceTypes:
    - dataproc.googleapis.com/SessionTemplate
    methodTypes:
    - CREATE
    - UPDATE
    condition: (has(resource.environmentConfig.executionConfig.ttl)) &&
    (resource.environmentConfig.executionConfig.ttl <= duration('2h'))
    actionType: ALLOW
    displayName: Enforce session template TTL.
    description: Only allow session template creation or update if it sets an
    allowable TTL.
In der Sitzungsvorlage können maximal 20 Spark-Executors festgelegt werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.sessionTemplateInitialExecutorMax20
    resourceTypes:
    - dataproc.googleapis.com/SessionTemplate
    methodTypes:
    - CREATE
    - UPDATE
    condition: (has(resource.runtimeConfig.properties)) &&
    ('spark.executor.instances' in resource.runtimeConfig.properties) &&
    (int(resource.runtimeConfig.properties['spark.executor.instances'])>20)
    actionType: DENY
    displayName: Enforce maximum number of session Spark executor instances.
    description: Deny session template creation or update if it specifies more
    than 20 Spark executor instances.
In der Sitzungsvorlage können nicht mehr als 20 anfängliche Spark-Executors für die dynamische Zuweisung festgelegt werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.sessionTemplateDynamicAllocationInitialExecutorMax20
    resourceTypes:
    - dataproc.googleapis.com/SessionTemplate
    methodTypes:
    - CREATE
    - UPDATE
    condition: (has(resource.runtimeConfig.properties)) &&
    ('spark.dynamicAllocation.initialExecutors' in resource.runtimeConfig.properties)
    && (int(resource.runtimeConfig.properties['spark.dynamicAllocation.initialExecutors'])>20)
    actionType: DENY
    displayName: Enforce maximum number of session dynamic allocation initial executors.
    description: Deny session template creation or update if it specifies more than 20
    Spark dynamic allocation initial executors.
In der Sitzungsvorlage muss der KMS-Schlüssel auf ein zulässiges Muster festgelegt werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.sessionTemplateKmsPattern
    resourceTypes:
    - dataproc.googleapis.com/SessionTemplate
    methodTypes:
    - CREATE
    - UPDATE
    condition: matches(resource.environmentConfig.executionConfig.kmsKey, '^keypattern[a-z]$')
    actionType: ALLOW
    displayName: Enforce session KMS Key pattern.
    description: Only allow session template creation or update if it sets the KMS key to an
    allowable pattern.
In der Sitzungsvorlage muss das Präfix des Staging-Buckets auf einen zulässigen Wert festgelegt werden.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.sessionTemplateStagingBucketPrefix
    resourceTypes:
    - dataproc.googleapis.com/SessionTemplate
    methodTypes:
    - CREATE
    - UPDATE
    condition: resource.environmentConfig.executionConfig.stagingBucket.startsWith(ALLOWED_PREFIX)
    actionType: ALLOW
    displayName: Enforce session staging bucket prefix.
    description: Only allow session template creation or update if it sets the staging
    bucket prefix to ALLOWED_PREFIX.
Die Arbeitsspeichereinstellung für die Ausführung der Sitzungsvorlage muss mit dem Suffix m enden und darf nicht mehr als 20.000 m betragen.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.sessionTemplateExecutorMemoryMax
    resourceTypes:
    - dataproc.googleapis.com/SessionTemplate
    methodTypes:
    - CREATE
    - UPDATE
    condition: ('spark.executor.memory' in resource.runtimeConfig.properties) &&
    (resource.runtimeConfig.properties['spark.executor.memory'].endsWith('m')) &&
    (int(resource.runtimeConfig.properties['spark.executor.memory'].split('m')[0])<20000)
    actionType: ALLOW
    displayName: Enforce session executor maximum memory.
    description: Only allow session template creation or update if the executor memory setting ends
    with a suffix 'm' and is less than 20000 m.

Nächste Schritte