Adicionar políticas personalizadas da organização

Nesta página, descrevemos como criar, configurar e gerenciar restrições personalizadas em instâncias do Cloud SQL. Para uma visão geral das políticas personalizadas da organização, consulte Políticas personalizadas da organização.

Antes de começar

  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. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

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

    Go to project selector

  7. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. Adicione o papel Administrador da política da organização (roles/orgpolicy.policyAdmin) à sua conta de usuário ou de serviço da página IAM e administrador.

    Acessar a página de contas do IAM

  11. Consulte Restrições antes de realizar este procedimento.

Campos compatíveis com restrições personalizadas

É possível definir restrições personalizadas nos seguintes campos:

Campo Exemplo de caso de uso:
SqlDatabaseVersion Exigir o uso de versões específicas do banco de dados
region Restringir a criação de instâncias a regiões específicas
availabilityType Aplicar alta disponibilidade
ipConfiguration > pscConfig > allowedConsumerProjects Restringir a lista de permissões de projetos do consumidor no PSC para projetos específicos
ipConfiguration > sslMode Aplique o modo SSL para ser ENCRYPTED_ONLY ou TRUSTED_CLIENT_CERTIFICATE_REQUIRED. Não é possível escolher o modo SSL ao criar uma instância do Cloud SQL no console do Google Cloud. Portanto, se você criar essa política da organização personalizada, precisará criar uma instância do Cloud SQL usando a gcloud CLI, a API ou o Terraform.
dataDiskType Exigir o uso de SSD ou HDD
backupConfiguration > location Restringir locais de backup automatizado a locais específicos
backupConfiguration > pointInTimeRecoveryEnabled Aplicar todas as instâncias para ativar a PITR
backupConfiguration > transactionLogRetentionDays Fazer com que todas as instâncias usem um período de armazenamento específico para a retenção de registros de transações
backupConfiguration > backupRetentionSettings > retentionUnit Aplicar os dias de retenção em todos os backups
passwordValidationPolicy > minLength Aplicar a política de senha para um tamanho mínimo
passwordValidationPolicy > complexity Aplicar a política de senha para complexidade
passwordValidationPolicy > reuseInterval Aplicar a política de senha a um intervalo de reutilização específico
passwordValidationPolicy > disallowUsernameSubstring Aplicar a política de senha para não permitir o nome de usuário como senha
Edição Aplicar todas as instâncias para usar a edição Enterprise Plus
connectorEnforcement Exigir que todas as conexões usem conectores do Cloud SQL
dataCacheConfig Exigir que todas as instâncias usem o cache de dados

Criar e configurar uma restrição personalizada

Uma restrição personalizada é definida em um arquivo YAML usando os recursos, métodos, condições e ações compatíveis com o serviço em que você está aplicando a política da organização. As condições das restrições personalizadas são definidas usando a Common Expression Language (CEL). Para mais informações sobre como criar condições em restrições personalizadas usando CEL, consulte Common Expression Language.

Console

  1. No console do Google Cloud, acesse a página Políticas da organização.

    Acessar as políticas da organização

  2. Selecione o seletor de projetos na parte superior da página.

  3. No Seletor de projetos, selecione o recurso em que você quer definir a política da organização.

  4. Clique em Restrição personalizada.

  5. Na caixa Nome de exibição, digite um nome para a restrição. Esse campo tem um comprimento máximo de 200 caracteres.

  6. Na caixa ID da restrição, insira o nome que você quer para a nova restrição personalizada. Uma restrição personalizada precisa começar com custom. e só pode incluir letras maiúsculas, minúsculas ou números, por exemplo, custom.requireCloudSqlPasswordMinLength. O tamanho máximo desse campo é de 70 caracteres, sem contar o prefixo (por exemplo, organizations/123456789/customConstraints/custom.).

  7. Na caixa Descrição, insira uma descrição legível a ser exibida como uma mensagem de erro quando a política for violada. Esse campo tem um comprimento máximo de 2000 caracteres.

  8. Na caixa Tipo de recurso, selecione o nome do recurso REST do Google Cloud que contém o objeto e o campo que você quer restringir. Por exemplo, sqladmin.googleapis.com/Instance. Há um máximo de 20 restrições personalizadas por tipo de recurso. Se você tentar criar uma restrição personalizada para um tipo de recurso que já tem 20 restrições personalizadas, a operação falhará.

  9. Em Método de aplicação, selecione se quer aplicar a restrição. em um método REST CREATE ou em ambos os métodos CREATE e UPDATE.

    Edite a condição e faça o seguinte:

    1. No painel Adicionar condição, crie uma condição de CEL que se refira a um recurso de serviço compatível, por exemplo, resource.settings.passwordValidationPolicy.minLength > 10. Esse campo tem um comprimento máximo de 1.000 caracteres. Para detalhes sobre o uso da CEL, consulte Common Expression Language. Para mais informações sobre os recursos de serviço que você pode usar nas restrições personalizadas, consulte Serviços compatíveis com restrição personalizada.

    2. Clique em Salvar.

  10. Em Ação, selecione se você quer permitir ou negar o método avaliado se a condição anterior for atendida.

    • Negar bloqueia operações para criar ou atualizar o recurso se a condição for avaliada como verdadeira.

    • Permitir permite que as operações criem ou atualizem o recurso se a condição for avaliada como verdadeira. Todos os outros casos, exceto os listados explicitamente na condição, estão bloqueados.

  11. Clique em Criar restrição.

Quando você insere um valor em cada campo, a configuração YAML equivalente para essa restrição personalizada é exibida à direita.

gcloud

Para criar um arquivo YAML para uma restrição personalizada, use o seguinte formato:

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

Substitua:

  • ORGANIZATION_ID: o ID da organização, como 123456789.

  • CONSTRAINT_NAME: o nome da sua nova restrição personalizada. Uma restrição personalizada precisa começar com custom. e só pode incluir letras maiúsculas, minúsculas ou números, por exemplo, custom.enableGkeAutopilot. O tamanho máximo desse campo é de 70 caracteres, sem contar o prefixo (por exemplo, organizations/123456789/customConstraints/custom).

  • RESOURCE_NAME: o nome (não o URI) do recurso REST da API GKE que contém o objeto e o campo que você quer restringir. Por exemplo, Cluster.

  • CONDITION: uma condição de CEL gravada em uma representação de um recurso de serviço compatível. Esse campo tem um comprimento máximo de 1000 caracteres.

  • ACTION: a ação a ser realizada se o condition for atendido. Pode ser ALLOW ou DENY.

    • Negar bloqueia operações para criar ou atualizar o recurso se a condição for avaliada como verdadeira.

    • Permitir permite que as operações criem ou atualizem o recurso se a condição for avaliada como verdadeira. Todos os outros casos, exceto os listados explicitamente na condição, estão bloqueados.

  • DISPLAY_NAME: um nome para a restrição. Esse campo tem um comprimento máximo de 200 caracteres.

  • DESCRIPTION: uma descrição da restrição para exibir como uma mensagem de erro quando a política for violada. Esse campo tem um comprimento máximo de 2000 caracteres.

Depois de criar uma nova restrição personalizada usando a gcloud CLI, configure-a para disponibilizá-la para as políticas da organização. Para configurar uma restrição personalizada, use o comando gcloud org-policies set-custom-constraint:
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
Substitua CONSTRAINT_PATH pelo caminho completo do arquivo da restrição personalizada. Por exemplo, /home/user/customconstraint.yaml. Após a conclusão, as restrições personalizadas vão estar disponíveis na sua lista de políticas da organização do Google Cloud. Para verificar se a restrição personalizada existe, use o comando gcloud org-policies list-custom-constraints:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
Substitua ORGANIZATION_ID pelo ID do recurso da organização. Para mais informações, consulte Como visualizar as políticas da organização.

Aplicar uma política da organização personalizada

Depois que uma restrição personalizada é configurada, ela opera de forma idêntica às restrições booleanas predefinidas. O Google Cloud verifica primeiro as restrições personalizadas ao avaliar se uma solicitação do usuário é permitida. Se alguma das políticas personalizadas da organização negar a solicitação, ela será rejeitada. Em seguida, o Google Cloud verificará se há políticas da organização predefinidas aplicadas a esse recurso.

Para aplicar uma restrição booleana, crie uma política da organização com referência a ela e aplique essa política da organização a um recurso do Google Cloud.

Console

Para aplicar uma restrição booleana:

  1. No console do Google Cloud, acesse a página Políticas da organização.

    Acessar as políticas da organização

  2. Selecione o seletor de projetos na parte superior da página.
  3. No seletor de projetos, selecione o projeto em que você quer definir a política da organização.
  4. Selecione a restrição na lista da página Políticas da organização. A página Detalhes da política dessa restrição será exibida.
  5. Para personalizar a política da organização nesse recurso, clique em Gerenciar política.
  6. Na página Editar política, selecione Substituir a política do editor principal.
  7. Clique em Adicionar uma regra.
  8. Em Aplicação, selecione se a aplicação dessa política da organização precisa ser ativada ou desativada.
  9. Para tornar a política da organização condicional em uma tag, clique em Adicionar condição. Se você adicionar uma regra condicional a uma política da organização, inclua pelo menos uma regra não condicional. Caso contrário, não será possível salvar a política. Para mais detalhes, consulte Como definir uma política da organização com tags.
  10. Se essa for uma restrição personalizada, clique em Testar alterações para simular o efeito da política da organização. Para mais informações, consulte Testar alterações na política da organização com o Simulador de política.
  11. Para concluir e aplicar a política da organização, clique em Definir política. A política levará até 15 minutos para entrar em vigor.

gcloud

Para criar uma política da organização que aplica uma restrição booleana, crie um arquivo YAML da política com referência à restrição:

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

Substitua:

  • PROJECT_ID: o projeto em que você quer aplicar a restrição.
  • CONSTRAINT_NAME: o nome definido para a restrição personalizada. Por exemplo, custom.enableGkeAutopilot.

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 do arquivo YAML da política da organização. A política levará até 15 minutos para entrar em vigor.

Atualizar uma restrição personalizada

Você pode atualizar uma restrição personalizada editando a restrição no console do Google Cloud ou criando um novo arquivo YAML e usando o comando set-custom-constraint da gcloud CLI novamente. Não há controle de versões de restrições personalizadas. Dessa forma, isso substitui a restrição personalizada existente. Se a restrição personalizada já tiver sido aplicada, a restrição personalizada atualizada entrará em vigor imediatamente.

Console

  1. No console do Google Cloud, acesse a página Políticas da organização.

    Acessar as políticas da organização

  2. Selecione o seletor de projetos na parte superior da página.

  3. No Seletor de projetos, selecione o recurso em que você quer atualizar a política da organização.

  4. Selecione a restrição que deseja editar na lista da página Políticas da organização. A página Detalhes da política dessa restrição será exibida.

  5. Clique em Editar restrição.

  6. Mude o nome de exibição, a descrição, o método de aplicação condição e ação. Não é possível alterar o ID da restrição ou o tipo de recurso depois que a restrição for criada.

  7. Clique em Salvar alterações.

gcloud

Para editar uma restrição personalizada atual usando a gcloud CLI, crie um arquivo YAML que contém as alterações a serem feitas:

name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- RESOURCE_NAME
methodTypes:
- METHOD1
- METHOD2
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION

Substitua:

  • ORGANIZATION_ID: o ID da organização, como 123456789.

  • CONSTRAINT_NAME: o nome da sua nova restrição personalizada. Uma restrição personalizada precisa começar com custom. e só pode incluir letras maiúsculas, minúsculas ou números, por exemplo, custom.disableGkeAutoUpgrade. O tamanho máximo desse campo é de 70 caracteres, sem contar o prefixo (por exemplo, organizations/123456789/customConstraints/custom.).

  • RESOURCE_NAME: o nome totalmente qualificado do recurso REST do Google Cloud que contém o objeto e o campo que você quer restringir. Por exemplo, container.googleapis.com/NodePool. Para mais informações sobre os recursos de serviço que você pode usar em nas restrições personalizadas, consulte Serviços compatíveis com restrição personalizada.

  • METHOD1,METHOD2: uma lista de métodos "RESTful" para aplicar a restrição. Pode ser CREATE ou CREATE e UPDATE. Nem todos os serviços do Google Cloud aceitam os dois métodos. Para ver os métodos compatíveis para cada serviço, encontre o serviço em Serviços compatíveis.

  • CONDITION: uma condição CEL que se refere a um recurso de serviço compatível, por exemplo, "resource.management.autoUpgrade == false". Esse campo tem um comprimento máximo de 1.000 caracteres. Para detalhes sobre o uso da CEL, consulte Common Expression Language.

  • ACTION: a ação a ser realizada se o condition for atendido. Pode ser ALLOW ou DENY.

  • DISPLAY_NAME: um nome para a restrição. Esse campo tem um comprimento máximo de 200 caracteres.

  • DESCRIPTION: uma descrição legível da restrição a ser exibida como uma mensagem de erro quando a política for violada. Esse campo tem um comprimento máximo de 2000 caracteres.

Depois de criar uma nova restrição personalizada usando a gcloud CLI, configure-a para disponibilizá-la para as políticas da organização. Para configurar uma restrição personalizada, use o comando gcloud org-policies set-custom-constraint:

gcloud org-policies set-custom-constraint CONSTRAINT_PATH
Substitua CONSTRAINT_PATH pelo caminho completo do arquivo da restrição personalizada. Por exemplo, /home/user/customconstraint.yaml. Após a conclusão, as restrições personalizadas vão estar disponíveis na sua lista de políticas da organização do Google Cloud. Para verificar se a restrição personalizada existe, use o comando gcloud org-policies list-custom-constraints:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
Substitua ORGANIZATION_ID pelo ID do recurso da organização. Para mais informações, consulte Como visualizar as políticas da organização.

Excluir uma restrição personalizada

É possível excluir uma restrição personalizada usando o console do Google Cloud ou a gcloud CLI.

Console

  1. No console do Google Cloud, acesse a página Políticas da organização.

    Acessar as políticas da organização

  2. Selecione o seletor de projetos na parte superior da página.

  3. No Seletor de projetos, selecione o recurso em que você quer definir a política da organização.

  4. Selecione a restrição que quer excluir da lista na página Políticas da organização. A página Detalhes da política dessa restrição será exibida.

  5. Clique em Excluir.

  6. Para confirmar que você quer excluir a restrição, clique em Excluir.

gcloud

Para excluir uma restrição personalizada, use o comando org-policies delete-custom-constraintda gcloud CLI:

gcloud org-policies delete-custom-constraint custom.CONSTRAINT_NAME \
  --organization=ORGANIZATION_ID

Substitua:

  • ORGANIZATION_ID: o ID da organização, como 123456789.

  • CONSTRAINT_NAME: o nome da sua restrição personalizada. Por exemplo, custom.disableGkeAutoUpgrade.

O resultado será assim:

Deleted custom constraint [organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade]

Depois de excluir uma restrição personalizada, todas as políticas criadas usando a restrição continuam existindo, mas são ignoradas. Não é possível criar outra restrição personalizada com o mesmo nome de uma restrição personalizada excluída.

Exemplo: usar uma restrição personalizada para impor o uso de SSD em vez de HDD

  1. Crie o arquivo dataDiskType.yaml da seguinte maneira:

    name: organizations/651333429324/customConstraints/custom.dataDiskType
    resourceTypes:
    - sqladmin.googleapis.com/Instance
    methodTypes:
    - CREATE
    - UPDATE
    condition: resource.settings.dataDiskType == "PD_SSD"
    actionType: ALLOW
    displayName: dataDiskType must be PD_SDD
    description: dataDiskType must be PD_SSD
    

    Isso garante que todos os métodos CREATE e UPDATE em uma instância atendam à restrição de dataDiskType ser SSD. Como resultado, todas as instâncias que envolverem HDD serão rejeitadas.

  2. Configure a restrição personalizada no nível da organização:

    gcloud org-policies set-custom-constraint dataDiskType.yaml
    
  3. Crie "enforceDataDiskType.yaml" da seguinte forma:

    name: projects/custom-constraints-cloudsql3/policies/custom.dataDiskType
    spec:
    rules:
    - enforce: true
    
  4. Aplique a restrição personalizada no nível do projeto:

    gcloud org-policies set-policy enforceDataDiskType.yaml
    

A seguir