Gerenciar projetos em pastas

Esta página descreve como organizar sua Google Cloud hierarquia aninhando projetos em pastas.

Visão geral

Na Google Cloud hierarquia de recursos, os projetos servem como as principais unidades organizacionais e de faturamento dos seus recursos. Eles ficam entre as pastas (ou o recurso da organização) e os recursos subjacentes, como instâncias máquina virtual e buckets de armazenamento.

Embora as pastas sejam um mecanismo de agrupamento opcional, organizar seus projetos em pastas oferece várias vantagens principais:

  • Governança escalonável: aplique automaticamente políticas do Identity and Access Management (IAM) e restrições de segurança a vários projetos por herança baseada em hierarquia.

  • Alinhamento de negócios: estruture seu ambiente de nuvem para refletir os departamentos, centros de custo ou ciclos de vida de desenvolvimento da sua organização (como desenvolvimento, preparação e produção).

  • Administração delegada: conceda a equipes específicas a autonomia para gerenciar seus próprios projetos e subpastas sem exigir permissões amplas no nível da organização.

  • Visibilidade de custos: agrupe projetos relacionados para simplificar o acompanhamento de gastos e melhorar a análise de faturamento de unidades de negócios ou aplicativos específicos.

  • Isolamento de segurança: estabeleça limites de confiança claros para limitar a área afetada de mudanças de configuração e reduzir os riscos de segurança em diferentes ambientes.

Criar um projeto em uma pasta

Para criar um projeto em uma pasta, é preciso ter o papel Criador de projetos (roles/resourcemanager.projectCreator) na pasta. Esse papel pode ser herdado de uma pasta pai.

Console

  1. No Google Cloud console, abra a página Gerenciar recursos.

    Abrir Google Cloud console

  2. Acesse a página Gerenciar recursos.
  3. Selecione o recurso da organização na lista suspensa Organização no canto superior esquerdo da página.
  4. Clique em Criar projeto.
  5. Digite o Nome do projeto.
  6. Na caixa Destino, clique em Procurar para selecionar a pasta na qual você quer criar o projeto.
  7. Clique em Criar.

gcloud

  gcloud projects create PROJECT_ID --folder FOLDER_ID

Substitua:

  • PROJECT_ID: o ID do projeto a ser criado
  • FOLDER_ID: o ID da pasta em que o projeto será criado.

REST

A solicitação JSON:

   request_json= '{
      name: DISPLAY_NAME, projectId: PROJECT_ID, parent: {id: PARENT_ID, type: PARENT_TYPE}
   }'

A solicitação curl:

   curl -X POST -H "Content-Type: application/json" \
   -H "Authorization: Bearer ${bearer_token}" \
   -d "$request_json" \
   https://cloudresourcemanager.googleapis.com/v3/projects

Substitua:

  • PROJECT_ID: o identificador exclusivo do projeto que está sendo criado. Por exemplo, my-awesome-proj-123.
  • DISPLAY_NAME: o nome de exibição do projeto que está sendo criado.
  • PARENT_ID: o identificador exclusivo do pai que está sendo criado. Por exemplo, 123.
  • PARENT_TYPE: o tipo do pai, como folder ou organization.

Não inclua informações sensíveis no nome da pasta ou em outros nomes de recursos. Qualquer referência à pasta ou a recursos relacionados expõe o nome da pasta e do recurso.

Mover um projeto para uma pasta

Considere cuidadosamente as implicações de política antes de mover um projeto para ou dentro de uma pasta. As políticas de permissão definidas no nível do projeto serão movidas com o projeto, mas as políticas herdadas de um recurso pai não serão movidas.

Quando você move um projeto, todas as políticas do Identity and Access Management ou políticas da organização anexadas diretamente serão movidas com ele. No entanto, um projeto na hierarquia de recursos também é afetado pelas políticas herdadas de recursos pai. Se um projeto herdar um papel do IAM que forneça aos usuários permissão para usar um determinado serviço, os usuários não terão acesso a esse serviço no destino, a menos que ele herde a permissão no destino também.

Por exemplo, considere que uma conta de serviço tem o papel de criador de objetos do Storage vinculado a um usuário na Pasta A. A conta de serviço tem permissões para fazer upload de dados para o Cloud Storage em qualquer projeto na Pasta A. Se você moveu um desses projetos para a Pasta B, que não tem as mesmas permissões herdadas, a conta de serviço desse projeto perderá a capacidade de fazer upload de dados, resultando em uma interrupção do serviço.

Essas mesmas considerações se aplicam se as políticas da Organização estiverem definidas nas pastas de origem e de destino. Assim como as políticas de IAM, as da Organização são herdadas. Portanto, você precisa garantir que as políticas da Organização sejam consistentes entre as pastas de origem e de destino.

Para saber mais sobre políticas da Organização, consulte Introdução ao serviço de Política de Organização.

Para mover um projeto, você precisa do papel do IAM Transportador de projetos (roles/resourcemanager.projectMover) na pasta de origem e na pasta de destino. Se o recurso não estiver em uma pasta, você precisará desse papel no recurso da organização.

Esses papéis concedem as seguintes permissões exigidas:

  • resourcemanager.projects.update no projeto
  • Se o recurso estiver em uma pasta:resourcemanager.projects.move na pasta de origem e no destino
  • Se o recurso não estiver em uma pasta:resourcemanager.projects.move no recurso da organização

Também é possível receber essas permissões com papéis personalizados ou outros papéis predefinidos.

Console

Para mover um projeto, siga estas etapas:

  1. No Google Cloud console, acesse a página Gerenciar recursos.

    Acesse "Gerenciar recursos"

  2. Selecione a organização na lista suspensa Organização , na parte superior esquerda da página.

  3. Clique na linha do projeto para selecioná-lo na lista de recursos. Não clique no nome do projeto, porque isso leva você até a página do Identity and Access Management (IAM) do projeto.

  4. Clique no menu "opções" (as reticências verticais) da linha e clique em Mover.

  5. Clique em Procurar para selecionar a pasta para que você quer mover o projeto.

  6. Clique em Mover.

gcloud

Para mover um projeto, execute o gcloud beta projects move comando:

gcloud beta projects move PROJECT_ID \
   --DESTINATION_TYPE DESTINATION_ID

Substitua:

  • PROJECT_ID: o ID ou o número do projeto que você quer mover.
  • DESTINATION_TYPE: o tipo de destino, organization ou folder.
  • DESTINATION_ID: o ID do recurso da organização ou da pasta para onde você quer mover o projeto.

REST

Use o método da v3 projects.movepara mover um projeto.

Solicitação:

POST https://cloudresourcemanager.googleapis.com/v3/{name=PROJECT_NAME}:move
{
  "destinationParent": DESTINATION_PARENT
}

Substitua:

  • PROJECT_NAME: o nome do projeto que você quer atualizar. Por exemplo, projects/415104041262

  • DESTINATION_PARENT: o novo recurso da organização pai ou a pasta em que você quer mover o projeto. Por exemplo: organizations/12345678901

Se for bem-sucedida, a solicitação retornará uma Operação que pode ser usada para rastrear a movimentação do projeto.

Mover uma pasta para outra

Para mover uma pasta para outra, é necessário ter a permissão resourcemanager.folders.move para as pastas de origem e de destino.

Console

O processo de mover pastas para outras pastas no console é semelhante ao de mover projetos.

  1. No Google Cloud console, abra a página Gerenciar recursos.

    Abrir Google Cloud console

  2. Selecione o recurso da organização na lista suspensa Organização no canto superior esquerdo da página.
  3. Clique na linha da pasta para selecioná-la na lista de projetos e pastas.
  4. Clique no menu "opções" (as reticências verticais) da linha e clique em Mover.
  5. Clique em Procurar para selecionar a pasta para que você quer mover a pasta.
  6. Clique em Mover.

gcloud

Para mover uma pasta do recurso da organização, execute o seguinte comando:

gcloud resource-manager folders move FOLDER_ID \
    --organization=PARENT_ID

Substitua:

  • FOLDER_ID: o ID da pasta a ser movida
  • PARENT_ID: o ID do recurso da organização pai

Para mover uma pasta para outra pasta, execute o seguinte comando:

gcloud resource-manager folders move FOLDER_ID \
    --folder=PARENT_ID

Substitua:

  • FOLDER_ID: o ID da pasta a ser movida
  • PARENT_ID: o ID da pasta pai

REST

A solicitação JSON:

request_json= '{
   destinationParent: "folders/DESTINATION_FOLDER_ID"
}'

A solicitação curl Mover pasta:

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token} \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/folders/DISPLAY_NAME:move

Substitua:

  • DESTINATION_FOLDER_ID: o ID da pasta em que você está movendo outra pasta, por exemplo 98765.
  • DISPLAY_NAME: o nome de exibição da pasta que está sendo movida. Por exemplo, "Minha pasta maravilhosa".

A resposta Mover pasta:

{
  "name": "operations/fm.1234567890",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "DISPLAY_NAME",
    "operationType": "MOVE"
  }
}

A solicitação curl Receber operação:

curl -H "Authorization: Bearer ${bearer_token}" \
https://cloudresourcemanager.googleapis.com/v3/operations/fm.1234567890

A resposta Receber operação:

{
  "name": "operations/fm.1234567890",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "DISPLAY_NAME",
    "operationType": "MOVE"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.Folder",
    "name": "folders/12345",
    "parent": "folders/98765",
    "displayName": "DISPLAY_NAME",
    "lifecycleState": "ACTIVE",
    "createTime": "2017-07-19T23:29:26.018Z",
    "updateTime": "2017-07-20T00:54:44.295Z"
  }
}

Visualizar ou listar projetos em uma pasta

Para visualizar ou listar projetos que são filhos diretos de uma pasta, é necessário ter o papel Leitor de pastas (roles/resourcemanager.folderViewer) ou o papel Navegador (roles/browser) na pasta.

Console

  1. No Google Cloud console, abra a página Gerenciar recursos.

    Abrir a página "Gerenciar recursos"

  2. Na lista suspensa Organização, selecione sua organização.

  3. Na lista de recursos, clique no nome da pasta para expandi-la e visualizar os projetos.

    Opcional: use a barra Filtrar na parte de cima da lista para pesquisar um projeto específico por nome ou ID.

gcloud

Para listar todos os projetos que são filhos diretos de uma pasta específica, use o comando gcloud projects list com um filtro:

gcloud projects list --filter="parent.id:FOLDER_ID AND parent.type:folder"

Substitua FOLDER_ID pelo ID exclusivo da pasta.

REST

Use o método projects.list com um parâmetro de consulta que define a pasta pai.

Solicitação HTTP: GET https://cloudresourcemanager.googleapis.com/v3/projects?parent=folders/FOLDER_ID

Exemplo de comando curl:

Bash

curl -H "Authorization: Bearer $(gcloud auth print-access-token)"
"https://cloudresourcemanager.googleapis.com/v3/projects?parent=folders/FOLDER_ID"

Substitua FOLDER_ID pelo ID exclusivo da pasta.

Filtrar projetos por tags ou rótulos (opcional)

Se você tiver um grande número de projetos em uma pasta, poderá usar filtros para encontrar recursos específicos com base em metadados.

Console

  • Na barra Filtrar da página Gerenciar recursos, digite Labels:key=value para restringir a lista a projetos com rótulos específicos. O console oferece suporte limitado à filtragem visual por tags. Use a Google Cloud CLI para consultas de tags avançadas.

gcloud

Para listar projetos em uma pasta que tenham um valor de tag específico, use a flag --filter com o atributo tags:

gcloud projects list \
  --filter="parent.id:FOLDER_ID AND tags.TAG_KEY_PARENT/TAG_KEY_SHORT_NAME:TAG_VALUE_SHORT_NAME"

Substitua:

  • FOLDER_ID: o ID exclusivo da pasta.
  • TAG_KEY_PARENT: o ID do recurso pai da chave de tag, como uma organização ou um projeto.
  • TAG_KEY_SHORT_NAME: o nome abreviado da chave de tag.
  • TAG_VALUE_SHORT_NAME: o nome abreviado do valor da tag.

Para filtrar por rótulos:

gcloud projects list \
  --filter="parent.id:FOLDER_ID AND labels.KEY=VALUE"

Substitua:

  • FOLDER_ID: o ID exclusivo da pasta.
  • KEY: a chave do rótulo.
  • VALUE: o valor do rótulo.

A seguir