Use restrições personalizadas
Google Cloud A política da organização dá-lhe um controlo centralizado e programático sobre os recursos da sua organização. Enquanto administrador de políticas da organização, pode definir uma política da organização, que é um conjunto de restrições denominadas limitações que se aplicam aGoogle Cloud recursos e descendentes desses recursos na Google Cloud hierarquia de recursos. Pode aplicar políticas da organização ao nível da organização, da pasta ou do projeto.
A política da organização oferece restrições predefinidas para vários Google Cloud serviços. No entanto, se quiser um controlo mais detalhado e personalizável sobre os campos específicos que estão restritos nas políticas da sua organização, também pode criar restrições personalizadas e usá-las numa política da organização.
Vantagens
Pode usar uma política organizacional personalizada para permitir ou recusar operações específicas em lotes e sessões do Serverless para Apache Spark. Por exemplo, se um pedido para criar uma carga de trabalho em lote não cumprir a validação de restrições personalizadas definida pela política da sua organização, o pedido falha e é devolvido um erro ao autor da chamada.
Herança de políticas
Por predefinição, as políticas da organização são herdadas pelos descendentes dos recursos nos quais aplica a política. Por exemplo, se aplicar uma política a uma pasta, Google Cloud aplica a política a todos os projetos na pasta. Para saber mais acerca deste comportamento e como o alterar, consulte as regras de avaliação da hierarquia.
Preços
O serviço de políticas da organização, incluindo restrições predefinidas e personalizadas, é oferecido sem custo financeiro.
Antes de começar
- Configure o seu projeto
- 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.
-
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
- Certifique-se de que sabe o seu ID da organização.
-
orgpolicy.constraints.list
-
orgpolicy.policies.create
-
orgpolicy.policies.delete
-
orgpolicy.policies.list
-
orgpolicy.policies.update
-
orgpolicy.policy.get
-
orgpolicy.policy.set
ORGANIZATION_ID
: o ID da sua organização, como123456789
.CONSTRAINT_NAME
: o nome que quer para a nova restrição personalizada. Uma restrição personalizada tem de começar comcustom.
e só pode incluir letras maiúsculas, letras minúsculas ou números, por exemplo,custom.batchMustHaveSpecifiedCategoryLabel
. O comprimento máximo deste campo é de 70 carateres, sem contar com o prefixo, por exemplo,organizations/123456789/customConstraints/custom
.CONDITION
: uma condição CEL escrita em função de uma representação de um recurso de serviço suportado. Este campo tem um comprimento máximo de 1000 carateres. Para mais informações sobre os recursos disponíveis para escrever condições, consulte as restrições do Dataproc Serverless em recursos e operações. Condição da amostra:("category" in resource.labels) && (resource.labels['category'] in ['retail', 'ads', 'service'])
.ACTION
: a ação a tomar se a condição for cumprida. Pode serALLOW
ouDENY
.DISPLAY_NAME
: um nome simples para a restrição. Nome a apresentar de exemplo: "Aplique o requisito de etiqueta "categoria" em lote". Este campo tem um comprimento máximo de 200 carateres.DESCRIPTION
: uma descrição acessível da restrição a apresentar como uma mensagem de erro quando a política é violada. Este campo tem um comprimento máximo de 2000 carateres. Descrição de exemplo: "Só permitir a criação de lotes do Dataproc se tiver uma etiqueta "category" com um valor "retalho", "anúncios" ou "serviço"".ORGANIZATION_ID
: o ID da sua organização, como123456789
.CONSTRAINT_NAME
: o nome que quer para a nova restrição personalizada. Uma restrição personalizada tem de começar comcustom.
e só pode incluir letras maiúsculas, letras minúsculas ou números, por exemplo,custom.SessionNameMustStartWithTeamName
. O comprimento máximo deste campo é de 70 carateres, sem contar com o prefixoorganizations/123456789/customConstraints/
. Por exemplo,organizations/123456789/customConstraints/custom
.CONDITION
: uma condição CEL escrita em função de uma representação de um recurso de serviço suportado. Este campo tem um comprimento máximo de 1000 carateres. Para mais informações sobre os recursos disponíveis para escrever condições, consulte Restrições do Dataproc Serverless em recursos e operações. Condição da amostra:(resource.name.startsWith("dataproc")
.ACTION
: a ação a tomar se a condição for cumprida. Pode serALLOW
ouDENY
.DISPLAY_NAME
: um nome simples para a restrição. Nome a apresentar de exemplo: "Enforce session must have a ttl < 2 hours" (Impor que a sessão tem de ter um tempo de vida inferior a 2 horas). Este campo tem um comprimento máximo de 200 carateres.DESCRIPTION
: uma descrição acessível da restrição a apresentar como uma mensagem de erro quando a política é violada. Este campo tem um comprimento máximo de 2000 carateres. Descrição do exemplo: "Só permitir a criação de sessões se definir um TTL permitido".- Na Google Cloud consola, aceda à página Políticas de organização.
- No seletor de projetos, selecione o projeto para o qual quer definir a política de organização.
- Na lista da página Políticas da organização, selecione a restrição para ver a página Detalhes da política dessa restrição.
- Para configurar a política da organização para este recurso, clique em Gerir política.
- Na página Editar política, selecione Substituir política do elemento principal.
- Clique em Adicionar regra.
- Na secção Aplicação, selecione se a aplicação desta política organizacional está ativada ou desativada.
- Opcional: para tornar a política de organização condicional a uma etiqueta, clique em Adicionar condição. Tenha em atenção que, se adicionar uma regra condicional a uma política da organização, tem de adicionar, pelo menos, uma regra incondicional. Caso contrário, não é possível guardar a política. Para mais informações, consulte o artigo Definir uma política de organização com etiquetas.
- Clique em Testar alterações para simular o efeito da política da organização. A simulação de políticas não está disponível para restrições geridas antigas. Para mais informações, consulte o artigo Teste as alterações à política da organização com o simulador de políticas.
- Para concluir e aplicar a política da organização, clique em Definir política. A política demora até 15 minutos a entrar em vigor.
-
PROJECT_ID
: o projeto no qual quer aplicar a restrição. -
CONSTRAINT_NAME
: o nome que definiu para a restrição personalizada. Por exemplo,
.custom.batchMustHaveSpecifiedCategoryLabel
resource.labels
resource.pysparkBatch.mainPythonFileUri
resource.pysparkBatch.args
resource.pysparkBatch.pythonFileUris
resource.pysparkBatch.jarFileUris
resource.pysparkBatch.fileUris
resource.pysparkBatch.archiveUris
resource.sparkBatch.mainJarFileUri
resource.sparkBatch.mainClass
resource.sparkBatch.args
resource.sparkBatch.jarFileUris
resource.sparkBatch.fileUris
resource.sparkBatch.archiveUris
resource.sparkRBatch.mainRFileUri
resource.sparkRBatch.args
resource.sparkRBatch.fileUris
resource.sparkRBatch.archiveUris
resource.sparkSqlBatch.queryFileUri
resource.sparkSqlBatch.queryVariables
resource.sparkSqlBatch.jarFileUris
resource.runtimeConfig.version
resource.runtimeConfig.containerImage
resource.runtimeConfig.properties
resource.runtimeConfig.repositoryConfig.pypiRepositoryConfig.pypiRepository
resource.runtimeConfig.autotuningConfig.scenarios
resource.runtimeConfig.cohort
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
resource.environmentConfig.peripheralsConfig.metastoreService
resource.environmentConfig.peripheralsConfig.sparkHistoryServerConfig.dataprocCluster
resource.name
resource.sparkConnectSession
resource.user
resource.sessionTemplate
resource.jupyterSession.kernel
resource.jupyterSession.displayName
resource.runtimeConfig.version
resource.runtimeConfig.containerImage
resource.runtimeConfig.properties
resource.runtimeConfig.repositoryConfig.pypiRepositoryConfig.pypiRepository
resource.runtimeConfig.autotuningConfig.scenarios
resource.runtimeConfig.cohort
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
resource.environmentConfig.peripheralsConfig.metastoreService
resource.environmentConfig.peripheralsConfig.sparkHistoryServerConfig.dataprocCluster
- Para mais informações sobre as políticas de organização, consulte o artigo Introdução ao serviço de políticas de organização.
- Saiba como criar e gerir políticas da organização.
- Consulte a lista completa de restrições da política de organização predefinidas.
Funções necessárias
Para receber as autorizações de que precisa para gerir políticas da organização, peça ao seu administrador para lhe conceder a função de IAM de administrador de políticas da organização (
roles/orgpolicy.policyAdmin
) no recurso da organização. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.Esta função predefinida contém as autorizações necessárias para gerir políticas da organização. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para gerir políticas da organização:
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Crie uma restrição personalizada
Uma restrição personalizada é definida num ficheiro YAML pelos recursos, métodos, condições e ações aos quais é aplicada. O Serverless para Apache Spark suporta restrições personalizadas que são aplicadas ao método
CREATE
dos recursos de lote e sessão.Para mais informações sobre como criar uma restrição personalizada, consulte o artigo Definir restrições personalizadas.
Crie uma restrição personalizada para um recurso em lote
Para criar um ficheiro YAML para uma restrição personalizada do Serverless for Apache Spark para um recurso de lote, use o seguinte formato:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME resourceTypes: - dataproc.googleapis.com/Batch methodTypes: - CREATE condition: CONDITION actionType: ACTION displayName: DISPLAY_NAME description: DESCRIPTION
Substitua o seguinte:
Crie uma restrição personalizada para um recurso de sessão
Para criar um ficheiro YAML para uma restrição personalizada do Serverless for Apache Spark para um recurso de sessão, use o seguinte formato:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME resourceTypes: - dataproc.googleapis.com/Session methodTypes: - CREATE condition: CONDITION actionType: ACTION displayName: DISPLAY_NAME description: DESCRIPTION
Substitua o seguinte:
Configure uma restrição personalizada
Depois de criar o ficheiro YAML para uma nova restrição personalizada, tem de o configurar para o disponibilizar para as políticas da organização na sua organização. Para configurar uma restrição personalizada, use o comandogcloud org-policies set-custom-constraint
: Substituagcloud org-policies set-custom-constraint CONSTRAINT_PATH
CONSTRAINT_PATH
pelo caminho completo para o seu ficheiro de restrições personalizado. Por exemplo,/home/user/customconstraint.yaml
. Após a conclusão, as restrições personalizadas ficam disponíveis como políticas da organização na sua lista de Google Cloud políticas da organização. Para verificar se a restrição personalizada existe, use o comandogcloud org-policies list-custom-constraints
: Substituagcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID
pelo ID do recurso da sua organização. Para mais informações, consulte o artigo Ver políticas da organização.Aplique uma restrição personalizada
Pode aplicar uma restrição criando uma política da organização que a referencie e, em seguida, aplicando essa política da organização a um Google Cloud recurso.Consola
gcloud
Para criar uma política da organização com regras booleanas, crie um ficheiro YAML de política que faça referência à restrição:
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true
Substitua o seguinte:
Para aplicar a política da organização que contém a restrição, execute o seguinte comando:
gcloud org-policies set-policy POLICY_PATH
Substitua
POLICY_PATH
pelo caminho completo para o ficheiro YAML da política da organização. A política demora até 15 minutos a entrar em vigor.Teste a restrição personalizada
Esta secção descreve como testar restrições personalizadas para recursos de lotes e sessões.
Teste a restrição personalizada para um recurso em lote
O exemplo de criação em lote seguinte pressupõe que foi criada e aplicada uma restrição personalizada na criação em lote para exigir que o lote tenha uma etiqueta "category" anexada com um valor de "retail", "ads" ou "service:
("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
Exemplo de saída:
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""]Teste a restrição personalizada para um recurso de sessão
O exemplo de criação de sessão seguinte pressupõe que foi criada e aplicada uma restrição personalizada na criação de sessões para exigir que a sessão tenha um
name
a começar pororgName
.gcloud beta dataproc sessions create spark test-session --location us-central1
Exemplo de saída:
Operation denied by custom org policy: ["customConstraints/custom.denySessionNameNotStartingWithOrgName": "Deny session creation if its name does not start with 'orgName'"]
Restrições sem servidor para o Apache Spark em recursos e operações
Esta secção apresenta as restrições personalizadas do Google Cloud Serverless for Apache Spark disponíveis para recursos de processamento em lote e de sessão.
Restrições de lotes do Apache Spark sem servidor suportadas Google Cloud
As seguintes restrições personalizadas do Serverless for Apache Spark estão disponíveis para utilização quando cria (envia) uma carga de trabalho em lote:
Geral
PySparkBatch
SparkBatch
SparRBatch
SparkSqlBatch
RuntimeConfig
ExecutionConfig
PeripheralsConfig
Suportado Google Cloud Restrições de sessão sem servidor para o Apache Spark
Os seguintes atributos de sessão do Google Cloud Serverless for Apache Spark estão disponíveis para utilização quando cria restrições personalizadas em sessões sem servidor:
Geral
JupyterSession
RuntimeConfig
ExecutionConfig
PeripheralsConfig
Exemplos de restrições personalizadas para exemplos de utilização comuns
Esta secção inclui exemplos de restrições personalizadas para exemplos de utilização comuns de recursos de lotes e sessões.
Exemplo de restrições personalizadas para um recurso em lote
A tabela seguinte apresenta exemplos de restrições personalizadas de lotes do Serverless para Apache Spark:
Descrição Sintaxe de restrição O lote tem de anexar uma etiqueta "category" com 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.
O lote tem de definir uma versão de tempo de execução 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.
Tem de usar o 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.
O lote tem de definir o TTL para menos de 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.
O lote não pode definir mais de 20 executores iniciais do 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.
O lote não pode definir mais de 20 executores iniciais de atribuição dinâmica do 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.
O lote não pode permitir mais de 20 executores de alocação 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.
O lote tem de definir a chave do KMS para um padrão 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.
O lote tem de definir o prefixo do contentor de preparação para um 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.A definição de memória do executor de lotes tem de terminar com o sufixo m
e 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.
Exemplo de restrições personalizadas para um recurso de sessão
A tabela seguinte apresenta exemplos de restrições personalizadas de sessão do Serverless para Apache Spark:
Descrição Sintaxe de restrição A sessão tem de definir sessionTemplate
como uma string vazia.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
tem de ser igual aos IDs dos modelos aprovados.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.
A sessão tem de usar credenciais de utilizador final para autenticar a carga de trabalho. 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.
A sessão tem de definir uma versão de tempo de execução 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.
A sessão tem de definir um 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.
A sessão não pode definir mais de 20 executores iniciais do 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.
A sessão não pode definir mais de 20 executores iniciais de alocação dinâmica do 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.
A sessão tem de definir a chave do KMS para um padrão 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.
A sessão tem de definir o prefixo do contentor de preparação para um 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.
A definição de memória do executor da sessão tem de terminar com o sufixo m
e 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.
O que se segue?