Apresentar todos os projetos e pastas na sua hierarquia

Os recursos no Google Cloud estão organizados numa hierarquia, em que cada nó (organizações, pastas, projetos, etc.) tem uma referência ao respetivo principal. Pode usar essa referência como um termo de filtro essencial para as análises, de modo a melhorar a consistência das pesquisas de recursos.

Pode conceder autorizações aos utilizadores através de funções personalizadas. Estas funções operam segundo o princípio do menor privilégio e, geralmente, fornecem apenas as autorizações mínimas necessárias para realizar uma tarefa específica.

Este esquema pode ser útil para isolar diferentes grupos de utilizadores. Por exemplo:

  • Uma grande empresa com departamentos que não devem poder inspecionar os recursos dos seus pares.
  • Os contratados que recebem autorizações para um projeto específico, mas não para outros recursos.

No entanto, devido às respetivas autorizações restritas, as funções personalizadas podem fazer com que muitos recursos na sua hierarquia sejam omitidos quando executa uma operação de lista. Quando faz pesquisas como um utilizador ao qual foi concedida uma função personalizada, pode ser difícil saber por que motivo determinados recursos não estão a ser apresentados.

Para evitar este cenário, esta página aborda as práticas recomendadas para listar todos os recursos geridos pela Cloud Resource Manager API na sua hierarquia de recursos. Pode usar estas orientações para configurar verificações de auditoria personalizadas ou para criar a sua própria experiência do utilizador com base na API Cloud Resource Manager.

Apresentar todos os nós de recursos

Quando analisa a hierarquia de recursos para listar todos os recursos, precisa de resultados fortemente consistentes. Se a análise perder recursos ou fornecer resultados desatualizados, pode ser difícil perceber que algo correu mal. Para se certificar de que obtém sempre os resultados mais precisos e completos, use uma conta de serviço e faça uma análise da seguinte forma:

  1. Conceda à conta de serviço as autorizações list e get para organizações, pastas e projetos no recurso da organização.
  2. Se estiver a listar recursos de projetos e pastas, especifique o recurso principal na string de filtro.
  3. Execute o método projects.list() com esta conta de serviço para cada tipo de recurso que quer encontrar e para quaisquer recursos intermédios, como pastas.

Exemplo para listar todos os nós de recursos

O pseudocódigo seguinte demonstra como listar todos os nós de recursos nas suas organizações:

organizations = organizations.search()
projects = emptyList()

parentsToList = queueOf(organizations)
while (parent = parentsToList.pop()) {
  // TODO: Iterate over paginated results as needed.
  // TODO: Handle PERMISSION_DENIED appropriately.
  projects.addAll(projects.list(parent.type, parent.id))
  parentsToList.addAll(folders.list(parent))
}

Ao criar uma experiência do utilizador personalizada, também pode querer misturar resultados da pesquisa e carregar os recursos principais conforme necessário (ao mesmo tempo que deteta a exceção PERMISSION_DENIED).

Reduza a latência na lista de projetos do gcloud

Se a sua consulta gcloud projects listfalhar ou demorar demasiado tempo, o número de Google Cloud projetos a devolver pode ser demasiado grande. Para corrigir este problema, aplique as flags filter e page-size ao comando gcloud projects list.

Para saber mais sobre as flags que pode adicionar ao comando gcloud projects list, consulte gcloud projects list.

Exemplo de exclusão de projetos do Apps Script

A causa mais comum de falhas de consultas ou latência é um número elevado de projetos do Apps Script numa organização. O comando seguinte mostra como excluir projetos do Apps Script da lista de projetos e limitar o número de recursos devolvidos por página.

gcloud projects list --filter="NOT parent.id: 'APPS_SCRIPT_FOLDER_ID' "--page-size='30'

Obtenha o ID da pasta do Apps Script

Para encontrar o ID da pasta do Apps Script, siga estes passos.

  1. Na barra de ferramentas da Google Cloud consola, clique em Pesquisar recursos, documentos, produtos e muito mais e escreva apps-script.

    Aceda à Google Cloud consola

  2. Em Recursos, selecione a pasta apps-script.

  3. Em ID da pasta, copie o ID da pasta.

Recursos de pesquisa

Se a sua análise tiver como objetivo pesquisar um recurso que foi criado há algum tempo, pode fazer uma análise mais rápida que tenha consistência eventual em vez de consistência forte. Tenha em atenção que este método de pesquisa pode omitir alguns recursos do resultado da pesquisa, particularmente os recursos que foram alterados recentemente. Para pesquisar recursos:

  1. Use uma conta de serviço com a autorização get para o recurso que está a pesquisar.
  2. Execute o método projects.search() com esta conta de serviço.

Resolução de problemas de recursos omitidos

Se estiver a desenvolver uma ferramenta de análise, recomendamos que use as autorizações list e get concedidas ao nível da organização. Isto evita problemas causados pelo utilizador ter autorizações parciais, o que resulta na omissão de alguns recursos da lista.

Se estiver a criar uma experiência do utilizador personalizada que verifique as autorizações do utilizador, não existe uma solução fácil. Se um utilizador não tiver autorizações ao nível da organização, precisa de determinadas autorizações em todos os recursos para que apareçam. Se um utilizador não tiver autorizações num recurso em algum ponto da hierarquia, alguns recursos podem não aparecer.

Se um utilizador tiver a autorização list, mas não a autorização get para um recurso específico, esse recurso não fica visível na consolaGoogle Cloud . No entanto, o recurso é devolvido numa pesquisa através da API ou da CLI do Google Cloud que especifica o recurso principal. Esta disparidade entre a Google Cloud consola e outros métodos é uma fonte comum de confusão quando tenta analisar a hierarquia de recursos.

Os diagramas seguintes demonstram algumas configurações comuns de autorizações e como alteram os recursos visíveis para um utilizador que executa uma pesquisa.

Apresentar todos os recursos

Neste exemplo, todas as autorizações necessárias são concedidas no recurso Organization. Por conseguinte, toda a hierarquia fica visível quando faz uma lista ou uma pesquisa.

Autorizações de organização em falta

O utilizador neste exemplo tem todas as autorizações necessárias, exceto resourcemanager.organizations.get, mas essas autorizações são-lhe concedidas ao nível da pasta. Esta lacuna de autorizações dá-lhes visibilidade total na lista ou na pesquisa dessa parte da hierarquia, mas não na outra metade.

Autorização de obtenção de projetos apenas

Este exemplo mostra a experiência de um utilizador com apenas a autorização resourcemanager.projects.get concedida ao nível do recurso de pasta. Podem ver os projetos abaixo dessa pasta na hierarquia, mas apenas através da pesquisa. A utilização da funcionalidade de lista não devolve resultados.

Apenas autorização para obter pasta

Este exemplo mostra o mesmo problema que o anterior, em que as autorizações concedidas só permitem que um utilizador encontre os respetivos recursos de pastas através da pesquisa. A utilização da funcionalidade de lista não devolve resultados.

Autorizações mistas

O utilizador neste exemplo tem uma combinação de autorizações em toda a organização. Podem listar pastas ao nível da organização, o que lhes permite encontrá-las com pesquisas que especificam o recurso principal ao longo da hierarquia. Podem listar os recursos do projeto para uma pasta, mas não para a outra, e têm autorização resourcemanager.projects.get num projeto na parte inferior da hierarquia.

O resultado é que não conseguem devolver os projetos no lado esquerdo desta hierarquia de recursos. Só podem listar os projetos no lado direito usando uma pesquisa que especifique o recurso principal, e apenas um projeto é visível quando visto na Google Cloud consola.

Recursos não detetáveis

Neste exemplo, o utilizador pode obter o recurso Organization e listar os recursos Project especificando o elemento principal ao longo da hierarquia. No entanto, não têm autorização para listar nem pesquisar nenhuma das pastas intermédias. Os respetivos projetos são pesquisáveis se o utilizador souber o ID da respetiva pasta principal. As pastas não são visíveis para este utilizador e, por isso, não vai poder descobrir o ID se ainda não o tiver. O único recurso que é apresentado na Google Cloud consola é a organização.

Ao criar a sua experiência do utilizador personalizada, é importante ter em atenção situações semelhantes às acima. Pode usar uma combinação de listagem e pesquisa para renderizar a hierarquia de recursos. Também deve considerar como comunicar aos utilizadores que não têm autorizações que lhes permitam ver a hierarquia de recursos completa.