GCP - Compute Instances

Support HackTricks

基本情報

Google Cloud Compute Instancesは、Googleのクラウドインフラ上のカスタマイズ可能な仮想マシンであり、さまざまなアプリケーションに対してスケーラブルでオンデマンドのコンピューティングパワーを提供します。これらは、グローバルな展開、永続的なストレージ、柔軟なOS選択、強力なネットワーキングおよびセキュリティ統合などの機能を提供し、ウェブサイトのホスティング、データ処理、アプリケーションの効率的な実行に適した多用途の選択肢となります。

Confidential VM

Confidential VMsは、AMD EPYCプロセッサの最新世代が提供するハードウェアベースのセキュリティ機能を使用します。これには、メモリ暗号化およびセキュア暗号化仮想化が含まれます。これらの機能により、VMはホストオペレーティングシステムやハイパーバイザーからもデータを保護できます。

Confidential VMを実行するには、マシンのタイプ、ネットワークインターフェースブートディスクイメージなどを変更する必要があるかもしれません。

ディスクとディスク暗号化

使用するディスクを選択するか、新しいディスクを作成することが可能です。新しいディスクを選択する場合、以下のことができます:

  • ディスクのサイズを選択

  • OSを選択

  • インスタンスが削除されたときにディスクを削除するかどうかを指定

  • 暗号化デフォルトではGoogle管理キーが使用されますが、KMSからキーを選択するか、使用する生のキーを指定することもできます。

コンテナのデプロイ

仮想マシン内にコンテナをデプロイすることが可能です。 使用するイメージを設定し、内部で実行するコマンド引数ボリュームのマウント、環境変数(機密情報?)を設定し、このコンテナのためにいくつかのオプションを構成することができます。例えば、特権モードで実行、stdinおよび擬似TTYなどです。

サービスアカウント

デフォルトでは、Compute Engineデフォルトサービスアカウントが使用されます。このSAのメールは次のようになります:<proj-num>-compute@developer.gserviceaccount.com このサービスアカウントは、**プロジェクト全体に対してEditorロール(高い権限)**を持っています。

そして、デフォルトのアクセススコープは次の通りです:

  • https://www.googleapis.com/auth/devstorage.read_only -- バケットへの読み取りアクセス :)

  • https://www.googleapis.com/auth/logging.write

  • https://www.googleapis.com/auth/monitoring.write

  • https://www.googleapis.com/auth/servicecontrol

  • https://www.googleapis.com/auth/service.management.readonly

  • https://www.googleapis.com/auth/trace.append

ただし、クリック一つでcloud-platformを付与するか、カスタムのものを指定することも可能です。

ファイアウォール

HTTPおよびHTTPSトラフィックを許可することが可能です。

ネットワーキング

  • IPフォワーディング:インスタンスの作成時にIPフォワーディングを有効にすることが可能です。

  • ホスト名:インスタンスに永続的なホスト名を付与することが可能です。

  • インターフェース:ネットワークインターフェースを追加することが可能です。

追加のセキュリティ

これらのオプションはVMのセキュリティを向上させ、推奨されます:

  • セキュアブート:セキュアブートは、ブートレベルおよびカーネルレベルのマルウェアやルートキットからVMインスタンスを保護するのに役立ちます。

  • vTPMの有効化:仮想トラステッドプラットフォームモジュール(vTPM)は、ゲストVMのプレブートおよびブートの整合性を検証し、キーの生成と保護を提供します。

  • 整合性監視:整合性監視により、Stackdriverレポートを使用してシールドされたVMインスタンスのランタイムブート整合性を監視および検証することができます。vTPMの有効化が必要です。

VMアクセス

VMへのアクセスを有効にする一般的な方法は、特定のSSH公開鍵を許可することです。 しかし、IAMを使用してos-configサービス経由でVMへのアクセスを有効にすることも可能です。さらに、このサービスを使用してVMへのアクセスに2FAを有効にすることも可能です。 このサービス有効になると、SSHキー経由のアクセスは無効になります。

メタデータ

自動化(AWSのuserdata)を定義することが可能で、これはマシンが起動または再起動するたびに実行されるシェルコマンドです。

また、メタデータエンドポイントからアクセス可能な追加のメタデータキーと値を追加することも可能です。この情報は通常、環境変数やスタートアップ/シャットダウンスクリプトに使用されます。これは、列挙セクションのコマンドから**describeメソッド**を使用して取得できますが、インスタンス内部からメタデータエンドポイントにアクセスして取得することもできます。

# view project metadata
curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"

# view instance metadata
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"

Moreover, auth token for the attached service account とインスタンス、ネットワーク、プロジェクトに関するgeneral infometadata endpointから取得可能です。詳細は以下を参照してください:

Encryption

デフォルトではGoogle管理の暗号化キーが使用されますが、Customer-managed encryption key (CMEK)を設定することもできます。使用されているCMEKが取り消された場合の動作も設定可能です: 何もしないか、VMをシャットダウンするか。

HackTricksをサポートする

Last updated