Configurar políticas da organização

As políticas da organização oferecem controle centralizado e programático sobre os recursos da sua organização. Como administrador de políticas da organização, você pode configurar políticas em toda a organização.

Nesta versão do Google Distributed Cloud (GDC) air-gapped, não há UI ou CLI para políticas da organização. Use a API ou a CLI kubectl para gerenciar esses recursos.

Vantagens

Configurar políticas da organização oferece vários benefícios:

  • Centralizar o controle para configurar restrições sobre como usar os recursos da sua organização.
  • Definir e estabelecer proteções para que suas equipes de desenvolvimento permaneçam dentro dos limites de conformidade.
  • Ajudar os proprietários de projetos e suas equipes a se movimentarem rapidamente sem violar a conformidade.

Diferenças do gerenciamento de identidade e acesso

O foco do Identity and Access Management é quem. Com ele, o administrador autoriza quem pode realizar ações em recursos específicos com base nas permissões.

O foco das políticas da organização é o quê. Elas permitem que o administrador defina limitações em recursos específicos para determinar como configurá-los.

Lista de tipos de políticas da organização disponíveis

Nesta versão do GDC, é possível usar o seguinte tipo de política.

GDCHRestrictedService

O tipo de política GDCHRestrictedService permite restringir qual serviço pode ser usado no GDC. Quando aplicada, a política impede o uso das APIs a que ela se refere. Por exemplo, é possível usar esse tipo de política para restringir o uso de um determinado serviço a alguns projetos. Você também pode usar a política para restringir completamente o acesso a um novo serviço do GDC que você quer testar antes de permitir que suas equipes o usem.

Crie essa política no mesmo cluster dos recursos de serviço. É possível criar várias instâncias dessa política para diferentes serviços ou projetos.

Confira a seguir um modelo para essa política:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
  name: POLICY_NAME
spec:
  match:
    MATCH_SCHEMA
  parameters:
    disabledOperations:
      - DISABLED_OPERATION

Substitua:

  • POLICY_NAME: o nome da política da organização.

  • MATCH_SCHEMA: os recursos a serem correspondidos para esta restrição. Consulte a seção Definir o escopo de uma política da organização em um cluster para mais informações.

  • DISABLED_OPERATION: os grupos de operações que essa política bloqueia. Os valores permitidos são CREATE e UPDATE. O valor padrão do campo disabledOperations é *.

A política GDCHRestrictedService é compatível apenas com as operações UPDATE e CREATE. Para restringir as operações GET, LIST e DELETE, recomendamos que você use o IAM para atribuir papéis.

A política GDCHRestrictedService só é compatível com o seguinte subconjunto dos serviços disponíveis no GDC.

Serviço Grupo de APIs kinds
Marketplace marketplace.gdc.goog MarketplaceService
Vertex AI Workbench aiplatform.gdc.goog Notebook
Serviço de banco de dados - Postgres postgresql.dbadmin.gdc.goog
  • DBCluster
  • BackupPlan
  • Import
  • Restore
Serviço de banco de dados: Oracle oracle.dbadmin.gdc.goog
  • DBCluster
  • BackupPlan
  • Import
Transfer Appliance system.gpc.gke.io TransferApplianceRequest
Backup backup.gdc.goog BackupRepositoryManager
Contêiner do Dataproc para Spark (serviço do Marketplace) sparkoperator.k8s.io SparkApplication

Não é necessário especificar todos os tipos para um determinado serviço. É possível restringir o uso de um subconjunto de recursos de um serviço especificando apenas os tipos correspondentes.

Por exemplo, para restringir atualizações aos serviços do marketplace, crie a seguinte política:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
  name: no-update-to-marketplace-service
spec:
  match:
    kinds:
    - apiGroups:
      - "marketplace.gdc.goog"
      kinds:
      - MarketplaceService
  parameters:
    disabledOperations:
      - "UPDATE"

Essa política impede qualquer operação UPDATE em qualquer grupo de APIs marketplace.gdc.goog com o valor MarketplaceService para o tipo. Na prática, essa política impede que qualquer pessoa modifique qualquer serviço do Marketplace.

Para desativar completamente um serviço, liste CREATE e UPDATE no parâmetro disabledOperations e liste todos os tipos documentados aqui.

Conceder papéis do IAM para gerenciar políticas da organização

Cada política da organização tem um papel do IAM associado. Conceda o papel do IAM aos usuários e grupos que você quer gerenciar essa política específica da organização. Para permitir que um usuário ou grupo crie, atualize ou exclua políticas do tipo GDCHRestrictedService, atribua a ele o papel do IAM gdchrestrictedservice-policy-manager.

Definir o escopo de uma política da organização em um cluster

Ao definir uma política da organização, decida se ela vai afetar todos os namespaces, apenas namespaces específicos ou todos os namespaces, exceto uma determinada lista. Para isso, use uma combinação dos parâmetros .spec.match.excludedNamespaces, .spec.match.namespaceSelector, .spec.match.namespaces e .spec.match.scope da definição de política.

Leia a seção Correspondência de política da organização para saber mais sobre esses parâmetros. Por exemplo, para permitir a criação de bancos de dados apenas em namespaces com o rótulo owner: dba-team, crie a seguinte política:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
  name: db-restricted-to-dbas
spec:
  match:
    scope: Namespaced
    namespaceSelector:
      matchExpressions:
      # We are restricting the use of the service in namespaces that
      # don't have the owner: dba-team label
      - key: owner
        operator: NotIn
        values:
        - dba-team
    kinds:
    - apiGroups:
      - "postgresql.dbadmin.gdc.goog"
      kinds:
      - DBCluster
      - BackupPlan
      - Import
      - Restore
    - apiGroups:
      - "oracle.dbadmin.gdc.goog"
      kinds:
      - DBCluster
      - BackupPlan
      - Import
  parameters:
    disabledOperations:
      - "UPDATE"
      - "CREATE"

Reverter uma política atual

Para interromper a aplicação de uma política, exclua-a usando a CLI kubectl. Use um arquivo kubeconfig que dê acesso ao cluster em que a política está definida e à função do IAM gdchrestrictedservice-policy-manager.

Para excluir uma política da organização, execute:

kubectl --kubeconfig CLUSTER_KUBECONFIG delete \
    GDCHRestrictedService/POLICY_NAME

Substitua:

  • CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster em que a política da organização reside.

  • POLICY_NAME: o nome da política da organização a ser excluída.

Testar uma política no modo de auditoria

É possível testar uma política sem aplicá-la. Teste uma política para garantir que ela não vai prejudicar os sistemas atuais antes de ser lançada ou para ter uma estimativa de quão difundido é um comportamento. Para adicionar um teste, adicione um enforcementAction à definição da política. Há três valores possíveis para esse parâmetro:

  • deny: a política é aplicada. Esta é a configuração padrão.
  • dryrun: a ação é permitida, mas é possível ver que há uma violação de política nos registros de auditoria e no status da política. Analise a violação com kubectl --kubeconfig CLUSTER_KUBECONFIG get POLICY_TYPE/POLICY_NAME.
  • warn: equivalente a dryrun, mas o teste também mostra um aviso em resposta à solicitação que acionou uma violação da política.

Por exemplo, para testar uma política que desativa o Marketplace, crie a seguinte política:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
  name: disable-marketplace-service-project-alice
Spec:
  enforcementAction: warn
  match:
    kinds:
      - apiGroups: ["marketplace.gdc.goog"]
        kinds: ["MarketplaceService"]