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.
A autenticação é
o processo de verificação da 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 da seguinte maneira.
Select the tab for how you plan to use the samples on this page:
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- 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.
- 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. PROJECT_ID
: o ID do projeto;USER_ID
: o nome de usuário do Google Workspace.- 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.
- 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.
- 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.
- 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.
- Sistema operacional: Red Hat Enterprise Linux 7
- Rótulo:
color=red
- 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
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.PROJECT_ID
: o ID do projeto.POLICY_ID
: o nome da política de convidado.- Saiba mais sobre as políticas de convidado do SO (legadas).
- Gerencie políticas de convidado.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Limitações
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:
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:
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:
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:
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:
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
emy-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-
oudev-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 removabad-package-1
ebad-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
Exemplo 4
Instale o software de um MSI hospedado no Cloud Storage para todas as instâncias em
us-east1-b
eus-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:
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:
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:
REST
Na API, crie uma solicitação
POST
para o métodoprojects.guestPolicies.create
.POST https://osconfig.googleapis.com/v1beta/projects/PROJECT_ID/guestPolicies?guestPolicyId=POLICY_ID { For more information, see Guest policy JSON }
Substitua:
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
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2024-11-21 UTC.
-