Crie uma política de convidados (herdada)

Use políticas de convidados para manter configurações de software consistentes em instâncias de máquinas virtuais (VM) Linux e Windows.

Para configurar uma política de convidados em um conjunto de VMs, conclua as etapas a seguir:

  1. Atribua as permissões necessárias aos usuários.
  2. Configure sua VM .
  3. Configure o arquivo JSON ou YAML da política de convidado.
  4. Crie a política de convidados .

Antes de começar

Limitações

  • Para VMs direcionadas, a política de convidado é atualizada sempre que o agente faz check-in no serviço. Essa verificação acontece a cada 10 a 15 minutos.
  • Não há painéis de conformidade, notificações ou serviços de alerta disponíveis com as políticas de convidado deste sistema operacional legado. As VMs que não estão executando o agente de configuração do SO não relatam falhas. Para obter melhores resultados, use esse recurso com o serviço de gerenciamento de inventário de SO ou qualquer outra ferramenta de monitoramento de conformidade.
  • Uma receita de software, com um nome específico, é executada apenas uma vez quando você cria uma política de convidados. Para executar novamente uma receita de software, você deve fazer o seguinte:

    1. Renomeie a receita do software.
    2. Exclua e recrie a política de convidado usando a receita de software renomeada.

Permissões

Como você pode usar políticas de convidados para instalar e gerenciar pacotes de software em uma VM, a criação e o gerenciamento de políticas de convidados equivalem a conceder acesso de execução remota de código em uma VM.

Ao configurar políticas de convidados, as permissões do IAM são usadas para controlar o acesso ao recurso de política e as atividades são registradas em auditoria. No entanto, os usuários ainda podem executar código na VM, o que representa um risco potencial à segurança. Para atenuar isso, recomendamos que você forneça apenas o acesso necessário a cada usuário.

Os proprietários de um projeto têm acesso total para criar e gerenciar políticas. Para todos os outros usuários, você precisa conceder permissões. Você pode conceder uma das seguintes funções granulares:

  • Administrador de GuestPolicy ( roles/osconfig.guestPolicyAdmin ). Contém permissões para criar, excluir, atualizar, obter e listar políticas de convidados.
  • Editor GuestPolicy ( roles/osconfig.guestPolicyEditor ). Contém permissões para obter, atualizar e listar políticas de convidados.
  • Visualizador GuestPolicy ( roles/osconfig.guestPolicyViewer ). Contém permissões de acesso somente leitura para obter e listar políticas de convidados.

Por exemplo, para conceder a um usuário acesso de administrador às políticas de convidados, execute o seguinte comando:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member user:USER_ID@gmail.com \
    --role roles/osconfig.guestPolicyAdmin

Substitua o seguinte:

  • PROJECT_ID : o ID do projeto.
  • USER_ID : o nome de usuário do Google Workspace do usuário.

Configure sua VM

Para usar políticas de convidados, você precisa configurar o VM Manager .

Configurar um arquivo yaml ou JSON de política de convidado

Você deve fornecer especificações de política de convidado usando um arquivo JSON ou YAML. Para visualizar configurações de amostra, consulte exemplos de arquivos YAML de política de convidado .

O arquivo YAML ou JSON contém as duas seções principais a seguir:

Tarefas

Você pode atribuir políticas de convidado a todas as VMs do seu projeto ou usar a chave assignment no seu arquivo JSON ou YAML para direcionar um grupo específico de VMs.

Por exemplo, você pode direcionar um grupo de VMs usando qualquer uma das seguintes características:

  • Nome da instância. Veja o exemplo 1 .
  • Prefixo do nome da instância. Veja o exemplo 2 .
  • Rótulo da instância. Veja o exemplo 3 .
  • Zona. Veja o exemplo 4 .
  • Informações do sistema operacional, que contêm nome, versão e arquitetura do sistema operacional. Veja o exemplo 5 . O comando os-inventory description pode ser usado para determinar o nome do sistema operacional, a versão e a arquitetura das VMs.

Para atribuir uma política de convidado usando informações do sistema operacional, o agente de configuração do sistema operacional deve enviar informações do sistema operacional para o ponto final de atributos de convidado da VM. Para garantir a privacidade, por padrão, as informações do sistema operacional para VMs estão indisponíveis. Para agrupar VMs por informações do sistema operacional, você deve garantir que os atributos do convidado e os serviços do OS Inventory Management estejam ativados. Para ativar esses serviços, consulte Configurar sua VM .

As configurações de política de convidados são aplicadas automaticamente a todas as novas VMs que correspondam à atribuição.

Configuração necessária

A configuração necessária pode ser realizada usando qualquer uma ou uma combinação das seguintes tarefas:

Exemplo de arquivos YAML de política de convidado

Exemplo 1

Instale o pacote my-package que deve ser mantido atualizado nas seguintes instâncias de VM: my-instance-1 e my-instance-2 .

assignment:
  instances:
  - zones/us-east1-c/instances/my-instance-1
  - zones/us-east1-c/instances/my-instance-2
packages:
- name: "my-package"
  desiredState: UPDATED

Para obter mais informações sobre como atribuir políticas de convidados para pacotes, consulte o documento de referência de representação JSON do pacote .

Exemplo 2

Instale o agente do Cloud Monitoring usando o gerenciador de pacotes yum em todas as instâncias de VM que tenham um dos seguintes prefixos de nome de instância: test-instance- ou dev-instance- .

assignment:
  instanceNamePrefixes:
  - "test-instance-"
  - "dev-instance-"
packages:
- name: "stackdriver-agent"
  desiredState: INSTALLED
  manager: YUM
packageRepositories:
- yum:
    id: google-cloud-monitoring
    displayName: "Google Cloud Monitoring Agent Repository"
    baseUrl: https://packages.cloud.google.com/yum/repos/google-cloud-monitoring-el7-x86_64-all
    gpgKeys:
    - https://packages.cloud.google.com/yum/doc/yum-key.gpg
    - https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

Para obter mais informações sobre como atribuir políticas de convidados para repositórios pacakage, consulte o documento de referência de representação JSON PackageRepository .

Exemplo 3

Instale my-package e remova bad-package-1 e bad-package-2 de instâncias com um conjunto específico de rótulos. Adicione também repositórios para os gerenciadores de pacotes apt e yum.

assignment:
  # Assign to VM instances where `(label.color=red AND label.env=test) OR (label.color=blue AND label.env=test)`
  groupLabels:
  - labels:
      color: red
      env: test
  - labels:
      color: blue
      env: test
packages:
- name: "my-package"
  desiredState: INSTALLED
- name: "bad-package-1"
  desiredState: REMOVED
- name: "bad-package-2"
  desiredState: REMOVED
  manager: APT  # Only apply this to systems with APT.
packageRepositories:
- apt:  # Only apply this to systems with APT.
    uri: "https://packages.cloud.google.com/apt"
    archiveType: DEB
    distribution: cloud-sdk-stretch
    components:
    - main
- yum:  # Only apply this to systems with YUM.
    id: google-cloud-sdk
    displayName: "Google Cloud SDK"
    baseUrl: https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64
    gpgKeys:
    - https://packages.cloud.google.com/yum/doc/yum-key.gpg
    - https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

Exemplo 4

Instale o software de um MSI hospedado no Cloud Storage em todas as instâncias em us-east1-b e us-east1-d .

assignment:
  zones:
  - us-east1-b
  - us-east1-d
recipes:
- name: "swr-msi-gcs"
  desiredState: INSTALLED
  artifacts:
  - id: "the-msi"
    gcs:
      bucket: "my-bucket"
      object: "executable.msi"  # full URI gs://my-bucket/executable.msi#nnnnn
      generation: 1546030865175603
  installSteps:
  - msiInstallation:
      artifactId: "the-msi"

Para obter mais informações sobre como configurar políticas de receita, consulte o documento de referência de representação JSON do SoftwareRecipe .

Exemplo 5

Instale o software executando um script in-line em todas as instâncias de VM que atendem aos seguintes requisitos:

  • Sistema operacional: Red Hat Enterprise Linux 7
  • Rótulo: color=red
assignment:
  osTypes:
  - osShortName: rhel
    osVersion: "7"
  groupLabels:
  - labels:
      color: red
recipes:
- name: recipe-runscript
  desiredState: INSTALLED
  installSteps:
  - scriptRun:
      script: |-
        #!/bin/bash
        touch /TOUCH_FILE

Para obter mais informações sobre como configurar políticas de receita, consulte o documento de referência de representação JSON do SoftwareRecipe .

Exemplo 6

Instala o aplicativo em todas as instâncias do Windows usando um instalador executável que possui o seguinte prefixo de nome de instância: test-instance- .

assignment:
  instanceNamePrefixes:
  - "test-instance-"
  osTypes:
  - osShortName: WINDOWS
recipes:
- name: windows-install-exe-example
  desiredState: INSTALLED
  artifacts:
  - id: installer
    gcs:
      bucket: my-bucket
      generation: '1597013478912389'
      object: MyApp.Installer.x64.exe
  installSteps:
  - fileExec:
      artifactId: installer
      args:
      - /S # Installation must be silent

Para obter mais informações sobre como configurar políticas de receita, consulte o documento de referência de representação JSON do SoftwareRecipe .

Crie uma política de convidados

Ao criar uma política de convidado, o nome da política de convidado deverá atender aos seguintes requisitos de nomenclatura:

  • Conter apenas letras minúsculas, números e hifens
  • Comece com uma carta
  • Termine com um número ou uma letra
  • Ter entre 1 e 63 caracteres
  • Cada ID de política deve ser exclusivo em um projeto

Use um dos métodos a seguir para criar uma política de convidado.

gcloud

Use o comando os-config guest-policies create para criar uma política de convidado.

gcloud beta compute os-config guest-policies create POLICY_ID \
    --file=FILE

Substitua o seguinte:

  • POLICY_ID : o nome da política de convidado que você deseja criar.
  • FILE : arquivo JSON ou YAML que contém as especificações da política de convidado. Para visualizar configurações de amostra, consulte Exemplo de arquivos YAML de política de convidado .

DESCANSAR

Na API, crie uma solicitação POST para o método projects.guestPolicies.create .

POST https://osconfig.googleapis.com/v1beta/projects/PROJECT_ID/guestPolicies?guestPolicyId=POLICY_ID

{
 For more information, see Guest policy JSON
}

Substitua o seguinte:

  • PROJECT_ID : seu ID do projeto.
  • POLICY_ID : o nome da sua política de convidados.

Para visualizar configurações de amostra, consulte exemplos de arquivos YAML de política de convidado .

Solução de problemas

Para solucionar problemas de uma política de convidado, consulte Depurando uma política de convidado .

O que vem a seguir?