Configure as políticas da organização

As políticas da organização dão-lhe um controlo centralizado e programático sobre os recursos da organização. Enquanto administrador de políticas da organização, pode configurar políticas em toda a organização.

Nesta versão do Google Distributed Cloud (GDC) air-gapped, não existe uma IU nem uma CLI para as políticas da organização. Tem de usar a API ou a CLI kubectl para as gerir.

Vantagens

A configuração de políticas da organização oferece várias vantagens:

  • Centralize o controlo para configurar restrições sobre a forma de usar os recursos da organização.
  • Defina e estabeleça limites para que as suas equipas de desenvolvimento cumpram os limites de conformidade.
  • Ajude os proprietários de projetos e as respetivas equipas a avançarem rapidamente sem violarem a conformidade.

Diferenças em relação à Gestão de identidade e de acesso

A Gestão de identidade e de acesso foca-se em quem e permite que o administrador autorize quem pode realizar ações em recursos específicos com base nas autorizações.

As políticas da organização focam-se no quê e permitem que o administrador defina restrições em recursos específicos para determinar como os configurar.

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

Nesta versão do GDC, pode usar o seguinte tipo de política.

GDCHRestrictedService

O tipo de política GDCHRestrictedService permite-lhe restringir o serviço que pode usar no GDC. Quando aplicada, a política impede a utilização das APIs a que faz referência. Por exemplo, pode usar este tipo de política para restringir a utilização de um determinado serviço a determinados projetos. Também pode usar a política para restringir completamente o acesso a um novo serviço do GDC no qual quer executar testes antes de permitir que as suas equipas o usem.

Crie esta política no mesmo cluster que os recursos de serviço. Pode criar várias instâncias desta política para diferentes serviços ou projetos.

Segue-se um modelo para esta política:

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

Substitua o seguinte:

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

  • MATCH_SCHEMA: os recursos a corresponder para esta restrição. Consulte a secção Defina o âmbito de uma política da organização num cluster para mais informações.

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

A política GDCHRestrictedService só suporta as operações UPDATE, CREATE e DELETE. Para restringir as operações GET, LIST e DELETE, recomendamos que use a Gestão de identidade e de acesso para atribuir funções.

A política GDCHRestrictedService só suporta 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 base de dados – Postgres postgresql.dbadmin.gdc.goog
  • DBCluster
  • BackupPlan
  • Import
  • Restore
Serviço de base de dados – Oracle oracle.dbadmin.gdc.goog
  • DBCluster
  • BackupPlan
  • Import
Transfer Appliance system.gpc.gke.io TransferApplianceRequest
Cópia de segurança backup.gdc.goog BackupRepositoryManager
Contentor do Dataproc para o Spark (serviço do Marketplace) sparkoperator.k8s.io SparkApplication

Não tem de especificar todos os tipos para um determinado serviço. Pode restringir a utilização de um subconjunto das funcionalidades de um serviço especificando apenas os tipos correspondentes.

Por exemplo, para restringir as 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"

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

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

Conceda funções da Gestão de identidade e de acesso para gerir políticas da organização

Cada política da organização tem uma função da Gestão de identidade e de acesso associada. Conceda a função da Gestão de identidade e de acesso aos utilizadores e grupos que quer que façam a gestão dessa política da organização específica. Para permitir que um utilizador ou um grupo crie, atualize ou elimine políticas do tipo GDCHRestrictedService, atribua ao utilizador ou ao grupo a função da Gestão de identidade e de acesso gdchrestrictedservice-policy-manager.

Defina o âmbito de uma política da organização num cluster

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

Leia a página da secção de correspondência de políticas da organização para saber mais acerca destes parâmetros. Por exemplo, para permitir a criação de bases de dados apenas em espaços de nomes que tenham a etiqueta 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"
      - "DELETE"

Reverta uma política existente

Para deixar de aplicar uma política existente, elimine-a com a CLI kubectl. Use um ficheiro kubeconfig que lhe dê acesso ao cluster onde a política está definida e à função da Gestão de identidade e de acesso gdchrestrictedservice-policy-manager.

Para eliminar uma política da organização, execute o seguinte comando:

kubectl --kubeconfig CLUSTER_KUBECONFIG delete \
    GDCHRestrictedService/POLICY_NAME

Substitua o seguinte:

  • CLUSTER_KUBECONFIG: o ficheiro kubeconfig do cluster onde reside a política da organização.

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

Teste uma política num modo de auditoria

Pode testar uma política sem a aplicar. Teste uma política para se certificar de que não interrompe os sistemas existentes antes de a implementar ou para ter uma estimativa da prevalência de um comportamento. Para adicionar um teste, adicione uma enforcementAction à definição da política. Existem três valores possíveis para este parâmetro:

  • deny: a política é aplicada. Esta é a predefinição.
  • dryrun: a ação é permitida, mas pode ver que existe uma violação de política nos registos de auditoria e no estado da política. Examine a violação com kubectl --kubeconfig CLUSTER_KUBECONFIG get POLICY_TYPE/POLICY_NAME.
  • warn: equivalente a dryrun, exceto que o teste também mostra um aviso em resposta ao pedido que acionou uma violação de 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"]