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 sua organização. Enquanto administrador da política 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 de organização. Tem de usar a API ou a kubectl CLI para os gerir.

Vantagens

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

  • Centralize o controlo para configurar restrições sobre como usar os recursos da sua organização.
  • Defina e estabeleça limites para as suas equipas de desenvolvimento permanecerem dentro dos limites de conformidade.
  • Ajudar 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 centra-se em quem e permite que o administrador autorize quem pode tomar medidas em recursos específicos com base em 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 de organização disponíveis

Neste lançamento 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 a esta restrição. Consulte a secção Defina o âmbito de uma política de 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 e UPDATE. O valor predefinido do campo disabledOperations é *.

A política GDCHRestrictedService só suporta as operações UPDATE e CREATE. Para restringir as operações GET, LIST e DELETE, recomendamos que use o IAM 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 Spark (serviço do Marketplace) sparkoperator.k8s.io SparkApplication

Não tem de especificar todos os tipos de 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 de mercado, 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, liste CREATE e UPDATE no parâmetro disabledOperations e liste todos os tipos documentados aqui.

Conceda funções de IAM para gerir políticas da organização

Cada política de organização tem uma função IAM associada. Conceda a função do IAM aos utilizadores e grupos que quer que geram essa política de 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 do IAM gdchrestrictedservice-policy-manager.

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

Ao definir uma política organizacional, 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 o conseguir, 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 da política 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"

Reverta uma política existente

Para parar de aplicar uma política existente, elimine-a através da CLI kubectl. Use um ficheiro kubeconfig que lhe dê acesso ao cluster onde a política está definida e à função IAM 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 obter uma estimativa da abrangência de um comportamento. Para adicionar um teste, adicione um 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 mercado, 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"]