É possível criar, mover e visualizar projetos dentro de pastas para organizar sua hierarquia de recursos doGoogle Cloud .
Visão geral
Na hierarquia de recursos do Google Cloud , 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 de máquina virtual e buckets de armazenamento.
Embora as pastas sejam um mecanismo de agrupamento opcional, organizar seus projetos nelas oferece várias vantagens importantes:
Governança escalonável: aplique automaticamente políticas do Identity and Access Management (IAM) e restrições de segurança a vários projetos usando a 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 Dev, Staging e Prod).
Administração delegada: conceda a equipes específicas a autonomia para gerenciar os próprios projetos e subpastas sem precisar de 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 das alterações 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 console do Google Cloud , abra a página "Gerenciar recursos".
- Acesse a página Gerenciar recursos.
- Selecione o recurso da organização no menu suspenso 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 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, comofolderouorganization.
Não inclua informações sensíveis no nome da pasta ou de outros recursos. Qualquer referência à pasta ou aos recursos relacionados expõe o nome da pasta e o nome 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 de gerenciamento de identidade e acesso 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 concede aos usuários permissão para usar um serviço específico, eles não terão acesso a esse serviço no destino, a menos que ele também herde a permissão no destino.
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ê mover 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 as políticas da organização, consulte Introdução ao serviço de políticas da organização.
Para mover um projeto, você precisa do papel do IAM de 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 na pasta de destino. - Se o recurso não estiver em uma pasta:
resourcemanager.projects.moveno recurso da organização
Também é possível conseguir essas permissões com papéis personalizados ou outros papéis predefinidos.
Console
Para mover um projeto, siga estas etapas:
No console Google Cloud , 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, que leva à página do Identity and Access Management (IAM) do projeto.
Clique no menu "opções" (as reticências verticais) na linha e 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 comando gcloud beta projects move:
gcloud beta projects move PROJECT_ID \ --DESTINATION_TYPE DESTINATION_ID
Substitua:
PROJECT_ID: o ID ou número do projeto que você quer mover.DESTINATION_TYPE: o tipo do destino,organizationoufolder.DESTINATION_ID: o ID do recurso ou da pasta da organização para onde você quer mover o projeto.
REST
Use o método v3 projects.move para 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 ou pasta da organização pai 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 pasta
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 transferência de uma pasta para outra no console é semelhante ao de transferência de projetos.
- No console do Google Cloud , abra a página "Gerenciar recursos".
- Selecione o recurso da organização no menu suspenso 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) na linha e em Mover.
- Clique em Procurar para selecionar a pasta para que você quer mover a pasta.
- Clique em Mover.
gcloud
Para mover uma pasta no 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 dentro de outra, 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 incrível".
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, é preciso ter o
papel de Leitor de pastas (roles/resourcemanager.folderViewer) ou de Navegador (roles/browser)
na pasta.
Console
No console do Google Cloud , abra a página Gerenciar recursos.
No menu suspenso Organização, selecione sua organização.
Na lista de recursos, clique no nome da pasta para expandi-la e ver os projetos dela.
Opcional: use a barra Filtro 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, use filtros para encontrar recursos específicos com base em metadados.
Console
- Na barra Filtro da página Gerenciar recursos, digite
Labels:key=valuepara restringir a lista a projetos com rótulos específicos. O console oferece suporte limitado para filtragem visual por tags. Use a Google Cloud CLI para consultas avançadas de tags.
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 curto da chave de tag.TAG_VALUE_SHORT_NAME: o nome curto 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.