Pré-requisitos para usar o orquestrador de políticas

Esta página descreve os pré-requisitos para usar o recurso de orquestrador de políticas no VM Manager.

Comandos da CLI gcloud para pré-requisitos do orquestrador de políticas

Esta seção lista todos os comandos gcloud que você precisa executar antes de usar o recurso de orquestrador de políticas.

Projeto

Os comandos a seguir realizam as tarefas necessárias para criar orquestrações no nível do projeto:

  # Enable OS Config API
  gcloud services enable osconfig.googleapis.com

  # Enable Progressive Rollout API
  gcloud services enable progressiverollout.googleapis.com

  # Create an OS config service agent
  gcloud beta services identity create --service=osconfig.googleapis.com  --project=PROJECT_NUMBER

  # Create a Progressive Rollout service agent
  gcloud beta services identity create --service=progressiverollout.googleapis.com  --project=PROJECT_NUMBER

  # Grant the required role to the OS config rollout service agent
  gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig-rollout.iam.gserviceaccount.com" \
  --role="roles/osconfig.rolloutServiceAgent"

  # Grant the required role to the OS config service agent
  gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com" \
  --role="roles/osconfig.serviceAgent"

  # Grant the required role to the Progressive Rollout service agent
  gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-progrollout.iam.gserviceaccount.com" \
  --role="roles/progressiverollout.serviceAgent"

Substitua:

  • PROJECT_ID: o ID numérico do projeto em que você quer criar o agente de serviço.
  • PROJECT_NUMBER: o número do recurso do projeto atribuído pelo Google quando você criou o projeto.

Para mais informações, consulte O recurso de projeto.

Pasta

Os comandos a seguir realizam as tarefas necessárias para criar orquestrações no nível da pasta:

  # Set up the quota project
  gcloud config set billing/quota_project QUOTA_PROJECT_ID

  # Enable OS Config API
  gcloud services enable osconfig.googleapis.com

  # Create an OS config service agent
  gcloud beta services identity create --service=osconfig.googleapis.com  --folder=FOLDER_NUMBER

  # Create a Progressive Rollout service agent
  gcloud beta services identity create --service=progressiverollout.googleapis.com  --folder=FOLDER_NUMBER

  # Grant the required role to the OS config rollout service agent
  gcloud resource-manager folders add-iam-policy-binding FOLDER_NUMBER \
  --member="serviceAccount:service-folder-FOLDER_NUMBER@gcp-sa-osconfig-rollout.iam.gserviceaccount.com" \
  --role="roles/osconfig.rolloutServiceAgent"

  # Grant the required role to the OS config service agent
  gcloud resource-manager folders add-iam-policy-binding FOLDER_NUMBER \
  --member="serviceAccount:service-folder-FOLDER_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com" \
  --role="roles/osconfig.serviceAgent"

  # Grant the required role to the Progressive Rollout service agent
  gcloud resource-manager folders add-iam-policy-binding FOLDER_NUMBER \
  --member="serviceAccount:service-folder-FOLDER_NUMBER@gcp-sa-progrollout.iam.gserviceaccount.com" \
  --role="roles/progressiverollout.serviceAgent"
  

Substitua:

  • QUOTA_PROJECT_ID: o ID do projeto de cota. Você pode escolher qualquer projeto com o faturamento ativado.
  • FOLDER_NUMBER: o ID numérico da pasta em que você quer criar o agente de serviço.

Organização

Os comandos a seguir realizam as tarefas necessárias para criar orquestrações no nível da organização:

  # Set up the quota project
  gcloud config set billing/quota_project QUOTA_PROJECT_ID

  # Enable OS Config API
  gcloud services enable osconfig.googleapis.com

  # Create an OS config service agent
  gcloud beta services identity create --service=osconfig.googleapis.com --organization=ORGANIZATION_NUMBER

  # Create a Progressive Rollout service agent
  gcloud beta services identity create --service=progressiverollout.googleapis.com  --organization=ORGANIZATION_NUMBER

  # Grant the required role to the OS config rollout service agent
  gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \
  --member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig-rollout.iam.gserviceaccount.com" \
  --role="roles/osconfig.rolloutServiceAgent"

  # Grant the required role to the OS config service agent
  gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \
  --member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com" \
  --role="roles/osconfig.serviceAgent"

  # Grant the required role to the Progressive Rollout service agent
  gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \
  --member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-progrollout.iam.gserviceaccount.com" \
  --role="roles/progressiverollout.serviceAgent"

Substitua:

  • QUOTA_PROJECT_ID: o ID do projeto de cota. Você pode escolher qualquer projeto com o faturamento ativado.
  • ORGANIZATION_NUMBER com o ID numérico da organização em que você quer criar o agente de serviço.

Configurar uma cota ou um projeto de faturamento para orquestrações de organização e pasta

Quando você usa orquestradores de políticas para gerenciar recursos de políticas do SO na sua organização ou pastas, faz solicitações para uma API baseada em cliente. Um projeto de cota é necessário para APIs baseadas em cliente. Para mais informações sobre APIs baseadas em cliente e configuração de projetos de cota, consulte Visão geral do projeto de cota.

Ao usar a CLI gcloud ou a API REST para chamar os métodos do orquestrador de políticas, especifique o projeto de cota da seguinte maneira:

gcloud

Defina o projeto de cota na propriedade de configuração da CLI gcloud:

gcloud config set billing/quota_project QUOTA_PROJECT_ID

Substitua QUOTA_PROJECT_ID pelo ID do projeto da cota.

Como alternativa, defina o projeto de cota para um comando específico usando a flag --billing-project, que tem precedência sobre a propriedade de configuração.

REST

Adicione o cabeçalho HTTP x-goog-user-project para especificar um projeto de cota em cada solicitação. Para detalhes, consulte Definir o projeto de cota com uma solicitação REST.

Ativar a API OS Config

Para usar o recurso de orquestrador de políticas no VM Manager, ative a API OS Config nos seguintes projetos:

  • Para orquestrações no nível da organização e da pasta, ative a API OS Config para o projeto de cota.
  • Para orquestrações no nível do projeto, ative a API OS Config no projeto em que você cria orquestradores de políticas.

Para mais informações, consulte Ativar a API OS Config.

Ativar a API Progressive Rollout para os projetos

Console

  1. No console Google Cloud , selecione o projeto Google Cloud em que você quer ativar a API e acesse a página APIs e serviços:

    Acessar APIs e serviços

  2. Clique em Ativar APIs e serviços.

  3. Pesquise "Implantação progressiva".

  4. Nos resultados da pesquisa, clique em API Progressive Rollout.

  5. Se a API não estiver ativada, clique em Ativar.

gcloud

  1. Para verificar se a API Progressive Rollout está ativada, execute o seguinte comando depois de substituir PROJECT_ID pelo ID do projeto em que você quer ativar a API:

     gcloud services list --project=PROJECT_ID
    

    Se progressiverollout.googleapis.com aparecer na saída, a API está ativada.

  2. Se a API não estiver ativada, execute o seguinte comando para ativá-la:

     gcloud services enable progressiverollout.googleapis.com
    

    Para ver mais informações, consulte gcloud services.

Configurar os agentes de serviço de configuração do SO

O orquestrador de políticas usa os agentes de serviço da configuração do SO para realizar ações nos seus projetos. Ela também depende da API Progressive Rollout, que tem os próprios agentes de serviço. Para mais informações, consulte Agentes de serviço.

Você precisa criar os agentes de serviço para cada projeto, pasta ou organização em que cria o orquestrador de políticas. Para que o orquestrador de políticas funcione corretamente, conceda os seguintes papéis obrigatórios do IAM aos agentes de serviço no recurso principal do orquestrador:

  • Agente de serviço do OSConfig (roles/osconfig.serviceAgent) para a conta @gcp-sa-osconfig.iam.gserviceaccount.com
  • Agente de serviço de lançamento do OSConfig (roles/osconfig.rolloutServiceAgent) para a conta @gcp-sa-osconfig-rollout.iam.gserviceaccount.com
  • Agente de serviço do lançamento progressivo (roles/progressiverollout.serviceAgent) para a conta @gcp-sa-progrollout.iam.gserviceaccount.com

Para conceder papéis do IAM aos agentes de serviço, use o console do Google Cloud ou o comando add-iam-policy-binding. Para mais informações, consulte Conceder um papel ao agente de serviço.

Funções exigidas

  • Para receber as permissões necessárias para conceder acesso aos agentes de serviço, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto, na pasta ou na organização a que você está concedendo acesso:

    Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

    Esses papéis predefinidos contêm as permissões necessárias para conceder acesso aos agentes de serviço. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

    Permissões necessárias

    As permissões a seguir são necessárias para conceder acesso aos agentes de serviço:

    • Conceda aos agentes de serviço acesso a um projeto:
      • resourcemanager.projects.getIamPolicy
      • resourcemanager.projects.setIamPolicy
    • Conceda aos agentes de serviço acesso a uma pasta:
      • resourcemanager.folders.getIamPolicy
      • resourcemanager.folders.setIamPolicy
    • Conceda aos agentes de serviço acesso a uma organização:
      • resourcemanager.organizations.getIamPolicy
      • resourcemanager.organizations.setIamPolicy

    Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Para criar os agentes de serviço, faça o seguinte:

  1. Revise o formato do endereço de e-mail do agente de serviço para cada recurso:

    Projeto

    • service-PROJECT_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com
    • service-PROJECT_NUMBER@gcp-sa-osconfig-rollout.iam.gserviceaccount.com
    • service-PROJECT_NUMBER@gcp-sa-progrollout.iam.gserviceaccount.com

    Substitua PROJECT_NUMBER pelo ID numérico do projeto em que você cria os orquestradores de políticas.

    Pasta

    • service-folder-FOLDER_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com
    • service-folder-FOLDER_NUMBER@gcp-sa-osconfig-rollout.iam.gserviceaccount.com
    • service-folder-FOLDER_NUMBER@gcp-sa-progrollout.iam.gserviceaccount.com

    Substitua FOLDER_NUMBER pelo ID numérico da pasta em que você cria os orquestradores de políticas.

    Organização

    • service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com
    • service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig-rollout.iam.gserviceaccount.com
    • service-org-ORGANIZATION_NUMBER@gcp-sa-progrollout.iam.gserviceaccount.com

    Substitua ORGANIZATION_NUMBER pelo ID numérico da organização em que você cria os orquestradores de políticas.

  2. Para criar o agente de serviço de uma API e um recurso específicos, use o comando gcloud beta services identity create:

    Projeto

    # Create an OS config service agent
    gcloud beta services identity create --service=osconfig.googleapis.com  --project=PROJECT_NUMBER
    
    # Create a Progressive Rollout service agent
    gcloud beta services identity create --service=progressiverollout.googleapis.com  --project=PROJECT_NUMBER
    

    Substitua PROJECT_NUMBER pelo ID numérico do projeto em que você quer criar o agente de serviço.

    Pasta

    # Create an OS config service agent
    gcloud beta services identity create --service=osconfig.googleapis.com  --folder=FOLDER_NUMBER
    
    # Create a Progressive Rollout service agent
    gcloud beta services identity create --service=progressiverollout.googleapis.com  --folder=FOLDER_NUMBER
    

    Substitua FOLDER_NUMBER pelo ID numérico da pasta em que você quer criar o agente de serviço.

    Organização

    # Create an OS config service agent
    gcloud beta services identity create --service=osconfig.googleapis.com --organization=ORGANIZATION_NUMBER
    
    # Create a Progressive Rollout service agent
    gcloud beta services identity create --service=progressiverollout.googleapis.com  --organization=ORGANIZATION_NUMBER
    

    Substitua ORGANIZATION_NUMBER pelo ID numérico da organização em que você quer criar o agente de serviço.

Conceder papéis do IAM aos agentes de serviço

Para conceder os papéis do agente de serviço, execute o gcloud add-iam-policy-binding da seguinte maneira:

Projeto

# Grant the required role to the OS config rollout service agent
 gcloud projects add-iam-policy-binding PROJECT_ID \
 --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig-rollout.iam.gserviceaccount.com" \
 --role="roles/osconfig.rolloutServiceAgent"

 # Grant the required role to the OS config service agent
 gcloud projects add-iam-policy-binding PROJECT_ID \
 --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com" \
 --role="roles/osconfig.serviceAgent"

 # Grant the required role to the Progressive Rollout service agent
 gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-progrollout.iam.gserviceaccount.com" \
--role="roles/progressiverollout.serviceAgent"

Substitua PROJECT_NUMBER pelo ID numérico do projeto a que a vinculação de política do IAM está sendo adicionada.

Pasta

# Grant the required role to the OS config rollout service agent
gcloud resource-manager folders add-iam-policy-binding FOLDER_NUMBER \
 --member="serviceAccount:service-folder-FOLDER_NUMBER@gcp-sa-osconfig-rollout.iam.gserviceaccount.com" \
 --role="roles/osconfig.rolloutServiceAgent"

# Grant the required role to the OS config service agent
gcloud resource-manager folders add-iam-policy-binding FOLDER_NUMBER \
 --member="serviceAccount:service-folder-FOLDER_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com" \
 --role="roles/osconfig.serviceAgent"

# Grant the required role to the Progressive Rollout service agent
gcloud resource-manager folders add-iam-policy-binding FOLDER_NUMBER \
--member="serviceAccount:service-folder-FOLDER_NUMBER@gcp-sa-progrollout.iam.gserviceaccount.com" \
--role="roles/progressiverollout.serviceAgent"

Substitua FOLDER_NUMBER pelo ID numérico da pasta a que a vinculação de política do IAM está sendo adicionada.

Organização

# Grant the required role to the OS config rollout service agent
gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \
 --member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig-rollout.iam.gserviceaccount.com" \
 --role="roles/osconfig.rolloutServiceAgent"

 # Grant the required role to the OS config service agent
 gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \
 --member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com" \
 --role="roles/osconfig.serviceAgent"

 # Grant the required role to the Progressive Rollout service agent
 gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \
--member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-progrollout.iam.gserviceaccount.com" \
--role="roles/progressiverollout.serviceAgent"

Substitua ORGANIZATION_NUMBER pelo ID numérico da organização a que a vinculação de política do IAM está sendo adicionada.

A seguir