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 Serverless 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.

Hinweise

  1. Projekt einrichten
    1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
    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 (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 Serverless 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. Install the 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 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 (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 Serverless 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. Install the 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 folgenden Befehl aus, um die gcloud CLI zu initialisieren:

      gcloud init
    14. Sie müssen Ihre Organisations-ID kennen.
    15. 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. „Serverlos“ für 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 Serverless 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 sie ein Label vom Typ ‚category‘ mit dem Wert ‚retail‘, ‚ads‘ oder ‚service‘ hat.“

      Benutzerdefinierte Beschränkung für eine Sitzungsressource erstellen

      Verwenden Sie das folgende Format, um eine YAML-Datei für eine benutzerdefinierte Einschränkung für Serverless 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 weniger als 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 Serverless for Apache Spark-Einschränkung 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

      Nachdem Sie die YAML-Datei für eine neue benutzerdefinierte Beschrä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 Beschränkung den Befehl gcloud org-policies set-custom-constraint:
      gcloud org-policies set-custom-constraint CONSTRAINT_PATH
      Ersetzen Sie CONSTRAINT_PATH durch den vollständigen Pfad zu Ihrer benutzerdefinierten Beschränkungsdatei. Beispiel: /home/user/customconstraint.yaml Nach Abschluss des Vorgangs sind Ihre benutzerdefinierten Beschränkungen als Organisationsrichtlinien in der Liste der Organisationsrichtlinien von Google Cloud verfügbar. Prüfen Sie mit dem Befehl gcloud org-policies list-custom-constraints, ob die benutzerdefinierte Beschränkung vorhanden ist:
      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 die Erzwingung dieser Organisationsrichtlinie aktiviert oder deaktiviert werden soll.
      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 Organisationsrichtlinie mit Tags festlegen.
      9. Klicken Sie auf Änderungen testen, um die Auswirkungen der Organisationsrichtlinie zu simulieren. Die Richtliniensimulation ist für veraltete verwaltete Beschränkungen nicht verfügbar. Weitere Informationen finden Sie unter Änderungen an Organisationsrichtlinien mit dem Policy Simulator testen.
      10. 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

      Wenn Sie eine Organisationsrichtlinie mit booleschen Regeln erstellen möchten, erstellen Sie eine YAML-Richtliniendatei, die auf die Beschrä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 Beschränkung erzwingen möchten.
      • CONSTRAINT_NAME: der Name, den Sie für Ihre benutzerdefinierte Beschränkung definiert haben. Beispiel: custom.batchMustHaveSpecifiedCategoryLabel.

      Führen Sie den folgenden Befehl aus, um die Organisationsrichtlinie mit der Beschrä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 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 Google Cloud Serverless für Apache Spark für Batch- und Sitzungsressourcen aufgeführt.

      Unterstützte Batch-Einschränkungen

      Die folgenden benutzerdefinierten Einschränkungen für Serverless 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 sind verfügbar, 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

      Die folgende Tabelle enthält Beispiele für benutzerdefinierte Einschränkungen für Serverless für Apache Spark-Batchs:

      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.
      Im Batch muss das Staging-Bucket-Präfix auf einen zulässigen 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 dem 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 Serverless for Apache Spark-Sitzungen:

      Beschreibung Beschränkungssyntax
      In der Sitzung muss sessionTemplate auf einen leeren String gesetzt 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 kleiner als 20.000 m sein.
          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 Serverless for Apache Spark-Sitzungsvorlagen:

      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-Initial-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 Speichereinstellung für die Ausführung der Sitzungsvorlage muss mit dem Suffix m enden und kleiner als 20.000 m sein.
          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