【ITニュース解説】Part-39: 🔐 GCE VM Authentication in Google Cloud Platform

2025年09月06日に「Dev.to」が公開したITニュース「Part-39: 🔐 GCE VM Authentication in Google Cloud Platform」について初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

ITニュース概要

GCPのVM認証はOSで異なり、Windowsはユーザー名とパスワード、LinuxはSSHキーが主流だ。LinuxのSSH認証には、コンソール連携、gcloud CLI、カスタムキー、そしてセキュリティと管理性に優れた推奨のOS Loginがある。

ITニュース解説

GCPの仮想マシンであるGCE VMを安全に利用するためには、認証の仕組みを理解することが非常に重要となる。仮想マシンには、WindowsとLinuxの2種類があり、それぞれで認証方法が異なる。

Windows仮想マシンの場合は、私たちが普段から使い慣れているユーザー名とパスワードによる認証が一般的である。Google Cloud Consoleというウェブ管理画面や、gcloud CLIというコマンドラインツールを使って、ユーザー名とパスワードを生成したり、既存のパスワードをリセットしたりできる。認証情報が準備できたら、RDP(Remote Desktop Protocol)という仕組みを使って、リモートでWindowsのデスクトップ画面に接続し、操作することができる。この方法は、Windows環境の管理に慣れている管理者にとって、直感的で使いやすい。

一方、Linux仮想マシンの認証は、SSHキーという特殊な鍵のペアを使って行われる。SSHキー認証はパスワードに依存せず、強力な暗号技術に基づいており、高いセキュリティを誇る。SSHキーは、公開鍵と秘密鍵という2つのファイルで構成される。公開鍵は仮想マシンに配置され、秘密鍵はユーザーの手元(自分のパソコンなど)に保管される。接続時には、この秘密鍵を使って、自分が正当なユーザーであることを証明する。Linux仮想マシンでは、このSSHキー認証がデフォルトであり、Google Cloudで推奨される方法となっている。

Linux仮想マシンへのSSH接続には、いくつかのオプションがある。

まず、最も手軽なのは、Google Cloud ConsoleのSSHボタンを使う方法だ。この方法では、ウェブブラウザ上で直接SSH接続を行うことができる。Google Compute Engineは、この接続のために一時的なSSHキーを自動で生成する。この秘密鍵は、あなたのブラウザセッションの中に一時的に保存され、Google側がアクセスすることはできないため、セキュリティが保たれる。この一時キーは5分間だけ有効で、その期間を過ぎると使えなくなる。この仕組みは、急いでVMにアクセスしたい場合や、一時的な作業を行う場合に非常に便利だ。接続する際に、自動で生成されるユーザー名を変更することもできる。

次に、gcloud CLIを使ってSSH接続する方法がある。gcloud CLIは、コマンドラインからGoogle Cloudのサービスを操作するためのツールだ。この方法で接続すると、Compute Engineはユーザー名と永続的に使えるSSHキーペアを生成する。一度生成されたキーペアは、次回以降もgcloud CLIを使った接続で再利用できるため、複数のVMに繰り返し接続する場合などに効率的だ。

さらに、自分でSSHキーペアを管理し、それを使って接続することもできる。これは「カスタマイズキーによるメタデータ管理」と呼ばれる。まず、ssh-keygenというツールを使って、自分のパソコンで公開鍵と秘密鍵を生成する。この公開鍵を、GCPの「プロジェクトレベルのメタデータ」または「インスタンスレベルのSSHキー」として仮想マシンに登録する。 プロジェクトレベルのメタデータに登録すると、そのプロジェクト内のすべてのLinux仮想マシンに、指定したユーザー名と公開鍵でアクセスできるようになる。これは、複数のVMに同じアクセス権を付与したい場合に便利だ。公開鍵を登録する際には、公開鍵ファイルの内容をコピーして、Compute Engineの設定画面のメタデータにあるSSHキーに追加する。 一方、「インスタンスレベルのSSHキー」は、特定の仮想マシンにのみ公開鍵を登録する方法だ。この方法を使うと、そのVMだけに限定してアクセスを許可できる。さらに、VMの設定で「プロジェクト全体のSSHキーをブロックする」オプションを有効にすれば、プロジェクトレベルで登録されたSSHキーよりも、インスタンスレベルで登録されたキーを優先させ、より細かいアクセス制御を行うことができる。このように、手元にある秘密鍵を使って、ssh -i [秘密鍵ファイル] [ユーザー名]@[VMのIPアドレス]のようなコマンドを実行することで、SSH接続が可能となる。

そして、Googleが強く推奨しているのが「OS Login管理」という方法だ。これは、Compute Engineのメタデータにenable-oslogin: TRUEというキーと値のペアを追加することで有効になる。OS Loginを有効にすると、ユーザー認証とアクセス管理がGoogleのIAM(Identity and Access Management)システムと連携する。これにより、アクセスするユーザーはGoogleアカウントの認証情報を使用するようになり、SSHキーを手動で管理する必要がなくなる。接続時には、ユーザー名がメールアドレス全体(例: username_domain_com)の形式になる点が特徴的だ。OS Loginが有効な場合でも、Google Cloud ConsoleのSSHボタンやgcloud CLIを使って簡単に接続できる。 OS Loginを有効にした上で、手動で生成したSSHキーを使いたい場合は、「カスタマイズキーによるOS Login管理」という方法がある。これは、生成した公開鍵をgcloud compute os-login ssh-keys addコマンドを使って、自分のGoogle Cloudアカウントのプロフィールに関連付けることで実現する。これにより、OS Loginのセキュリティメリットを享受しつつ、自分の慣れたSSHキーで接続できるようになる。

なぜOS Loginがこれほど推奨されるのかというと、そのメリットは非常に大きい。OS Loginは、手動でSSHキーを管理する手間を省き、アクセス管理を大幅に簡素化する。特に、多数のユーザーが多数の仮想マシンや複数のGoogleプロジェクトにアクセスする場合に、その真価を発揮する。 OS Loginは、Googleアカウントの2段階認証(電話認証、セキュリティキーなど)もサポートしているため、セキュリティをさらに強化できる。また、オンプレミスのActive DirectoryやLDAPのような既存のユーザーアカウントシステムと連携させることも可能だ。さらに、IAMの組織ポリシーと組み合わせることで、企業全体でのアクセス管理を中央集権的に行うことができる。 OS Loginでは、ユーザーに付与するIAMロールに基づいて、Linux VMへのアクセス権限を細かく制御できる。例えば、一般ユーザーにはroles/compute.osLoginロールを、管理者にはより強力なroles/compute.osAdminLoginロールを付与することで、それぞれ異なる権限でVMにアクセスさせることが可能となる。これにより、セキュリティを維持しつつ、柔軟なアクセス管理を実現できるのだ。

これらの認証方法を適切に選択し、設定することは、仮想マシンの安全な運用において不可欠である。自分の利用シナリオや管理ポリシーに合わせて最適な方法を選ぶことが、システムエンジニアとしての重要なスキルとなる。

【ITニュース解説】Part-39: 🔐 GCE VM Authentication in Google Cloud Platform | いっしー@Webエンジニア