Gerenciar recursos do Memorystore for Redis Cluster com restrições personalizadas

Com a política da organização doGoogle Cloud , você controla de forma centralizada e programática os recursos da sua organização. Um administrador de políticas da organização pode definir políticas da organização, ou seja, conjuntos de restrições que se aplicam aos recursos doGoogle Cloud e aos elementos que descendem dele na hierarquia de recursos doGoogle Cloud . É possível aplicar políticas da organização no nível da organização, de pastas ou de projetos.

A política da organização fornece restrições predefinidas para diversos Google Cloud serviços. No entanto, se você quiser um controle mais granular e personalizável sobre os campos específicos restritos nas suas políticas da organização, crie também políticas da organização personalizadas.

Ao implementar uma política da organização personalizada, você aplica configurações e restrições consistentes. Isso garante que as instâncias do Memorystore for Redis Cluster sigam as práticas recomendadas de segurança e os requisitos regulatórios.

Benefícios

É possível usar uma política da organização personalizada para permitir ou negar recursos específicos do Memorystore for Redis Cluster. Por exemplo, quando uma solicitação de criação ou atualização de um cluster do Redis não atende à validação de restrição personalizada definida pela política da organização, ela falha e um erro é retornado ao autor da chamada.

Herança de políticas

Por padrão, as políticas da organização são herdadas pelos elementos que descendem dos recursos em que elas são aplicadas. Por exemplo, se você aplicar uma política a uma pasta, o Google Cloud vai aplicá-la a todos os projetos dessa pasta. Para saber mais sobre esse comportamento e como alterá-lo, consulte Regras de avaliação de hierarquia.

Preços

O Organization Policy Service, incluindo políticas predefinidas e personalizadas, é oferecido sem custos financeiros.

Limitações

Como ocorre com todas as restrições de política da organização, as alterações de política não se aplicam retroativamente às instâncias atuais.

  • Uma nova política não afeta as configurações de instância atuais.
  • Uma configuração de instância atual permanece válida, a menos que você mude a configuração da instância de um estado de conformidade para não conformidade usando o Google Cloud console, a Google Cloud CLI ou uma RPC.
  • Uma atualização de manutenção programada não faz com que uma política seja aplicada porque a manutenção não altera a configuração das instâncias.

Antes de começar

  1. Criar o projeto.
    1. Faça login na sua Google Cloud conta do. Se você não conhece o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em cenários reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
    2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Roles required to select or create a project

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

      Go to project selector

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

    4. Instale a Google Cloud CLI.

    5. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

    6. Para inicializar a CLI gcloud, execute o seguinte comando:

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

      Roles required to select or create a project

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

      Go to project selector

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

    9. Instale a Google Cloud CLI.

    10. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

    11. Para inicializar a CLI gcloud, execute o seguinte comando:

      gcloud init
    12. Verifique qual é o ID da organização.

Funções exigidas

Para receber as permissões necessárias a fim de gerenciar as políticas da organização, peça ao administrador para conceder a você o papel do IAM de Administrador de políticas da organização (roles/orgpolicy.policyAdmin) no recurso da organização. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando personalizados papéis ou outros predefinidos papéis.

Você também precisa adicionar as funções necessárias para criar o Memorystore for Redis Cluster na sua conta de usuário. Consulte Como configurar o acesso aos recursos do Memorystore for Redis Cluster.

Criar uma restrição personalizada

É possível criar uma restrição personalizada usando um arquivo YAML para definir os recursos, métodos, condições e ações sujeitos à restrição. Eles são específicos do serviço em que você está aplicando a política da organização. As condições das restrições personalizadas precisam ser definidas usando a Common Expression Language. Consulte a página do GitHub sobre a Common Expression Language (CEL). Para saber como criar condições em restrições personalizadas usando a CEL, consulte a seção CEL em Como criar e gerenciar restrições personalizadas.

Use o modelo a seguir para criar um arquivo YAML para uma restrição personalizada:

name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- redis.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.restrictFiveShardClusters. O tamanho máximo desse campo é de 70 caracteres, sem contar o prefixo (por exemplo, organizations/123456789/customConstraints/custom.allowConstraint).

  • RESOURCE_NAME: o nome (não o URI) do recurso do Memorystore for Redis Cluster que contém o objeto e o campo que você quer restringir. Por exemplo, redis.googleapis.com/Cluster.

  • CONDITION: uma condição de CEL gravada em uma representação de um recurso de serviço compatível. Esse campo pode ter no máximo 1000 caracteres. Consulte Recursos compatíveis para mais informações sobre os recursos disponíveis para gravação de condições. Por exemplo, "resource.shardCount == 5".

  • ACTION: a ação a ser realizada ao atender a condition. Pode ser ALLOW ou DENY.

  • DISPLAY_NAME: um nome legível para a restrição. Esse campo pode ter no máximo 200 caracteres.

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

Para mais informações sobre como criar uma restrição personalizada, consulte Como criar e gerenciar políticas personalizadas da organização.

Configurar uma restrição personalizada

Depois de criar o arquivo YAML para uma nova restrição personalizada, faça a configuração necessária para disponibilizá-la para as políticas da organização.

Para configurar uma restrição personalizada, use o gcloud org-policies set-custom-constraint comando:

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. Depois de configurar as restrições personalizadas, elas ficam disponíveis como políticas da organização na lista de Google Cloud políticas da organização.

Para verificar se a restrição personalizada existe, use o gcloud org-policies list-custom-constraints comando:

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 políticas da organização.

Aplicar uma política personalizada da organização

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

Console

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

    Acessar a página Políticas da organização

  2. No seletor de projetos, selecione o projeto em que você quer definir a política da organização.
  3. Na lista da página Políticas da organização, selecione uma restrição para acessar a página Detalhes da política associada.
  4. Para configurar a política da organização nesse recurso, clique em Gerenciar política.
  5. Na página Editar política, selecione Substituir a política do recurso pai.
  6. Clique em Adicionar uma regra.
  7. Na seção Aplicação, selecione se essa política da organização será aplicada ou não.
  8. Opcional: para tornar a política da organização condicional em uma tag, clique Adicionar condição. Se você adicionar uma regra condicional a uma política da organização inclua pelo menos uma regra não condicional para que a política seja salva. Para mais informações, consulte Definir o escopo das políticas da organização com tags.
  9. Clique em Testar mudanças 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.
  10. Para aplicar a política da organização no modo de simulação, clique em Definir política de simulação. Para mais informações, consulte Testar políticas da organização.
  11. Depois de verificar se a política da organização no modo de teste funciona conforme o esperado, defina a política ativa clicando em Definir política.

gcloud

  1. Para criar uma política da organização com regras booleanas, crie um arquivo YAML para a política que faça referência à restrição:
  2. name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
    spec:
      rules:
      - enforce: true
    
    dryRunSpec:
      rules:
      - enforce: true

    Substitua:

    • PROJECT_ID: o projeto em que você quer aplicar a restrição em.
    • CONSTRAINT_NAME: o nome definido para a restrição personalizada. Por exemplo, custom.restrictFiveShardClusters.
  3. Para aplicar a política da organização no modo de teste, execute o seguinte comando com a dryRunSpec flag:
  4. gcloud org-policies set-policy POLICY_PATH --update-mask=dryRunSpec

    Substitua POLICY_PATH pelo caminho completo para o arquivo YAML da política da organização. A política leva até 15 minutos para entrar em vigor.

  5. Depois de verificar se a política da organização no modo de teste funciona conforme o esperado, defina a política ativa com o org-policies set-policy comando e a spec flag:
  6. gcloud org-policies set-policy POLICY_PATH --update-mask=spec

    Substitua POLICY_PATH pelo caminho completo para o arquivo YAML da política da organização. A política leva até 15 minutos para entrar em vigor.

Testar uma restrição personalizada

Para testar uma restrição personalizada, execute um comando gcloud que tente criar um cluster do Redis.

Por exemplo, suponha que uma restrição limite a criação de clusters do Redis com cinco shards. Você pode testar essa restrição executando o comando gcloud redis clusters create com o shard-count definido como 5, conforme demonstrado no snippet a seguir:


gcloud redis clusters create redis-cluster-test \
    --replica-count=0 \
    --region=us-east1 \
    --project=my-project \
    --network=projects/my-project/global/networks/default \
    --node-type=redis-shared-core-nano
    --shard-count=5 \

O resultado será assim:

Operation denied by custom org policies: ["customConstraints/custom.restrictFiveShardClusters": "Prevent users from creating Redis clusters with five shards."]

Recursos e operações compatíveis com o Memorystore for Redis Cluster

Os campos de restrição personalizada do Memorystore for Redis Cluster a seguir estão disponíveis para uso ao criar ou atualizar um recurso do Memorystore for Redis Cluster.

  • Cluster do Memorystore for Redis Cluster
    • resource.authorizationMode
    • resource.deletionProtectionEnabled
    • resource.name
    • resource.nodeType
    • resource.persistenceConfig.aofConfig.appendFsync
    • resource.persistenceConfig.mode
    • resource.persistenceConfig.rdbConfig.rdbSnapshotPeriod
    • resource.persistenceConfig.rdbConfig.rdbSnapshotStartTime
    • resource.pscConfigs.network
    • resource.redisConfigs
    • resource.replicaCount
    • resource.shardCount
    • resource.transitEncryptionMode

Exemplo de restrições personalizadas

A tabela a seguir mostra um exemplo de restrição personalizada que limita clusters do Redis com cinco shards:

Descrição Sintaxe da restrição
Restringir clusters do Redis com cinco shards
    name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictFiveShardClusters
    resourceTypes:
    - redis.googleapis.com/Cluster
    methodTypes:
    - CREATE
    - UPDATE
    condition: "resource.shardCount == 5"
    actionType: DENY
    displayName: Restrict five shard Redis clusters
    description: Prevent users from creating Redis clusters with five shards.

A seguir