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

Para garantir que os recursos da sua organização não estejam usando o agente de inicialização de contêiner (konlet) descontinuado e os metadados gce-container-declaration 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:

  • Aplicar 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êiner.
  • Monitorar o impacto da política da organização aplicando-a no modo de teste.
  • Identificar projetos que tentam usar o agente de inicialização de contêiner descontinuado com a Análise de registros.

Aplicar 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êiner 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 Google Cloud console, 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 Google Cloud console do, 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 da restrição.

  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 Restrição, selecione Ativada.

  8. Opcional: para visualizar o impacto da mudança na política da organização antes de ela ser aplicada, clique em Testar mudanças. 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.

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

  10. Depois de verificar se a política da organização no modo de teste funciona como esperado, defina a política ativa clicando em Definir política.

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 pelo ID da organização, ID da pasta, 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 aplica a política da organização para o projeto com um ID de 123456:

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

    Opcional: para tornar a política da organização condicional em uma tag, adicione um bloco condition às 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 org-policies set-policy comando com a dryRunSpec flag para definir a política da organização no modo de teste:

     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 teste, consulte Criar uma política da organização no modo de teste.

  3. Use o policy-intelligence simulate orgpolicy comando para visualizar o impacto da mudança na política da organização antes de ela ser 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 pelo caminho completo para o 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 teste funciona como esperado, 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 organizations.policies.create método.

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 pelo ID da organização, ID da pasta, 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 aplica a política da organização para o projeto com um ID de 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).

Monitorar 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, você pode aplicar a política no modo de teste. Essa configuração permite monitorar e registrar todas as 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 teste .

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 de inicialização de contêiner descontinuado, siga estas etapas:

  1. No Google Cloud console do, 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 de inicialização de contêiner descontinuado revisando as entradas de registro. Os registros de violações de teste 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 está incluída nos detalhes da violação.
  5. Revise as informações nos registros de auditoria para entender onde e por que o agente de inicialização de contêiner 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 teste funciona como esperado, aplique a política mudando o estado de aplicação do modo de teste para o modo ativo.

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

A seguir