Executar agentes de VM em todos os nós do GKE em várias organizações

Nesta página, descrevemos como garantir que o VM Manager esteja ativado em todas as instâncias do Compute Engine, incluindo VMs do Google Kubernetes Engine em uma organização, pasta ou projeto, usando o Serviço de Política da Organização.

Este guia é destinado a equipes de segurança que querem garantir que todos os programas necessários, como agentes de segurança e monitoramento, sejam executados em todas as instâncias de uma organização, pasta ou projeto. Para aplicar a configuração apenas com a política da organização, use este guia. Para uma abordagem de configuração como código, use o Config Sync. O Config Sync permite configurar e controlar muitos aspectos dos clusters e oferece valor além das políticas da organização.

Antes de ler esta página, confira se você já conhece o VM Manager e as restrições do Resource Manager.

Este guia mostra como aplicar o uso do VM Manager em todos os projetos de uma organização ou pasta. Este guia não mostra como configurar e usar o VM Manager com políticas de SO. Para instruções, consulte Criar uma atribuição de política do SO.

Sobre o VM Manager

O VM Manager é um conjunto de ferramentas que pode gerenciar sistemas operacionais para grandes frotas de máquina virtual (VMs) que executam o Windows e o Linux no Compute Engine. É possível usar o VM Manager para aplicar políticas de SO e personalizar os programas executados nas VMs. Por exemplo, é possível definir uma política para instalar um agente em um recurso e reutilizar essa política em vários recursos. O VM Manager fica desativado por padrão em projetos do Google Cloud .

É possível refinar onde o VM Manager aplica políticas usando OSPolicyAssignments, que permite definir o escopo das políticas de SO para VMs específicas usando seletores. Por exemplo, todas as VMs de nó do GKE têm o rótulo goog-gke-node, que pode ser segmentado com uma atribuição de política de SO.

Políticas da organização e VM Manager

Se a organização do Google Cloud tiver vários níveis de hierarquia, como pastas e subpastas, ativar o VM Manager em todos esses projetos manualmente poderá causar uma sobrecarga de gerenciamento desnecessária. É possível exigir que todos os projetos em pastas ou em uma organização ativem o VM Manager em todas as VMs usando o serviço de política da organização com a restrição constraints/compute.requireOsConfig. Alguns dos benefícios de aplicar o VM Manager usando uma política da organização incluem:

  • Todos os novos projetos adicionam o rótulo de metadados enable-osconfig=TRUE a cada projeto e VM.
  • Se alguém tentar remover esse marcador ou definir um valor diferente de true, a mudança será rejeitada.
  • Se alguém tentar criar ou atualizar uma VM de modo que a chave de metadados enable-osconfig seja definida com um valor diferente de true, essa alteração será rejeitada.

Antes de começar

Antes de começar, verifique se você realizou as tarefas a seguir:

  • Ative a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Se você quiser usar a Google Cloud CLI para essa tarefa, instale e inicialize a CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando o comando gcloud components update. Talvez as versões anteriores da CLI gcloud não sejam compatíveis com a execução dos comandos neste documento.
  • Verifique se você já está usando o VM Manager com políticas e atribuições de políticas do SO para executar agentes nas suas VMs. Para instruções, consulte Criar uma atribuição de política do SO.
  • Ative as APIs Cloud Resource Manager e OS Config, se alguma delas ainda não estiver ativada.

    Funções necessárias para ativar APIs

    Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão pelo papel de proprietário (roles/owner). Caso contrário, é possível receber essa permissão pelo papel de administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.

    Ativar as APIs

Limitações

A política da organização constraints/compute.requireOsConfig tem as seguintes limitações:

  • Os recursos com violações preexistentes não são afetados pela nova política da organização. É possível definir os metadados da política manualmente ou usando gcloud em recursos atuais.
  • Qualquer pessoa com permissão para mudar os metadados nas instâncias do Compute Engine no projeto pode desativar o osconfig-agent na VM definindo o campo de metadados osconfig-disabled-features.
  • Se o osconfig-agent não estiver em execução, a VM vai aparecer como fora da conformidade no painel do VM Manager. Por exemplo, isso pode acontecer se um usuário desativar o agente manualmente.

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) na 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 papéis personalizados ou outros papéis predefinidos.

Ativar compute.requireOsConfig em uma organização

Depois de ativar o VM Manager e definir um OSPolicyAssignment para suas VMs, é possível garantir que o VM Manager seja ativado por padrão em todos os novos projetos com a política da organização constraints/compute.requireOsConfig. A forma de aplicar constraints/compute.requireOsConfig depende da versão da API que você usa.

API Política da Organização v2

É possível aplicar a restrição constraints/compute.requireOsConfig em um recursoGoogle Cloud , como uma pasta ou uma organização, usando a CLI gcloud ou o console Google Cloud .

gcloud

  1. Confirme se a restrição compute.requireOsConfig ainda não foi aplicada:

    gcloud org-policies describe \
        constraints/compute.requireOsConfig \
        --organization=ORGANIZATION_ID
    

    Substitua ORGANIZATION_ID pelo ID da organização.

    Se uma política não for definida, o comando retornará um erro NOT_FOUND:

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    

    Se a política existir, o comando vai retornar a política atual. A aplicação de uma nova política substitui a atual, se houver.

  2. Crie um arquivo temporário /tmp/policy.yaml para armazenar a política:

    name: organizations/ORGANIZATION_ID/policies/constraints/compute.requireOsConfig
    spec:
      rules:
      - enforce: true
    
  3. Execute o comando set-policy:

    gcloud org-policies set-policy /tmp/policy.yaml
    
  4. Confirme se a nova política foi aplicada:

    gcloud org-policies describe \
        constraints/compute.requireOsConfig --effective \
        --organization=ORGANIZATION_ID
    

    A saída deste comando é semelhante a:

    name: organizations/ORGANIZATION_ID/policies/constraints/compute.requireOsConfig
    spec:
      rules:
      - enforce: true
    

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, a pasta ou a organização em que você quer editar as políticas da organização.

  3. Na página Políticas da organização, use o filtro para pesquisar compute.requireOsConfig.

  4. Clique no nome da política para abrir a página Detalhes da política.

  5. Clique em Gerenciar política para atualizar a política da organização nesse recurso.

  6. Na página Editar política, selecione Substituir a política do recurso pai.

  7. Selecione Adicionar uma regra.

  8. Em Aplicação, mude a aplicação dessa política da organização para ativada.

  9. Para aplicar a política, clique em Definir política.

API Resource Manager v1

  1. Confirme se a restrição compute.requireOsConfig ainda não foi aplicada:

    gcloud resource-manager org-policies describe constraints/compute.requireOsConfig \
        --organization ORGANIZATION_ID
    

    Substitua ORGANIZATION_ID pelo ID da organização.

    Se uma política não for definida, esse comando vai retornar uma política incompleta, como o exemplo a seguir:

    constraint: "constraints/compute.requireOsConfig"
    etag: BwVJi0OOESU=
    

    Se a política existir, o comando vai retornar a política atual. A aplicação de uma nova política substitui a atual, se houver.

  2. Defina a política para aplicar na organização:

    gcloud resource-manager org-policies enable-enforce constraints/compute.requireOsConfig \
        --organization ORGANIZATION_ID
    

    A saída deste comando é semelhante a:

    booleanPolicy:
      enforced: true
    constraint: constraints/compute.requireOsConfig
    etag: BwVJitxdiwY=
    
  3. Confirme se a nova política foi aplicada:

    gcloud resource-manager org-policies describe constraints/compute.requireOsConfig \
        --effective \
        --organization ORGANIZATION_ID
    

    A saída deste comando é semelhante a:

    booleanPolicy:
      enforced: true
    constraint: constraints/compute.requireOsConfig
    

As alterações nas políticas da organização podem levar até 15 minutos para serem totalmente aplicadas.

Para mais informações sobre outras políticas que podem ser aplicadas ou sobre como modificar ou excluir políticas, consulte a documentação do Resource Manager.

A seguir

Saiba mais sobre o registro de auditoria do GKE.