GCP - Storage Enum
Armazenamento
O Armazenamento do Google Cloud Platform (GCP) é uma solução de armazenamento baseada em nuvem que fornece armazenamento de objetos altamente durável e disponível para dados não estruturados. Ele oferece várias classes de armazenamento com base em desempenho, disponibilidade e custo, incluindo Padrão, Nearline, Coldline e Archive. O Armazenamento do GCP também fornece recursos avançados como políticas de ciclo de vida, versionamento e controle de acesso para gerenciar e proteger dados de forma eficaz.
O bucket pode ser armazenado em uma região, em 2 regiões ou multi-região (padrão).
Tipos de Armazenamento
Armazenamento Padrão: Esta é a opção de armazenamento padrão que oferece acesso de alto desempenho e baixa latência a dados acessados com frequência. É adequado para uma ampla gama de casos de uso, incluindo servir conteúdo de site, transmitir mídia e hospedar pipelines de análise de dados.
Armazenamento Nearline: Esta classe de armazenamento oferece custos de armazenamento mais baixos e custos de acesso ligeiramente mais altos do que o Armazenamento Padrão. É otimizado para dados acessados com pouca frequência, com uma duração mínima de armazenamento de 30 dias. É ideal para fins de backup e arquivamento.
Armazenamento Coldline: Esta classe de armazenamento é otimizada para armazenamento de longo prazo de dados acessados com pouca frequência, com uma duração mínima de armazenamento de 90 dias. Oferece custos de armazenamento mais baixos do que o Armazenamento Nearline, mas com custos de acesso mais altos.
Armazenamento Archive: Esta classe de armazenamento é projetada para dados frios que são acessados muito raramente, com uma duração mínima de armazenamento de 365 dias. Oferece os custos de armazenamento mais baixos de todas as opções de armazenamento do GCP, mas com os custos de acesso mais altos. É adequado para retenção de longo prazo de dados que precisam ser armazenados por motivos de conformidade ou regulamentares.
Autoclass: Se você não sabe com que frequência vai acessar os dados, pode selecionar Autoclass e o GCP irá mudar automaticamente o tipo de armazenamento para minimizar os custos.
Controle de Acesso
Por padrão, é recomendado controlar o acesso por meio do IAM, mas também é possível ativar o uso de ACLs. Se você optar por usar apenas o IAM (padrão) e passarem 90 dias, você não poderá habilitar ACLs para o bucket.
Versionamento
É possível habilitar o versionamento, isso irá salvar versões antigas do arquivo dentro do bucket. É possível configurar o número de versões que deseja manter e até por quanto tempo deseja que as versões não atuais (versões antigas) permaneçam. O recomendado é 7 dias para o tipo Padrão.
O metadados de uma versão não atual são mantidos. Além disso, as ACLs das versões não atuais também são mantidas, então versões antigas podem ter ACLs diferentes da versão atual.
Saiba mais na documentação.
Política de Retenção
Indique por quanto tempo deseja impedir a exclusão de Objetos dentro do bucket (muito útil para conformidade, no mínimo). Apenas um dos versionamento ou política de retenção pode ser habilitado ao mesmo tempo.
Criptografia
Por padrão, os objetos são criptografados usando chaves gerenciadas pelo Google, mas você também pode usar uma chave do KMS.
Acesso Público
É possível dar acesso aos conteúdos dos buckets para usuários externos (logados no GCP ou não). Por padrão, quando um bucket é criado, a opção de expor publicamente o bucket estará desativada, mas com permissões suficientes, isso pode ser alterado.
O formato de uma URL para acessar um bucket é https://storage.googleapis.com/<nome-do-bucket>
ou https://<nome_do_bucket>.storage.googleapis.com
(ambos são válidos).
Chaves HMAC
Uma chave HMAC é um tipo de credencial e pode ser associada a uma conta de serviço ou a uma conta de usuário no Cloud Storage. Você usa uma chave HMAC para criar assinaturas que são então incluídas em solicitações ao Cloud Storage. As assinaturas mostram que uma determinada solicitação é autorizada pelo usuário ou conta de serviço.
As chaves HMAC têm duas partes principais, um ID de acesso e um segredo.
ID de Acesso: Uma sequência alfanumérica vinculada a um serviço específico ou conta de usuário. Quando vinculado a uma conta de serviço, a sequência tem 61 caracteres de comprimento e, quando vinculado a uma conta de usuário, a sequência tem 24 caracteres de comprimento. O seguinte mostra um exemplo de um ID de acesso:
GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA
Segredo: Uma sequência codificada em Base-64 de 40 caracteres que está vinculada a um ID de acesso específico. Um segredo é uma chave pré-compartilhada que apenas você e o Cloud Storage conhecem. Você usa seu segredo para criar assinaturas como parte do processo de autenticação. O seguinte mostra um exemplo de um segredo:
bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ
Tanto o ID de acesso quanto o segredo identificam exclusivamente uma chave HMAC, mas o segredo é uma informação muito mais sensível, pois é usado para criar assinaturas.
Enumeração
Se você receber um erro de permissão negada ao listar os buckets, ainda pode ter acesso ao conteúdo. Agora que você conhece a convenção de nomes dos buckets, pode gerar uma lista de possíveis nomes e tentar acessá-los:
Com as permissões storage.objects.list
e storage.objects.get
, você deve ser capaz de enumerar todas as pastas e arquivos do bucket para baixá-los. Você pode conseguir isso com este script Python:
Escalação de Privilégios
Na seguinte página você pode verificar como abusar das permissões de armazenamento para escalar privilégios:
GCP - Storage PrivescEnumeração Não Autenticada
GCP - Storage Unauthenticated EnumPós-Exploração
GCP - Storage Post ExploitationPersistência
GCP - Storage PersistenceLast updated