GCP - Artifact Registry Enum

Support HackTricks

基本情報

Google Cloud Artifact Registryは、ソフトウェアアーティファクトを管理、保存、保護するための完全に管理されたサービスです。これは、Dockerイメージ、Maven、npmパッケージ、その他のタイプのアーティファクトなど、ビルド依存関係を保存するためのリポジトリです。これは、ソフトウェア開発プロセス中に生成されたアーティファクトを保存およびバージョン管理するために、CI/CDパイプラインで一般的に使用されます

Artifact Registryの主な機能は次のとおりです。

  1. 統一リポジトリ: 複数のタイプのアーティファクトをサポートし、Dockerイメージ、言語パッケージ(JavaのMaven、Node.jsのnpmなど)、およびその他のタイプのアーティファクトのための単一のリポジトリを持つことができ、一貫したアクセス制御とすべてのアーティファクトに対する統一されたビューを可能にします。

  2. 完全管理: 管理サービスとして、基盤となるインフラストラクチャ、スケーリング、およびセキュリティを管理し、ユーザーのメンテナンスオーバーヘッドを削減します。

  3. 細かいアクセス制御: Google Cloudのアイデンティティおよびアクセス管理(IAM)と統合され、リポジトリ内のアーティファクトにアクセス、アップロード、またはダウンロードできる人を定義できます。

  4. 地理的レプリケーション: 複数のリージョンにわたるアーティファクトのレプリケーションをサポートし、ダウンロードの速度を向上させ、可用性を確保します。

  5. Google Cloudサービスとの統合: Cloud Build、Kubernetes Engine、Compute Engineなどの他のGCPサービスとシームレスに連携し、Google Cloudエコシステム内で作業しているチームにとって便利な選択肢となります。

  6. セキュリティ: 脆弱性スキャンやコンテナ分析などの機能を提供し、保存されたアーティファクトが安全で既知のセキュリティ問題がないことを確認します。

フォーマットとモード

新しいリポジトリを作成する際に、Docker、Maven、npm、Pythonなどの中からリポジトリのフォーマット/タイプを選択し、通常は次の3つのいずれかのモードを選択できます。

  • 標準リポジトリ: GCPに自分のアーティファクト(Dockerイメージ、Mavenパッケージなど)を直接保存するためのデフォルトモードです。安全でスケーラブルであり、Google Cloudエコシステム内でうまく統合されます。

  • リモートリポジトリ(利用可能な場合): 外部の、公開リポジトリからアーティファクトをキャッシュするためのプロキシとして機能します。上流の依存関係の変更による問題を防ぎ、頻繁にアクセスされるアーティファクトをキャッシュすることでレイテンシを削減します。

  • 仮想リポジトリ(利用可能な場合): 複数の(標準またはリモート)リポジトリにアクセスするための統一インターフェースを提供し、さまざまなリポジトリに分散されたアーティファクトのクライアント側の構成とアクセス管理を簡素化します。

  • 仮想リポジトリでは、リポジトリを選択し、優先順位を付ける必要があります(最も優先順位の高いリポジトリが使用されます)。

  • リモート標準のリポジトリを仮想リポジトリで混在させることができ、リモートの優先順位標準よりも大きい場合、リモートからのパッケージ(例えばPyPi)が使用されます。これにより、依存関係の混乱が生じる可能性があります。

リモート版のDockerでは、Docker Hubにアクセスするためのユーザー名とトークンを提供することができます。トークンはその後、Secret Managerに保存されます

暗号化

予想通り、デフォルトではGoogle管理のキーが使用されますが、顧客管理のキー(CMEK)を指定することもできます。

クリーンアップポリシー

  • アーティファクトの削除: アーティファクトはクリーンアップポリシーの基準に従って削除されます

  • ドライラン: (デフォルト)アーティファクトは削除されません。クリーンアップポリシーが評価され、テスト削除イベントがCloud Audit Loggingに送信されます。

脆弱性スキャン

コンテナイメージ内の脆弱性をチェックする脆弱性スキャナーを有効にすることができます。

列挙

# Get repositories
gcloud artifacts repositories list
gcloud artifacts repositories describe --location <location> <repo-name>
gcloud artifacts versions list --repository=<repo-name> -location <location> --package <package-name>

# Get settings of a repository (example using python but could be other)
gcloud artifacts print-settings python --repository <repo-name> --location <location>

# Get docker images
gcloud artifacts docker images list us-central1-docker.pkg.dev/<proj-name>/<repo-name>

# Get packages (like python and others...)
gcloud artifacts packages list --repository <repo-name> --location <location>

# Get SBOMB artifacts
gcloud artifacts sbom list

# Get vulnerabilities (docker images)
gcloud artifacts vulnerabilities list us-east1-docker.pkg.dev/project123/repository123/someimage@sha256:49765698074d6d7baa82f
gcloud artifacts docker images list-vulnerabilities projects/<proj-name>/locations/<location>/scans/<scan-uuid>

権限昇格

GCP - Artifact Registry Privesc

認証されていないアクセス

GCP - Artifact Registry Unauthenticated Enum

ポストエクスプロイト

GCP - Artifact Registry Post Exploitation

永続性

GCP - Artifact Registry Persistence
HackTricksをサポートする

Last updated