Cloud SDK から VM へ安全に接続する方法
- SDK
- VM
こんにちは新人の 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) 利用料3%OFFや支払代行手数料無料、請求書払い可能などGoogle Cloud (GCP)をお得に便利に利用できます。さらに専門的な知見を活かし、
- Google Cloud (GCP)支払い代行
- システム構築からアプリケーション開発
- Google Cloud (GCP)運用サポート
- Google Cloud (GCP)に関する技術サポート、コンサルティング
など幅広くあなたのビジネスを加速させるためにサポートをワンストップで対応することが可能です。
Google Workspace(旧G Suite)に関しても、実績に裏付けられた技術力やさまざまな導入支援実績があります。あなたの状況に最適な利用方法の提案から運用のサポートまでのあなたに寄り添ったサポートを実現します!
Google Cloud (GCP)、またはGoogle Workspace(旧G Suite)の導入をご検討をされている方はお気軽にお問い合わせください。
メール登録者数3万件!TOPGATE MAGAZINE大好評配信中!
Google Cloud(GCP)、Google Workspace(旧G Suite) 、TOPGATEの最新情報が満載!