Impedir a criação de VMs que usam os metadados do contêiner

Para garantir que os recursos na sua organização não estejam usando o agente de inicialização de contêiner descontinuado e os gce-container-declarationmetadados relacionados, o Google recomenda que você aplique uma política da organização. A restrição gerenciada compute.managed.disableVmsWithContainerStartupAgent, quando aplicada, desativa a criação de recursos que usam os metadados descontinuados.

Este documento explica como fazer o seguinte:

  • Aplique uma política da organização para desativar a criação de instâncias do Compute Engine que usam o agente de inicialização de contêineres.
  • Monitore o impacto da política da organização aplicando-a no modo de teste.
  • Identifique os projetos que tentam usar o agente descontinuado com a Análise de registros.

Aplique a política da organização para desativar a criação de VMs que usam os metadados do contêiner.

Para evitar a criação de recursos que usam o agente de inicialização de contêineres descontinuado, o Google recomenda que você aplique uma política da organização. A restrição constraints/compute.managed.disableVmsWithContainerStartupAgent impede que novos recursos sejam criados com a chave de metadados gce-container-declaration. Essa restrição não afeta instâncias ou modelos de instância atuais.

É possível aplicar essa restrição usando o console Google Cloud , a Google Cloud CLI ou a API Compute Engine.

Console

Para definir a política da organização usando o console, siga estas etapas:

  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.

    A página Políticas da organização mostra uma lista das restrições de políticas da organização disponíveis.

  3. Selecione a restrição Desativar a criação de instâncias do Compute Engine que usam o agente de inicialização de contêiner descontinuado (konlet) na lista de restrições. A página Detalhes da política que aparece descreve a restrição e fornece informações sobre a aplicação dela.

  4. Para atualizar a política da organização nesse recurso, clique em Gerenciar política.

  5. Na página Editar política, clique em Substituir a política do recurso pai.

  6. Selecione Adicionar uma regra.

  7. Em Aplicação, selecione Ativada.

  8. Se quiser visualizar o impacto da mudança na política da organização antes da aplicação, clique em Testar mudanças. Para mais informações sobre como testar mudanças nas políticas da organização, consulte Testar mudanças na política da organização com o Simulador de política.

  9. Para aplicar a política da organização no modo de teste, clique em Definir política de simulação. Para mais informações, consulte Criar uma política da organização no modo de simulação com base em uma política ativa.

  10. Depois de verificar se a política da organização no modo de simulação funciona como pretendido, clique em Definir política para definir a política ativa.

gcloud

  1. Crie um arquivo YAML para definir a política da organização.

    name: RESOURCE_TYPE/RESOURCE_ID/policies/compute.managed.disableVmsWithContainerStartupAgent
    spec:
      rules:
      - enforce: true
    dryRunSpec:
      rules:
      - enforce: true
    

    Substitua:

    • RESOURCE_TYPE por organizations, folders ou projects.

    • RESOURCE_ID com o ID da organização, da pasta, do ID do projeto ou o número do projeto, dependendo do tipo de recurso especificado em RESOURCE_TYPE.

    O exemplo a seguir mostra um arquivo YAML que impõe a política da organização para o projeto com ID 123456:

    name: projects/123456/policies/compute.managed.disableVmsWithContainerStartupAgent
    spec:
      rules:
      - enforce: true
    dryRunSpec:
      rules:
      - enforce: true
    

    Para tornar a política da organização condicional em uma tag, adicione um bloco condition ao rules. Se você adicionar uma regra condicional a uma política da organização, precisará incluir pelo menos uma regra não condicional. Caso contrário, a não será possível salvar a política. Para mais detalhes, consulte Como definir uma política da organização com tags.

  2. Execute o comando org-policies set-policy com a flag dryRunSpec para definir a política da organização no modo de simulação:

     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.

    Para mais informações sobre políticas da organização de simulação, consulte Criar uma política da organização no modo de simulação.

  3. Use o comando policy-intelligence simulate orgpolicy para visualizar o impacto da mudança na política da organização antes que ela seja aplicada:

    gcloud policy-intelligence simulate orgpolicy \
      --organization=ORGANIZATION_ID \
      --policies=POLICY_PATH
    

    Substitua:

    • ORGANIZATION_ID pelo ID da organização, como 1234567890123. Não é possível simular mudanças em várias organizações.

    • POLICY_PATH com o caminho completo do arquivo YAML da política da organização.

    Para mais informações sobre como testar mudanças na política da organização, consulte Testar mudanças na política da organização com o Simulador de política.

  4. Depois de verificar se a política da organização no modo de simulação funciona como pretendido, defina a política ativa com o comando org-policies set-policy e a flag spec:

    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.

REST

Para definir a política da organização, use o método organizations.policies.create.

POST https://orgpolicy.googleapis.com/v2/{parent=organizations/ORGANIZATION_ID}/policies

O corpo JSON da solicitação contém a definição de uma política da organização. Se essa restrição não aceitar parâmetros, omita o bloco parameters em rules.

{
  "name": "RESOURCE_TYPE/RESOURCE_ID/policies/compute.managed.disableVmsWithContainerStartupAgent",
  "spec": {
    "rules": [
      {
        "enforce": true,
      }
    ]
  },
  "dryRunSpec": {
    "rules": [
      {
        "enforce": true,
      }
    ]
  }
}

Substitua:

  • RESOURCE_TYPE por organizations, folders ou projects.

  • RESOURCE_ID com o ID da organização, da pasta, do ID do projeto ou o número do projeto, dependendo do tipo de recurso especificado em RESOURCE_TYPE.

O exemplo a seguir mostra um corpo de solicitação que impõe a política da organização para o projeto com o ID 123456:

  {
    "name": "projects/123456/policies/compute.managed.disableVmsWithContainerStartupAgent",
    "spec": {
      "rules": [
        {
          "enforce": true,
        }
      ]
    },
    "dryRunSpec": {
      "rules": [
        {
          "enforce": true,
        }
      ]
    }
  }
  ```

Optionally, to make the organization policy conditional on a tag, add a
`condition` block to the `rules`. If you add a conditional rule to an
organization policy, you must add at least one unconditional rule or the
policy cannot be saved. For more details, see
[Setting an organization policy with tags](/resource-manager/docs/organization-policy/tags-organization-policy).

For more information about dry-run organization policies, see
[Create an organization policy in dry-run mode](/resource-manager/docs/organization-policy/dry-run-policy).

Monitore o uso dos metadados descontinuados aplicando a política no modo de teste.

Em vez de aplicar a política diretamente, o que bloqueia a criação de instâncias que usam os metadados de declaração de contêiner, é possível aplicar a política no modo de simulação. Essa configuração permite monitorar e registrar ações que a política pode bloquear, sem interferir nas operações. Para mais informações, consulte Criar uma política da organização no modo de simulação.

Quando uma ação aciona a política de teste (por exemplo, se você tentar criar uma instância com a chave de metadados gce-container-declaration), uma entrada de registro será gerada nos Registros de auditoria do Cloud.

Para identificar projetos que tentam usar o agente descontinuado, siga estas etapas:

  1. No console do Google Cloud , acesse a página Análise de registros.

    Acessar o "Explorador de registros"

  2. No painel Consulta, insira a seguinte consulta:

    protoPayload.metadata.dryRun="true"
    protoPayload.methodName="CheckOrgPolicy"
    protoPayload.resourceName =~ "/compute.managed.disableVmsWithContainerStartupAgent"
    
  3. Clique em Executar consulta.

  4. Identifique os projetos que tentam usar o agente descontinuado revisando as entradas de registro. Os registros de violações de simulação têm as seguintes características:

    • Eles estão relacionados a orgpolicy.googleapis.com.
    • O campo protoPayload.metadata.dryRun está definido como true.
    • A restrição constraints/compute.managed.disableVmsWithContainerStartupAgent é incluída nos detalhes da violação.
  5. Analise as informações nos registros de auditoria para entender onde e por que o agente descontinuado ainda está sendo usado. Essas informações podem orientar os esforços para migrar essas cargas de trabalho para alternativas compatíveis.

  6. Depois de verificar se a política da organização no modo de simulação funciona como pretendido, aplique a política mudando o estado de aplicação do modo de simulação para ativo.

Para mais informações sobre como usar a Análise de registros, consulte Ver registros usando a Análise de registros.

A seguir