Nesta página, descrevemos como organizar sua hierarquia de Google Cloud aninhando projetos em pastas.
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 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 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 por herança baseada em hierarquia.
Alinhamento com os negócios: estruture seu ambiente de nuvem para refletir os departamentos, centros de custo ou ciclos de vida de desenvolvimento (como Dev, Staging e Prod) da sua organização.
Administração delegada: conceda a equipes específicas a autonomia para gerenciar os 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 rastreamento 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 console Google Cloud , abra a página "Gerenciar recursos".
- Acesse a página Gerenciar recursos.
- Selecione o recurso da sua organização no menu suspenso Organização, na parte superior esquerda 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 em que está sendo criado. Por exemplo,123.PARENT_TYPE: o tipo do recurso pai, comofolderouorganization.
Não inclua informações sensíveis no nome da pasta ou em outros nomes de recursos. Qualquer referência à pasta ou aos 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 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 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 Transportador de projetos do IAM
(roles/resourcemanager.projectMover) nas pastas de origem e de
destino. Se o recurso não estiver em uma pasta, você precisará dessa função 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 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, 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 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 de destino,organizationoufolder.DESTINATION_ID: o ID do recurso da organização ou da pasta em que 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 de organização mãe ou pasta para onde 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 console Google Cloud , abra a página "Gerenciar recursos".
- Selecione o recurso da sua organização no menu suspenso Organização, na parte superior esquerda 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 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 principal
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 mãe
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 para onde 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, você precisa ter o papel de Leitor de pastas (roles/resourcemanager.folderViewer) ou Navegador (roles/browser) na pasta.
Console
No console 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 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 mãe.
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 muitos 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. Observação: o console oferece suporte limitado à filtragem visual por tags. Use a Google Cloud CLI para consultas avançadas de tags.
gcloud
Para listar projetos em uma pasta que têm 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.