サービスアカウントで VM インスタンスに SSH 接続

Uncategorized
403 words

Google Cloud Platform (GCP) の VM インスタンスに、サービスアカウントで SSH 接続する方法です。

この記事で説明すること

  • サービスアカウントに付与する権限 (ロール)
  • gcloud CLI での SSH 接続方法

この記事で説明しないこと

  • VM インスタンスの作り方
  • サービスアカウントの作り方
  • gcloud CLI のインストール方法

環境

  • Windows 11 Home 23H2
  • WSL2

権限付与

サービスアカウントに権限を付与します。

IAMアクセス権を付与 を選択

  • 新しいプリンシバル に サービスアカウントの client_email を入力
  • ロールサービスアカウントユーザー を指定
  • ロールCompute インスタンス管理者 を指定

ちなみに サービスアカウントユーザーService Accounts -> サービス アカウント ユーザー にある。

Compute インスタンス管理者Compute Engine -> Compute インスタンス管理者 にある。 v1 でも ベータ版 でもどちらでもよい。

gcloud で SSH 接続

gcloud に自分の GMail ではなく、サービスアカウントで承認します。

サービスアカウントの JSONファイルは、事前に作成&ダウンロードしておく。

1
gcloud auth activate-service-account [ACCOUNT] --key-file=KEY_FILE

https://cloud.google.com/sdk/gcloud/reference/auth/activate-service-account

実際はこんな感じになる。

次のコマンドで VM インスタンス に SSH 接続します。

1
gcloud compute ssh INSTANCE [--zone=ZONE] [--project=PROJECT]

https://cloud.google.com/sdk/gcloud/reference/compute/ssh

実際はこんな感じになる。

ちなみに VM インスタンス ページの gcloud コマンドを表示 で、接続コマンドがコピーできる。

エラー対応

権限が正しく付与されていないと次のエラーが表示される。

1
2
ERROR: (gcloud.compute.ssh) Could not fetch resource:
- Required 'compute.projects.get' permission for 'projects/*****'
1
2
ERROR: (gcloud.compute.ssh) Could not add SSH key to instance metadata:
- Required 'compute.instances.setMetadata' permission for 'projects/*****/zones/us-central1-a/instances/instance-1'

参考

IAM basic and predefined roles reference | IAM Documentation | Google Cloud
gcloud CLI をインストールする | Google Cloud CLI のドキュメント
WSL2(ubuntu-22.04)にgcloud CLIをインストールする【2023年7月】