Crie uma política de convidado (antiga)

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

Para configurar uma política de hóspedes num conjunto de VMs, conclua os seguintes passos:

  1. Atribua as autorizações necessárias aos utilizadores.
  2. Configure a sua VM.
  3. Configure o ficheiro JSON ou YAML da política de convidado.
  4. Crie a política de hóspedes.

Antes de começar

  • Reveja as quotas de configuração do SO.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Trusted Cloud by S3NS serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init
    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

    Para mais informações, consulte o artigo Autenticar para usar REST na Trusted Cloud documentação de autenticação.

Limitações

  • Para VMs segmentadas, a política de SO convidado é atualizada sempre que o agente comunica com o serviço. Esta verificação ocorre a cada 10 a 15 minutos.
  • Não existem painéis de controlo de conformidade, notificações nem serviços de alerta disponíveis com estas políticas de SO convidado antigas. As VMs que não estão a executar o agente de configuração do SO não comunicam falhas. Para obter os melhores resultados, use esta funcionalidade com o serviço de gestão de inventário de SO ou qualquer outra ferramenta de monitorização da conformidade.
  • Uma receita de software, com um nome específico, só é executada uma vez quando cria uma política de convidados. Para voltar a executar uma receita de software, tem de fazer o seguinte:

    1. Mude o nome da receita de software.
    2. Elimine e recrie a política de convidados com a receita de software renomeada.

Autorizações

Uma vez que pode usar políticas de convidados para instalar e gerir pacotes de software numa VM, a criação e a gestão de políticas de convidados equivalem a conceder acesso à execução de código remoto numa VM.

Quando configura políticas de convidados, as autorizações de IAM são usadas para controlar o acesso ao recurso de política e as atividades são registadas em registos de auditoria. No entanto, os utilizadores podem continuar a executar código na VM, o que representa um potencial risco de segurança. Para mitigar este problema, recomendamos que conceda apenas o acesso necessário a cada utilizador.

Os proprietários de um projeto têm acesso total para criar e gerir políticas. Para todos os outros utilizadores, tem de conceder autorizações. Pode conceder uma das seguintes funções detalhadas:

  • Administrador da GuestPolicy (roles/osconfig.guestPolicyAdmin). Contém autorizações para criar, eliminar, atualizar, obter e listar políticas de hóspedes.
  • GuestPolicy Editor (roles/osconfig.guestPolicyEditor). Contém autorizações para obter, atualizar e listar políticas de hóspedes.
  • GuestPolicy Viewer (roles/osconfig.guestPolicyViewer). Contém autorizações para acesso só de leitura para obter e listar políticas de convidados.

Por exemplo, para conceder a um utilizador 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 utilizador do Google Workspace do utilizador.

Configure a sua VM

Para usar políticas de convidados, tem de configurar o VM Manager.

Configure um ficheiro YAML ou JSON de política de convidado

Tem de fornecer as especificações da política de hóspedes através de um ficheiro JSON ou YAML. Para ver exemplos de configurações, consulte os ficheiros YAML de políticas de convidados de exemplo.

O ficheiro YAML ou JSON contém as seguintes duas secções principais:

Tarefas

Pode atribuir políticas de convidados a todas as VMs no seu projeto ou pode usar a chave assignment no seu ficheiro JSON ou YAML para segmentar um grupo específico de VMs.

Por exemplo, pode segmentar 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.
  • Etiqueta de instância. Consulte o exemplo 3.
  • Zona. Veja o exemplo 4.
  • Informações do sistema operativo, que contêm o nome, a versão e a arquitetura do SO. Veja o exemplo 5. O comando os-inventory describe pode ser usado para determinar o nome, a versão e a arquitetura do SO das VMs.

Para atribuir uma política de convidado através de informações do sistema operativo, o agente de configuração do SO tem de enviar informações do sistema operativo para o ponto final de atributos do convidado para a VM. Para garantir a privacidade, por predefinição, as informações do sistema operativo das VMs estão indisponíveis. Para agrupar VMs por informações do sistema operativo, tem de garantir que os atributos de convidado e os serviços de gestão de inventário do SO estão ativados. Para ativar estes serviços, consulte o artigo Configure a sua MV.

As configurações da política de hóspedes são aplicadas automaticamente a todas as novas VMs que correspondem à atribuição.

Configuração necessária

A configuração necessária pode ser realizada através de qualquer uma ou uma combinação das seguintes tarefas:

  • Instalar, remover e atualizar automaticamente pacotes de software. Veja o exemplo 1.
  • Configure repositórios de pacotes de software. Consulte o exemplo 1 ou o exemplo 3.
  • Instale software através de receitas de software.

Exemplos de ficheiros YAML de políticas de hóspedes

Exemplo 1

Instale o pacote my-package, que tem de 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 mais informações sobre a atribuição de políticas de hóspedes a pacotes, consulte o documento de referência Representação JSON de pacotes.

Exemplo 2

Instale o agente do Cloud Monitoring, através do gestor 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 mais informações sobre a atribuição de políticas de convidados para repositórios de pacotes, consulte o documento de referência Representação JSON de PackageRepository.

Exemplo 3

Instale my-package e remova bad-package-1 e bad-package-2 de instâncias com um conjunto específico de etiquetas. Adicione também repositórios para os gestores 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 software a partir de um MSI alojado 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 mais informações sobre a configuração de políticas de receitas, consulte o documento de referência Representação JSON de SoftwareRecipe.

Exemplo 5

Instale software executando um script inline em todas as instâncias de VM que cumpram os seguintes requisitos:

  • Sistema operativo: Red Hat Enterprise Linux 7
  • Etiqueta: 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 mais informações sobre a configuração de políticas de receitas, consulte o documento de referência Representação JSON de SoftwareRecipe.

Exemplo 6

Instala a aplicação em todas as instâncias do Windows através de um instalador executável com o seguinte prefixo do nome da 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 mais informações sobre a configuração de políticas de receitas, consulte o documento de referência Representação JSON de SoftwareRecipe.

Crie uma política de convidado

Quando cria uma política de convidado, o nome da política de convidado tem de cumprir os seguintes requisitos de nomenclatura:

  • Contêm apenas letras minúsculas, números e hífenes
  • Começar com uma letra
  • Terminar com um número ou uma letra
  • Ter entre 1 e 63 carateres
  • Cada ID da política tem de ser exclusivo num projeto

Use um dos seguintes métodos para criar uma política de hóspedes.

gcloud

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

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

Substitua o seguinte:

REST

Na API, crie um pedido 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: o ID do seu projeto.
  • POLICY_ID: o nome da política de hóspedes.

Para ver exemplos de configurações, consulte os ficheiros YAML de políticas de convidados de exemplo.

Resolução de problemas

Para resolver problemas de uma política de convidado, consulte o artigo Resolução de problemas de uma política de convidado.

O que se segue?