Usa restricciones personalizadas

Google Cloud La Política de la organización te brinda un control centralizado y programático sobre los recursos de tu organización. Como administrador de políticas de la organización, puedes definir una política de la organización, que es un conjunto de limitaciones llamadas restricciones que se aplican a losGoogle Cloud recursos y a sus descendientes en la Google Cloud jerarquía de recursos. Puedes aplicar políticas de la organización a nivel de la organización, carpeta o proyecto.

La política de la organización proporciona restricciones predefinidas para varios servicios deGoogle Cloud . Sin embargo, si deseas un control más detallado y personalizable sobre los campos específicos que están restringidos en las políticas de tu organización, también puedes crear restricciones personalizadas y usarlas en una política de la organización.

Beneficios

Puedes usar una política de organización personalizada para permitir o denegar operaciones específicas en lotes y sesiones de Serverless for Apache Spark. Por ejemplo, si una solicitud para crear una carga de trabajo por lotes no satisface la validación de restricciones personalizadas según lo establece la política de tu organización, la solicitud fallará y se devolverá un error al llamador.

Herencia de políticas

De forma predeterminada, las políticas de la organización se heredan según los subordinados de los recursos en los que se aplica la política. Por ejemplo, si aplicas una política en una carpeta, Google Cloud aplica la política en todos los proyectos de la carpeta. Para obtener más información sobre este comportamiento y cómo cambiarlo, consulta Reglas de evaluación de la jerarquía.

Precios

El Servicio de Políticas de la Organización, que incluye las restricciones predefinidas y personalizadas, se ofrece sin cargo.

Antes de comenzar

  1. Configura tu proyecto
    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.

      Go to project selector

    3. Make sure that billing is enabled for your Google Cloud project.

    4. Enable the Serverless for Apache Spark API.

      Enable the API

    5. Install the Google Cloud CLI.

    6. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    7. To initialize the gcloud CLI, run the following command:

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

      Go to project selector

    9. Make sure that billing is enabled for your Google Cloud project.

    10. Enable the Serverless for Apache Spark API.

      Enable the API

    11. Install the Google Cloud CLI.

    12. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    13. To initialize the gcloud CLI, run the following command:

      gcloud init
    14. Asegúrate de conocer el ID de la organización.
    15. Roles obligatorios

      Para obtener los permisos que necesitas para administrar las políticas de la organización, pídele a tu administrador que te otorgue el rol de IAM de administrador de políticas de la organización (roles/orgpolicy.policyAdmin) en el recurso de organización. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

      Este rol predefinido contiene los permisos necesarios para administrar las políticas de la organización. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

      Permisos necesarios

      Se requieren los siguientes permisos para administrar las políticas de la organización:

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

      También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

      Crea una restricción personalizada

      Una restricción personalizada se define en un archivo YAML a través de los recursos, los métodos, las condiciones y las acciones a los que se aplica. Serverless for Apache Spark admite restricciones personalizadas que se aplican al método CREATE de los recursos de lote y sesión.

      Para obtener más información sobre cómo crear una restricción personalizada, consulta Define restricciones personalizadas.

      Crea una restricción personalizada para un recurso por lotes

      Para crear un archivo YAML para una restricción personalizada de Serverless para Apache Spark para un recurso de lote, usa el siguiente formato:

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

      Reemplaza lo siguiente:

      • ORGANIZATION_ID: el ID de la organización, como 123456789.

      • CONSTRAINT_NAME: el nombre que deseas para tu nueva restricción personalizada. Una restricción personalizada debe comenzar con custom. y solo puede incluir letras mayúsculas, minúsculas o números, por ejemplo, custom.batchMustHaveSpecifiedCategoryLabel. La longitud máxima de este campo es de 70 caracteres, sin contar el prefijo, por ejemplo, organizations/123456789/customConstraints/custom.

      • CONDITION: una condición de CEL que se escribe en una representación de un recurso de servicio compatible. La longitud máxima de este campo es 1000 caracteres. Para obtener más información sobre los recursos disponibles para escribir condiciones, consulta Restricciones de Dataproc Serverless en recursos y operaciones. Condición de la muestra: ("category" in resource.labels) && (resource.labels['category'] in ['retail', 'ads', 'service']).

      • ACTION: La acción que se realiza si se cumple la condición. Puede ser ALLOW o DENY.

      • DISPLAY_NAME: un nombre descriptivo para la restricción. Ejemplo de nombre visible: "Exige la etiqueta 'categoría' por lotes". La longitud máxima de este campo es 200 caracteres.

      • DESCRIPTION: una descripción fácil de usar de la restricción que se mostrará como un mensaje de error cuando se infringe la política. La longitud máxima de este campo es 2000 caracteres. Descripción de ejemplo: "Solo permite la creación de lotes de Dataproc si tienen una etiqueta 'category' con un valor 'retail', 'ads' o 'service'".

      Crea una restricción personalizada para un recurso de sesión

      Para crear un archivo YAML para una restricción personalizada de Serverless para Apache Spark para un recurso de sesión, usa el siguiente formato:

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

      Reemplaza lo siguiente:

      • ORGANIZATION_ID: el ID de la organización, como 123456789.

      • CONSTRAINT_NAME: el nombre que deseas para tu nueva restricción personalizada. Una restricción personalizada debe comenzar con custom. y solo puede incluir letras mayúsculas, minúsculas o números, por ejemplo, custom.SessionNameMustStartWithTeamName. La longitud máxima de este campo es de 70 caracteres, sin contar el prefijo organizations/123456789/customConstraints/. Por ejemplo: organizations/123456789/customConstraints/custom.

      • CONDITION: una condición de CEL que se escribe en una representación de un recurso de servicio compatible. La longitud máxima de este campo es 1000 caracteres. Para obtener más información sobre los recursos disponibles para escribir condiciones, consulta Restricciones de Dataproc Serverless en recursos y operaciones. Condición de la muestra: (resource.name.startsWith("dataproc").

      • ACTION: La acción que se realiza si se cumple la condición. Puede ser ALLOW o DENY.

      • DISPLAY_NAME: un nombre descriptivo para la restricción. Ejemplo de nombre visible: "Forzar que la sesión tenga un TTL inferior a 2 horas". La longitud máxima de este campo es 200 caracteres.

      • DESCRIPTION: una descripción fácil de usar de la restricción que se mostrará como un mensaje de error cuando se infringe la política. La longitud máxima de este campo es 2000 caracteres. Descripción de la muestra: "Solo permite la creación de sesiones si se establece un TTL permitido".

      Configura una restricción personalizada

      Después de crear el archivo YAML para una nueva restricción personalizada, debes configurarla para que esté disponible para las políticas de la organización de tu organización. Para configurar una restricción personalizada, usa el comando gcloud org-policies set-custom-constraint:
      gcloud org-policies set-custom-constraint CONSTRAINT_PATH
      Reemplaza CONSTRAINT_PATH por la ruta de acceso completa al archivo de restricción personalizado. Por ejemplo, /home/user/customconstraint.yaml. Una vez completadas, tus restricciones personalizadas estarán disponibles como políticas de la organización en tu lista de Google Cloud políticas de la organización. Para verificar que la restricción personalizada exista, usa el comando gcloud org-policies list-custom-constraints:
      gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
      Reemplaza ORGANIZATION_ID por el ID del recurso de tu organización. Para obtener más información, consulta Visualiza las políticas de la organización.

      Aplica una restricción personalizada

      Puedes aplicar una restricción si creas una política de la organización que haga referencia a ella y, luego, aplicas esa política a un recurso Google Cloud .

      Console

      1. En la consola de Google Cloud , ve a la página Políticas de la organización.

        Ir a Políticas de la organización

      2. En el selector de proyectos, selecciona el proyecto para el que deseas configurar la política de la organización.
      3. En la lista de la página Políticas de la organización, selecciona tu restricción para ver la página Detalles de la política de esa restricción.
      4. Si deseas configurar las políticas de la organización para este recurso, haz clic en Administrar política.
      5. En la página Editar política, selecciona Anular la política del elemento superior.
      6. Haz clic en Agregar una regla.
      7. En la sección Aplicación, selecciona si la aplicación de esta política de la organización está activada o desactivada.
      8. Opcional: haz clic en Agregar condición para que la política de la organización sea condicional en una etiqueta. Ten en cuenta que si agregas una regla condicional a una política de la organización, debes agregar al menos una regla sin condición o la política no se puede guardar. Para obtener más información, consulta Configura una política de la organización con etiquetas.
      9. Haz clic en Probar cambios para simular el efecto de la política de la organización. La simulación de políticas no está disponible para las restricciones administradas heredadas. Para obtener más información, consulta Prueba los cambios en las políticas de la organización con Policy Simulator.
      10. Para finalizar y aplicar la política de la organización, haz clic en Establecer política. La política tarda hasta 15 minutos en aplicarse.

      gcloud

      Para crear una política de la organización con reglas booleanas, crea un archivo YAML de política que haga referencia a la restricción:

            name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
            spec:
              rules:
              - enforce: true
          

      Reemplaza lo siguiente:

      • PROJECT_ID: el proyecto en el que deseas aplicar tu restricción.
      • CONSTRAINT_NAME: el nombre que definiste para tu restricción personalizada. Por ejemplo: custom.batchMustHaveSpecifiedCategoryLabel

      Para aplicar la política de la organización que contiene la restricción, ejecuta el siguiente comando:

          gcloud org-policies set-policy POLICY_PATH
          

      Reemplaza POLICY_PATH por la ruta de acceso completa al archivo YAML de la política de la organización. La política tarda hasta 15 minutos en aplicarse.

      Prueba la restricción personalizada

      En esta sección, se describe cómo probar las restricciones personalizadas para los recursos de lotes y sesiones.

      Prueba la restricción personalizada para un recurso por lotes

      En el siguiente ejemplo de creación por lotes, se supone que se creó y aplicó una restricción personalizada en la creación por lotes para exigir que el lote tenga una etiqueta "categoría" adjunta con un valor de "minorista", "anuncios" o "servicio: ("category" in resource.labels) && (resource.labels['category'] in ['retail', 'ads', 'service'])".

      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
      

      Resultado de muestra:

      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""]
      

      Prueba la restricción personalizada para un recurso de sesión

      En el siguiente ejemplo de creación de sesión, se supone que se creó y aplicó una restricción personalizada en la creación de la sesión para exigir que la sesión tenga un name que comience con orgName.

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

      Resultado de muestra:

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

      Restricciones de Serverless para Apache Spark en recursos y operaciones

      En esta sección, se enumeran las restricciones personalizadas de Google Cloud Serverless para Apache Spark disponibles para los recursos de lotes y sesiones.

      Restricciones de lotes de Google Cloud Serverless para Apache Spark admitidas

      Las siguientes restricciones personalizadas de Serverless para Apache Spark están disponibles para usarse cuando creas (envías) una carga de trabajo por lotes:

      General

      • 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

      Restricciones de sesión de Google Cloud Serverless para Apache Spark admitidas

      Los siguientes atributos de sesión de Google Cloud Serverless for Apache Spark están disponibles para usarse cuando creas restricciones personalizadas en sesiones sin servidores:

      General

      • 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

      Restricciones personalizadas de ejemplo para casos de uso comunes

      En esta sección, se incluyen ejemplos de restricciones personalizadas para casos de uso comunes de recursos de lotes y sesiones.

      Ejemplo de restricciones personalizadas para un recurso de lote

      En la siguiente tabla, se proporcionan ejemplos de restricciones personalizadas por lotes de Serverless para Apache Spark:

      Descripción Sintaxis de la restricción
      El lote debe adjuntar una etiqueta "category" con valores permitidos.
          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.
      El lote debe establecer una versión del entorno de ejecución permitida.
          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.
      Debe usar SparkSQL.
          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.
      El lote debe establecer un TTL inferior a 2 horas.
          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.
      Batch no puede establecer más de 20 ejecutores iniciales de Spark.
          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.
      El lote no puede establecer más de 20 ejecutores iniciales de asignación dinámica de Spark.
          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.
      El lote no debe permitir más de 20 ejecutores de asignación dinámica.
          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.
      El lote debe establecer la clave de KMS en un patrón permitido.
          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.
      El lote debe establecer el prefijo del bucket de etapa de pruebas en un valor permitido.
          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.
      El parámetro de configuración de memoria del ejecutor de lotes debe terminar con el sufijo m y ser inferior a 20,000 m.
          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.

      Ejemplo de restricciones personalizadas para un recurso de sesión

      En la siguiente tabla, se proporcionan ejemplos de restricciones personalizadas de la sesión de Serverless para Apache Spark:

      Descripción Sintaxis de la restricción
      La sesión debe establecer sessionTemplate en una cadena vacía.
          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 debe ser igual a los IDs de plantilla aprobados.
          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.
      La sesión debe usar las credenciales del usuario final para autenticar la carga de trabajo.
          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.
      La sesión debe establecer una versión del entorno de ejecución permitida.
          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.
      La sesión debe establecer un TTL inferior a 2 horas.
          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.
      La sesión no puede establecer más de 20 ejecutores iniciales de Spark.
          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.
      La sesión no puede establecer más de 20 ejecutores iniciales de asignación dinámica de Spark.
          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.
      La sesión debe establecer la clave de KMS en un patrón permitido.
          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.
      La sesión debe establecer el prefijo del bucket de etapa de pruebas en un valor permitido.
          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 batch creation if it sets the staging bucket prefix
          to ALLOWED_PREFIX.
      El parámetro de configuración de memoria del ejecutor de sesión debe terminar con el sufijo m y ser inferior a 20,000 m.
          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.

      ¿Qué sigue?