GCP - Storage Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Google Cloud Platform (GCP) Storageは、高い耐久性と可用性を提供するクラウドベースのストレージソリューションで、非構造化データのためのオブジェクトストレージです。パフォーマンス、可用性、コストに基づいて、Standard、Nearline、Coldline、Archiveなどのさまざまなストレージクラスを提供します。GCP Storageは、データを効果的に管理および保護するためのライフサイクルポリシー、バージョン管理、アクセス制御などの高度な機能も提供します。
バケットは、1つのリージョン、2つのリージョン、または**マルチリージョン(デフォルト)**に保存できます。
Standard Storage: これはデフォルトのストレージオプションで、頻繁にアクセスされるデータへの高性能で低遅延のアクセスを提供します。ウェブサイトのコンテンツ配信、メディアストリーミング、データ分析パイプラインのホスティングなど、幅広いユースケースに適しています。
Nearline Storage: このストレージクラスは、Standard Storageよりも低いストレージコストとやや高いアクセスコストを提供します。アクセス頻度が低いデータに最適化されており、最小ストレージ期間は30日です。バックアップやアーカイブ目的に理想的です。
Coldline Storage: このストレージクラスは、アクセス頻度が低いデータの長期保存に最適化されており、最小ストレージ期間は90日です。Nearline Storageよりも低いストレージコストを提供しますが、アクセスコストは高くなります。
Archive Storage: このストレージクラスは、非常に低頻度でアクセスされる冷データのために設計されており、最小ストレージ期間は365日です。すべてのGCPストレージオプションの中で最も低いストレージコストを提供しますが、最も高いアクセスコストがあります。コンプライアンスや規制上の理由で長期間保存する必要があるデータの保持に適しています。
Autoclass: データにどれだけアクセスするか分からない場合は、Autoclassを選択すると、GCPがコストを最小限に抑えるために自動的にストレージタイプを変更します。
デフォルトでは、IAMを介してアクセスを制御することが推奨されますが、ACLの使用を有効にすることも可能です。 IAMのみを使用することを選択し(デフォルト)、90日が経過すると、バケットに対してACLを有効にすることはできません。
バージョン管理を有効にすることが可能で、これによりバケット内のファイルの古いバージョンが保存されます。保持したいバージョンの数や、非現行バージョン(古いバージョン)がどれだけの期間生存するかを設定できます。Standardタイプの場合は7日間が推奨されます。
非現行バージョンのメタデータは保持されます。さらに、非現行バージョンのACLも保持されるため、古いバージョンは現在のバージョンとは異なるACLを持つ可能性があります。
詳細はdocsで学べます。
バケット内のオブジェクトの削除を禁止したい期間を示します(コンプライアンスに非常に役立ちます)。 バージョン管理または保持ポリシーのいずれか一方のみを同時に有効にできます。
デフォルトでは、オブジェクトはGoogle管理のキーを使用して暗号化されますが、KMSのキーを使用することもできます。
外部ユーザー(GCPにログインしているかどうかにかかわらず)にバケットのコンテンツへのアクセスを提供することが可能です。 デフォルトでは、バケットが作成されると、バケットを公開するオプションは無効になりますが、十分な権限があれば変更できます。
バケットにアクセスするためのURLの形式は、https://storage.googleapis.com/<bucket-name>
またはhttps://<bucket_name>.storage.googleapis.com
(どちらも有効)です。
HMACキーは、_資格情報_の一種で、Cloud Storageのサービスアカウントまたはユーザーアカウントに関連付けることができます。HMACキーを使用して、Cloud Storageへのリクエストに含まれる_署名_を作成します。署名は、特定のリクエストがユーザーまたはサービスアカウントによって承認されていることを示します。
HMACキーには、_アクセスID_と_シークレット_の2つの主要な部分があります。
Access ID: 特定のサービスまたはユーザーアカウントにリンクされた英数字の文字列。サービスアカウントにリンクされている場合、文字列は61文字の長さで、ユーザーアカウントにリンクされている場合、文字列は24文字の長さです。以下はアクセスIDの例です:
GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA
Secret: 特定のアクセスIDにリンクされた40文字のBase-64エンコードされた文字列。シークレットは、あなたとCloud Storageだけが知っている事前共有キーです。認証プロセスの一部として署名を作成するためにシークレットを使用します。以下はシークレットの例です:
bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ
アクセスIDとシークレットはHMACキーを一意に識別しますが、シークレットは署名を作成するために使用されるため、はるかに敏感な情報です。
バケットのリストを取得する際に「権限が拒否されました」というエラーが表示される場合でも、コンテンツにアクセスできる可能性があります。したがって、バケットの名前の規則について知っているので、可能な名前のリストを生成し、それらにアクセスを試みることができます:
storage.objects.list
および storage.objects.get
の権限があれば、バケットからすべてのフォルダーとファイルを列挙してダウンロードできるはずです。これを実現するには、次のPythonスクリプトを使用できます:
次のページでは、ストレージの権限を悪用して権限を昇格させる方法を確認できます:
GCP - Storage PrivescAWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)