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
- No Google Cloud console, abra a página Gerenciar recursos.
- Acesse a página Gerenciar recursos.
- Selecione o recurso da organização na lista suspensa Organização no canto superior esquerdo da página.
- Clique em Criar projeto.
- Digite o Nome do projeto.
- Na caixa Destino, clique em Procurar para selecionar a pasta na qual você quer criar o projeto.
- Clique em Criar.
gcloud
gcloud projects create PROJECT_ID --folder FOLDER_ID
Substitua:
PROJECT_ID: o ID do projeto a ser criadoFOLDER_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, comofolderouorganization.
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.updateno projeto- Se o recurso estiver em uma pasta:
resourcemanager.projects.movena pasta de origem e no destino - Se o recurso não estiver em uma pasta:
resourcemanager.projects.moveno 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:
No Google Cloud console, acesse a página Gerenciar recursos.
Selecione a organização na lista suspensa Organização , na parte superior esquerda da página.
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.
Clique no menu "opções" (as reticências verticais) da linha e clique em Mover.
Clique em Procurar para selecionar a pasta para que você quer mover o projeto.
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,organizationoufolder.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/415104041262DESTINATION_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.
- No Google Cloud console, abra a página Gerenciar recursos.
- Selecione o recurso da organização na lista suspensa Organização no canto superior esquerdo da página.
- Clique na linha da pasta para selecioná-la na lista de projetos e pastas.
- Clique no menu "opções" (as reticências verticais) da linha e clique em Mover.
- Clique em Procurar para selecionar a pasta para que você quer mover a pasta.
- 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 movidaPARENT_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 movidaPARENT_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
No Google Cloud console, abra a página Gerenciar recursos.
Na lista suspensa Organização, selecione sua organização.
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=valuepara 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
- Saiba como visualizar e atualizar projetos.
- Saiba mais sobre papéis e permissões para gerenciar projetos.