Use políticas de convidado para manter configurações de software consistentes nas instâncias de máquinas virtuais (VM) do Linux e do Windows.
Para configurar uma política de convidado em um conjunto de VMs, siga estas etapas:
- Atribua as permissões necessárias aos usuários.
- Configure a VM.
- Configure o arquivo JSON ou YAML da política de convidado.
- Crie a política de convidado.
Antes de começar
- Revise as cotas de configuração do SO.
-
Configure a autenticação, caso ainda não tenha feito isso.
Com isso, você confirma sua identidade para acesso a serviços e APIs do Google Cloud . Para executar
códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine selecionando uma das seguintes opções:
Selecione a guia para como planeja usar as amostras nesta página:
gcloud
-
Instale a CLI do Google Cloud. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud initAo usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
- Defina uma região e uma zona padrão.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.
Instale a CLI do Google Cloud.
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .
Limitações
- Para VMs de destino, a política de convidado é atualizada sempre que o agente faz check-in com o serviço. Essa verificação acontece a cada 10 a 15 minutos.
- Não há painéis de compliance, notificações ou serviços de alerta disponíveis nestas políticas de convidado do SO legado. As VMs que não estão executando o agente de configuração do SO não informam falhas. Para garantir resultados ainda melhores, use esse recurso com o serviço OS Inventory Management ou com qualquer outra ferramenta de monitoramento de compliance.
Um roteiro de software, com um nome específico, é executado apenas uma vez quando você cria uma política de convidado. Para executar novamente um roteiro de software, faça o seguinte:
- Renomeie a receita de software.
- Exclua e recrie a política de convidado usando a receita de software renomeada.
Permissões
Como é possível usar políticas de convidado para instalar e gerenciar pacotes de software em uma VM, a criação e a gestão de políticas de convidado equivale a conceder acesso de execução remota de código em uma VM.
Quando você configura políticas de convidado, 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 possível risco de segurança. Para atenuar isso, recomendamos que você forneça apenas o acesso necessário para 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. É possível conceder uma das seguintes funções granulares:
- Administrador de GuestPolicy (
roles/osconfig.guestPolicyAdmin). Contém permissões para criar, excluir, atualizar, receber e listar políticas de convidado. - Editor de GuestPolicy (
roles/osconfig.guestPolicyEditor). Contém permissões para receber, atualizar e listar políticas de convidado. - Leitor de GuestPolicy (
roles/osconfig.guestPolicyViewer): tem permissões de acesso somente leitura para receber e listar políticas de convidados.
Por exemplo, para conceder a um usuário o acesso de administrador às políticas de convidado, execute o seguinte comando:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member user:USER_ID@gmail.com \
--role roles/osconfig.guestPolicyAdmin
Substitua:
PROJECT_ID: o ID do projeto;USER_ID: o nome de usuário do Google Workspace.
Configure a VM.
Para usar políticas de convidado, é preciso configurar o VM Manager.
Configure um arquivo YAML ou JSON da política de convidado
É necessário fornecer especificações da política de convidado usando um arquivo JSON ou YAML. Para ver exemplos de configurações, consulte Exemplos de arquivos YAML da política de convidado.
O arquivo YAML ou JSON contém estas duas seções principais:
- A seção de atribuição que contém a lista de VMs de destino.
- A seção de configuração obrigatória que contém o estado que você quer manter nas VMs.
Atividades
É possível atribuir políticas de convidado a todas as VMs no projeto ou
usar a chave assignment no arquivo JSON ou YAML para visar um grupo específico
de VMs.
Por exemplo, você consegue segmentar um grupo de VMs usando qualquer uma das características a seguir:
- Nome da instância. Veja o exemplo 1.
- Prefixo de 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 o nome, a versão e a arquitetura do SO. Veja o exemplo 5. O comando os-invent 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 usando informações do sistema operacional, o agente de configuração do SO precisa enviar essas informações para o endpoint de atributos de convidado da VM. Por padrão, para garantir a privacidade, as informações do sistema operacional para VMs não estão disponíveis. Para agrupar VMs por informações do sistema operacional, verifique se os atributos de convidado os serviços de gerenciamento de inventário do SO estão ativados. Para ativar esses serviços, consulte Configure sua VM.
As configurações de política de convidado são aplicadas automaticamente a todas as novas VMs que corresponderem à atribuição.
Configuração necessária
A configuração necessária pode ser realizada usando qualquer uma das tarefas vistas a seguir ou uma combinação delas:
- Instalar, remover e atualizar automaticamente os pacotes de software. Veja o exemplo 1.
- Configurar repositórios de pacotes de software. Veja o exemplo 1 ou o exemplo 3.
- Instalar o software usando roteiros de software.
Exemplos de arquivos YAML da política de convidado
Exemplo 1
Instale o pacote my-package, que precisa ser 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 como atribuir políticas de convidado para pacotes, consulte o documento de referência 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 mais informações sobre como atribuir políticas de convidado para repositórios de pacotes, consulte o documento de referência Representação JSON do PackageRepository.
Exemplo 3
Instale my-package e remova bad-package-1 e bad-package-2 das instâncias com um conjunto específico de rótulos. Além disso, adicione 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
- Para mais informações sobre como atribuir políticas de convidado para pacotes, consulte o documento de referência Representação JSON do pacote.
- Para mais informações sobre como atribuir políticas de convidado para repositórios de pacotes, consulte o documento de referência Representação JSON do PackageRepository.
Exemplo 4
Instale o software de um MSI hospedado no Cloud Storage para 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 como configurar políticas de roteiro, consulte o documento de referência Representação JSON do SoftwareRecipe.
Exemplo 5
Instale o software ao executar um script in-line em todas as instâncias de VM que atendam 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 mais informações sobre como configurar políticas de roteiro, consulte o documento de referência Representação JSON do SoftwareRecipe.
Exemplo 6
Instala o aplicativo em todas as instâncias do Windows usando um instalador executável com 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 mais informações sobre como configurar políticas de roteiro, consulte o documento de referência Representação JSON do SoftwareRecipe.
Crie uma política de convidado.
Quando você cria uma política de convidado, o nome dela precisa atender aos seguintes requisitos de nomenclatura:
- Ter somente letras minúsculas, números e hifens
- Começar com uma letra
- Terminar com um número ou uma letra
- Ter entre 1 e 63 caracteres
- Cada ID de política precisa 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:
POLICY_ID: o nome da política de convidado que você quer criar;FILE: o arquivo JSON ou YAML que contém as especificações da política de convidado. Para ver exemplos de configurações, consulte Exemplos de arquivos YAML da política de convidado.
REST
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:
PROJECT_ID: o ID do projeto.POLICY_ID: o nome da política de convidado.
Para ver exemplos de configurações, consulte Exemplos de arquivos YAML da política de convidado.
Solução de problemas
Para resolver problemas de uma política de convidado, consulte Como depurar uma política de convidado.
A seguir
- Saiba mais sobre as políticas de convidado do SO (legadas).
- Gerencie políticas de convidado.