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

Esta página descreve os pré-requisitos para usar a funcionalidade de orquestração de políticas no VM Manager.

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

Esta secção apresenta todos os comandos gcloud que tem de executar antes de poder usar a funcionalidade de orquestração de políticas.

Projeto

Os seguintes comandos executam as tarefas necessárias para criar orquestrações ao 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 o seguinte:

  • PROJECT_ID: o ID numérico do projeto no qual quer criar o agente do serviço.
  • PROJECT_NUMBER: o número do recurso do projeto atribuído pela Google quando criou o projeto.

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

Pasta

Os seguintes comandos executam as tarefas necessárias para criar orquestrações ao 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 o seguinte:

  • QUOTA_PROJECT_ID: o ID do projeto do projeto de quota. Pode escolher qualquer projeto com a faturação ativada.
  • FOLDER_NUMBER: o ID numérico da pasta na qual quer criar o agente do serviço.

Organização

Os seguintes comandos executam as tarefas necessárias para criar orquestrações ao 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 o seguinte:

  • QUOTA_PROJECT_ID: o ID do projeto do projeto de quota. Pode escolher qualquer projeto com a faturação ativada.
  • ORGANIZATION_NUMBER com o ID numérico da organização na qual quer criar o agente de serviço.

Configure um projeto de quota ou faturação para orquestrações de pastas e organizações

Quando usa orquestradores de políticas para gerir recursos de políticas do SO na sua organização ou pastas, faz pedidos a uma API baseada no cliente. É necessário um projeto de quota para APIs baseadas no cliente. Para mais informações sobre as APIs baseadas no cliente e a configuração de projetos de quota, consulte o artigo Vista geral do projeto de quota.

Quando usa a CLI gcloud ou a API REST para chamar os métodos do orquestrador de políticas, especifique o projeto de quota da seguinte forma:

gcloud

Defina o projeto de quota 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 do projeto de quota.

Em alternativa, defina o projeto de quota para um comando específico através da 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 quota em cada pedido. Para ver detalhes, consulte o artigo Defina o projeto de quota com um pedido REST.

Ative a API OS Config

Para usar a funcionalidade de orquestração de políticas no VM Manager, ative a API OS Config nos seguintes projetos:

  • Para orquestrações ao nível da organização e da pasta, ative a API OS Config para o projeto de quota.
  • Para orquestrações ao nível do projeto, ative a API OS Config no projeto onde cria orquestradores de políticas.

Para mais informações, consulte o artigo Ative a API OS Config.

Ative a API de implementação progressiva para os projetos

Consola

  1. Na Google Cloud consola, selecione o Google Cloud projeto para o qual quer ativar a API e, de seguida, aceda à página APIs e serviços:

    Aceda a APIs e serviços

  2. Clique em Ativar APIs e serviços.

  3. Pesquise "Implementação progressiva".

  4. Nos resultados da pesquisa, clique em API de implementação progressiva.

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

gcloud

  1. Para ver se a API Progressive Rollout está ativada, execute o seguinte comando depois de substituir PROJECT_ID pelo ID do projeto para o qual quer ativar a API:

     gcloud services list --project=PROJECT_ID
    

    Se progressiverollout.googleapis.com aparecer no resultado, a API está ativada.

  2. Se a API não estiver ativada, execute o seguinte comando para a ativar:

     gcloud services enable progressiverollout.googleapis.com
    

    Para mais informações, consulte gcloud services.

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

O orquestrador de políticas usa os agentes do serviço OS Config para realizar ações nos seus projetos. Também depende da API de implementação progressiva, que tem os seus próprios agentes de serviço. Para mais informações, consulte o artigo Agentes de serviços.

Tem de 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 as seguintes funções do IAM necessárias a estes 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 implementação do OSConfig (roles/osconfig.rolloutServiceAgent) para a conta @gcp-sa-osconfig-rollout.iam.gserviceaccount.com
  • Agente do serviço de implementação progressiva (roles/progressiverollout.serviceAgent) para a conta @gcp-sa-progrollout.iam.gserviceaccount.com

Para conceder funções IAM aos agentes de serviço, use a Google Cloud consola ou o comando add-iam-policy-binding. Para mais informações, consulte o artigo Conceda uma função ao agente de serviço.

Funções necessárias

  • Para receber as autorizações de que precisa para conceder acesso aos agentes de serviço, peça ao seu administrador que lhe conceda as seguintes funções do IAM no projeto, na pasta ou na organização aos quais está a conceder acesso:

    Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

    Estas funções predefinidas contêm as autorizações necessárias para conceder acesso aos agentes de serviço. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

    Autorizações necessárias

    São necessárias as seguintes autorizações 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

    Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

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

  1. Reveja o formato do endereço de email 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 onde 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 onde 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 na qual cria os orquestradores de políticas.

  2. Para criar o agente de serviço para uma API e um recurso especificados, 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 no qual 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 na qual 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 na qual quer criar o agente de serviço.

Conceda funções IAM aos agentes do serviço

Para conceder as funções de agente do serviço, execute o comando gcloud add-iam-policy-binding da seguinte forma:

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 ao qual a associação da política de IAM está a ser 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 à qual a associação da política de IAM está a ser 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 à qual a associação da política de IAM está a ser adicionada.

O que se segue?