Cloud SDK から VM へ安全に接続する方法

Cloud SDK から VM へ安全に接続する方法

エンジニアブログ

投稿日:2021/10/06 | 最終更新日:2021/10/20

こんにちは新人の YUKI です。本日は「Cloud SDKからVM へ安全に接続する方法」をご紹介します。

Cloud SDK とは

Cloud SDK とは、Google Cloud でホストされるリソースやアプリケーションの管理に使用できる一連のツールです。

これらのツールには、gcloud、gsutil、bq コマンドラインツールが含まれています。

gcloud : Google Cloud で多くの一般的なタスクを実行
gsutil : Google Cloud Storage でタスクを実行
bq : Google BigQuery でデータを操作

Cloud SDK から VM へ接続する前に確認すること

Cloud SDK をインストールするか最新バージョンに更新する

Cloud SDKがインストールされていない場合は、TOPGATEのエンジニアブログ「Cloud SDKのインストール)」を参照してください。

Cloud SDKを最新バージョンに更新

$ gcloud components update

ローカルクライアントでデフォルトのリージョンとゾーンを設定する

$ gcloud config set compute/region REGION
$ gcloud config set compute/zone ZONE

REGION、ZONE は設定したいリージョンとゾーンに置き換える

使用できるリージョンを一覧表示する

$ gcloud compute regions list

使用できるゾーンを一覧表示する

$ gcloud compute zones list

例)リージョンは東京、ゾーンは「asia-northeast1-a」に設定したい場合

REGION : asia-northeast1
ZONE : asia-northeast1-a

リージョンとゾーンの詳細については Google Cloud 公式ドキュメントの「地域とリージョン」参照してください。

ゲスト属性を有効にしてホストキーを保存する

ホストキーとは、特定のサーバーまたは仮想マシンを識別する鍵ペアのことです。リモートホストに接続する際に、目的のマシンに接続していることを確認するために使用されます。
ゲスト属性とは、インスタンスでの実行中にアプリケーションから書き込み可能な特定の型のカスタム メタデータです。
gcloud compute ssh コマンドを使用することでホストキーをゲスト属性として保存することができ、中間者攻撃= man-in-the-middle attack などの脆弱性から保護できるため接続のセキュリティが向上します。

補足 :ゲスト属性を有効にしてホストキーを保存する

ゲスト属性を有効にする

ゲスト属性はデフォルトで無効になっています。ゲスト属性を有効にするには、以下の3パターンのいずれかで設定してください。

1.インスタンスを作成するときにインスタンス メタデータで enable-guest-attributes を設定する

$ gcloud compute instances create instance-name \
–metadata enable-guest-attributes=TRUE

instance-nameは実際のインスタンスの名前に置き換える

2.プロジェクト全体のメタデータで enable-guest-attributes を設定し、プロジェクト内のすべてのインスタンスに適用する

$ gcloud compute project-info add-metadata \
–metadata enable-guest-attributes=TRUE

3.既存のインスタンスのメタデータでenable-guest-attributesを設定する

$ gcloud compute instances add-metadata instance-name \
–metadata enable-guest-attributes=TRUE

instance-nameは実際のインスタンスの名前に置き換える

VM に接続する

$ gcloud compute ssh –project=PROJECT_ID \
–zone=ZONE \
VM_NAME

PROJECT_ID: VMが含まれているプロジェクトの ID
ZONE: VMが存在するゾーンの名前
VM_NAME: VMの名前

gcloud コマンドラインツールに zone と project を設定している場合は、このコマンドから –project フラグと –zone フラグを省略できる

※公開鍵と秘密鍵を作成していない時は、警告文後に以下の文が出力されるのでパスフレーズを入力、またパスフレーズがない場合はエンターキーを入力してください。

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

ホストキーが保存されているか確認する

ホストキーが VM のゲスト属性として保存されていることを確認するには、以下の2パターンのどちらかで確認してください。

また以下のコマンドを実行する前に VM(SSH)接続を解除する必要性があります。解除する方法は「quit」コマンドを使用します。

1.ホストキーの値を確認する

$ gcloud compute instances get-guest-attributes VM_NAME \
–query-path=”hostkeys/” \
–zone=ZONE

NAMESPACE、KEY、VALUE が出力され、ホストキーに値が入っていたらゲスト属性として保存されています。

2.シリアルポートを確認する

$ gcloud compute instances get-serial-port-output INSTANCE_NAME \
–port PORT \
–zone ZONE

INSTANCE_NAME: インスタンスの名前。
PORT: 出力を表示する対象のポート番号。今回はポート番号「1」を選択します。
ZONE: インスタンスのゾーン。

以下のメッセージを検索します。メッセージがある場合はホストキーがゲスト属性として保存されています。
INFO Wrote ssh-rsa host key to guest attributes

以下のメッセージが表示されている場合は、ホストキーがゲスト属性として保存されていないのでゲスト属性を有効にしてください。
Unable to write ssh-rsa host key to guest attributes

まとめ

いかがでしたでしょうか。インスタンスに安全に接続するためのベストプラクティスをご紹介させていただきました。私自身プログラミング経験が浅く VM インスタンスへの安全な接続について知らなかったので勉強しながら記事を書きました。本記事では、「Google Cloud公式ドキュメント」を参考に Cloud SDK から VM に接続する方法をまとめました。詳しくは以下を参照してみてください。

VM インスタンスへの安全な接続
gcloud compute
インスタンス メタデータの格納と取得
シリアルポート出力の表示
使用可能なリージョンとゾーンの表示

執筆者:YUKI



弊社トップゲートでは、 Google Cloud (GCP) 、または 20ID以上のGoogle Workspace(旧G Suite) 導入をご検討をされているお客様へ「Google Meet で無料個別相談会」を実施いたします。導入前に懸念点を解決したい方、そもそも導入した方がいいのかをお聞きしたい方はお気軽にお申し込みください!

トップゲート経由でGoogle Cloud (GCP) をご契約いただけるとGoogle Cloud (GCP) の利用料金はずっと3%オフとお得になります!

お申込みはこちら

記事を探す

GCP のメリットを最大限に活用しよう!

Google Cloud・Google Workspace のご相談・
お見積り依頼はお気軽に
お問合せフォーム