Google Compute EngineのOS Login機能でSSHユーザを楽に管理しよう

記事タイトルとURLをコピーする

G-genの杉村です。管理対象の Compute Engine インスタンス(VM)が多いと、課題になるのがログインユーザーの管理です。Google Cloud(旧称 GCP)のサービス Google Compute Engine(GCE)には OS Login 機能があり、SSH ログインユーザーを効率的に管理できます。

OS Login について

OS Login とは

OS Login は Compute Engine の SSH ログイン時の認証を IAM で管理するための仕組みです。

OS Login 機能では、 VM へ SSH ログインするユーザを Google アカウントと連動して管理できます。なお、当機能で管理できるのは SSH ログインであるため、対象は Linux VM のみであり、Windows Server は対象外です。

OS Login 機能をプロジェクトごとに、またはインスタンスごとに有効化すると、SSH ユーザーを Google アカウントやグループと紐づけて管理できます。Google アカウント(グループ)に付与する IAM ロールによって、VM へのログイン可否と、sudo 可否を指定できます。

なお OS Login は、無料で使用できます。

OS Login機能の概念

ポイント

  • 有効化 / 無効化は Compute Engine のメタデータ(インスタンス単位 / プロジェクト単位)で指定する
  • 公開鍵 / 秘密鍵は自動生成されインスタンスの中に連携される
  • OS Login では OS ユーザーが <アカウント名>_<ドメイン名> という名称で自動作成される
    • 例: john@g-gen.co.jpjohn_g_gen_co_jp
  • 2段階認証が設定可能

メリット

VM にログインできる利用者を Google アカウント(グループ)で管理できるため、OS ユーザー統制の改善管理・運用の工数削減が期待できます。

ログイン時の2段階認証も簡単に設定できるので、セキュリティレベルの向上も見込めます。

反対に OS Login 機能を利用しないで SSH ユーザーを管理する方法には、メタデータマネージド SSH 接続 があります。こちらの場合、例えば gcloud compute ssh でログインが行われると、操作した PC 環境のローカルユーザーの名称で、OS ユーザーが VM 上に自動作成されます。この方法では、VM に OS ユーザーが乱立してしまうおそれがあります。

設定手順

Step 1. OS Login 有効化(メタデータ設定)

まず、OS Login 機能をプロジェクト単位で有効化するのか、あるいはインスタンス単位で有効化するのかを決定します。

OS Login を有効化するには、指定のキー・バリューをメタデータに設定する必要があります。Compute Engine メタデータは、プロジェクト単位のメタデータとインスタンス単位のメタデータあります。

プロジェクト全体で有効化するには、プロジェクトの Compute Engine メタデータに enable-oslogin = TRUE を設定します。

プロジェクトレベルのメタデータ

一方でインスタンス単位で有効化するには、個々のインスタンスの 編集 画面から、メタデータに enable-oslogin = TRUE を設定します。

インスタンスレベルのメタデータ

2段階認証を有効化したい場合は、この時点でメタデータに enable-oslogin-2fa = TRUE も併せて設定してください。

OS Login 機能の2段階認証は、 Google アカウントに設定された二段階認証の要素を利用します。たとえば、Google Authenticator の OTP 入力を促されたり、スマホの Google アプリの承認ボタンを押すことを促されたりするなどです。

Step 2. IAM ロールの付与

OS にログインさせたい Google アカウントまたは Google グループに、IAM ロールを付与します。

なお IAM のベストプラクティスとして、IAM ロールはアカウントに直接付与するのではなく、グループに付与することが推奨されています。

OS Login を使うには、以下のいずれかの IAM ロールを付与します。

  1. sudo 権限なしの場合
    • roles/compute.osLogin(日本語名: Compute OS ログイン
  2. sudo 権限ありの場合
    • roles/compute.osAdminLogin(日本語名: Compute OS 管理者ログイン

IAM ロールは 組織レベル プロジェクトレベル 個別インスタンスレベル のいずれかで付与することで、その Google アカウント(グループ)がどのインスタンスにログインできるか、が決まります。

組織レベルで付与すれば組織配下の全てのインスタンスに、プロジェクトレベルで付与すればプロジェクト内の全てのインスタンスに、インスタンスレベルで付与すればそのインスタンスだけに、SSH ログインできるようになります。

IAM の基本的な仕組みについては、以下の記事も参照してください。

blog.g-gen.co.jp

ログイン手順

OS Login を有効化すると、コンソールから SSH ボタンを押下したり、gcloud コマンドを使って VM にログインする際に、自動的に OS Login による認証が行われ、ログインできるようになります。

コンソールからのSSHログイン

gcloud コマンドであれば、通常の SSH ログイン時と同じように、以下のように実行するだけです。

gcloud compute ssh --project=${PROJECT_ID} --zone=${ZONE} ${VM_NAME}

もしメタデータに enable-oslogin-2fa = TRUE が設定されていれば、このタイミングで2段階認証が求められます。

杉村 勇馬 (記事一覧)

執行役員 CTO / クラウドソリューション部 部長

元警察官という経歴を持つ現 IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 12資格、Google Cloud認定資格11資格。X (旧 Twitter) では Google Cloud や AWS のアップデート情報をつぶやいています。