MENU
メニュー
  • apps-gcpとは
  • 用語解説
  • メンバー紹介
  • ライター募集

人気記事

  • 1
    mBaaSの大本命グーグルのFirebaseを試してみた!基本編23214 views
  • 2
    面倒なログイン機能の実装はFirebase Authenticationに丸投げしよう22005 views
  • 3
    GCP と AWS サービス対応表・比較表(2019年2月版)21450 views
  • 4
    GCPのストレージサービスについてまとめてみた。21282 views
  • 5
    Google Domainsで独自ドメインを購入してみる20355 views

apps-gcp.com

クラウドエースなら GCP 利用料が3%OFF

  • ホーム
  • コンピューティング
  • GCE

クラウド同上

2018/10/29 7min

便利機能「OS Login」を使ってIAMでインスタンスへのSSH接続制限をする

Author
TKG
TKG (他の投稿記事を見る)
Lv:21 Exp:38348

プロフィール画像は卵かけご飯です。
でも別に好きではないです。
好きなものは麻婆豆腐、嫌いなものはトマトです。


  • Tweet


  • Share


  • Hatena

注意
この記事は2018年10月29日に更新されたもので、内容が古い可能性がありますのでご注意ください。

GCEインスタンスを使ってなんらかのサービスを展開している場合、インスタンスへのログイン時にgcloud コマンド、もしくはコンソールから接続すると思います。

この方法では問題ないのですが、例えば、特定のインスタンスに対して特定ユーザーのみにSSH接続制限をかけたい場合、ユーザーの鍵をインスタンスメタデータに登録し個別に管理する必要があり、この方法では鍵が流出するリスクがあります。

このリスクを解消してくれるのが今回ご紹介する「OS ログイン」です。
OS ログインはインスタンスメタデータに基づくSSHキーによる接続を無効にし、Google アカウントのカスタムSSHキーを使ってインスタンスへログインする方法です。
OS ログインを利用することにより、鍵の流出リスクがなくなる以外にも下記4つの利点があります。

  • IAMによる管理になりコンソールから簡単に制限可能
  • 鍵を個別に管理しないため、鍵の紛失によりインスタンスに接続できなくなるリスクが低い
  • プロジェクト、またはインスタンスレベルで細かいアクセス制御ができる
  • IAMによってログイン時に管理者としてログインするかを選択できる

本記事では、OS ログインとはどういった機能なのかの詳細説明と、設定方法についてご紹介します。

目次

  • OSログインとその他ログイン方法の違い
  • OSログインを実際に設定してみた
    • 1.プロジェクト or インスタンスメタデータの設定
    • 2.IAM の役割を付与
  • OSログイン設定後の挙動を確認してみた

OSログインとその他ログイン方法の違い

SSHキーをメタデータに設定する方法、Compute API を利用して接続する方法、OSログインを利用した際のそれぞれの違いをまとめてみました。比較表からわかる通り、OSログインの場合Googleアカウントベースでの制限が可能になります。

各ログイン方法の比較

ログイン方法 鍵の所在 制限範囲 制限方法
SSHキーの場合 個別管理 プロジェクト
インスタンス
メタデータに鍵を登録するか否か
Compute APIの場合
(gcloud,console)
SSH接続時にGoogleが自動生成 プロジェクト IAM
OSログインの場合(※1) G Suite
Cloud Identity
Service Account
gmail
プロジェクト
インスタンス
IAM(※2)
以下の役割が対象です。

  • サービス アカウント ユーザー
  • Compute OS ログイン
  • Compute OS管理者ログイン

表1. 各ログイン方法の比較

※1 以下のGCEに対するOSログインは非対象です。

  • Container-Optimized OS
  • Core OS
  • SLES
  • Windows Server
  • SQL Server

※2 gmailや組織外のアカウントの場合、役割「Compute OS Login External User」が別途必要になります。
GCPの組織リソースに関する説明は公式ドキュメントを参照ください。

OSログインを実際に設定してみた

それでは実際にOSログインの設定をおこなってみましょう。設定手順はとても簡単です。

1.プロジェクト or インスタンスメタデータの設定

プロジェクト内で制限したい場合はプロジェクトメタデータ、個別でインスタンスを制限したい場合はインスタンスメタデータに設定をおこないます。用途に応じて、2つの設定を使い分けましょう。

1-1.プロジェクトメタデータの設定をおこなう

まずはプロジェクトメタデータの設定手順について説明します。
GCP Console へアクセスし、左側メニューから[Compute Engine]-[メタデータ]を選択します。

メタデータ画面に遷移後「項目を追加」ボタンを押下し、Keyに「enable-oslogin」、 Valueに「TRUE」を設定し「保存」ボタンを押下します。

以上で設定は完了です。設定は非常に簡単ですね。

1-2.インスタンスメタデータへの設定方法

次にインスタンスメタデータの設定方法について説明します。まずは左側のメニューから[Compute Engine]-[VMインスタンス]を選択してください。

任意のVMインスタンスの編集画面に遷移、もしくは作成画面に遷移し、
「メタデータ」に対してKeyに「enable-oslogin」、Valueに「TRUE」を設定します。

これでメタデータの設定は完了です。前述した通り、インスタンスメタデータとプロジェクトメタデータは用途に応じて使い分けてください。

2.IAM の役割を付与

OSログインの設定完了後、SSH接続するアカウントをIAMによって設定します。GCPコンソールの左メニューから[ IAM と管理] -[IAM] を選択します。

IAM画面に遷移後、新規アカウントの追加、もしくは既存アカウントの権限変更で前述した役割(表1の「OSログインの場合」-「制限方法」に記載)を付与します。
※サービスアカウント ユーザーを設定したい場合は、以下画像の通り[Service Accounts]-[サービスアカウント ユーザー]を選択して役割を設定します。

以上でIAMの設定も完了です。これでOSログインが可能になりました。

OSログイン設定後の挙動を確認してみた

実際にどういった挙動をするか確認しましょう。例えば、以下のような「役割」に「参照者」を保持するユーザがあるとします。

参照者だけなので、SSH接続はできないはずです。

任意のVMインスタンスに対してenable-oslogin を有効にし、実際にテストをおこなってみましょう。VMインスタンス一覧から先ほどenable-osloginを有効にしたVMインスタンスに対して「SSH」をクリックして接続してみます。

以下の通り、SSH接続に失敗しました。

権限エラーが出ていることが確認できます。それでは次にIAMで役割を付与します。
以下の画像を参考にOSログインの役割を追加します。

同様のインスタンスに対してSSH接続をすると…

無事ログインできました!!

このようにメタデータで機能を有効にすることでインスタンスやプロジェクト単位でSSH接続に制限がかけられます。設定は前述した通り非常に簡単です。

メタデータでは、他にもスタートアップスクリプトを設定できたりライブマイグレーションのメンテナンスイベントを通知設定が可能です。

今回はenable-oslogin でIAMによる制限方法をご紹介しましたが、他の設定も試してみてはいかがでしょうか。

Google Cloud Platform(GCP)とは ▶

  • Tweet


  • Share


  • Hatena

CATEGORY :

  • GCE
  • GCP

TAGS :

  • IAM
  • OS Login

あわせて読みたい

  • GCE-S3のベンチマークを計測してみた

    GCE-S3のベンチマークを計測してみた

  • 2015/05/27 GCE vs AWS ベンチマーク

    2015/05/27 GCE vs AWS ベンチマーク

  • GCEのWindowsファイル共有サーバにリモートアクセスVPN経由でアクセスしてみた

    GCEのWindowsファイル共有サーバにリモートアクセスVPN経由でアクセスしてみた

  • 2016/03/30 GCE vs AWS vs Azure ベンチマーク

    2016/03/30 GCE vs AWS vs Azure ベンチマーク

前の記事

Cloud AutoML Vision が本当にノンプログラミ…

次の記事

Cloud OnAir 第21回 〜「Google Cloud…
メニュー
  • apps-gcpとは
  • 用語解説
  • メンバー紹介
  • ライター募集

カテゴリ一覧

  • G Suite(旧:Apps)
    • Chrome Extension
  • GCP
    • gcloud
    • GoogleAPI千本ノック
  • GCE vs AWS ベンチマーク
  • GO言語
  • 機械学習
  • 最新ニュース
  • その他
    • security
    • フロントエンド
  • コンピューティング
    • Cloud Functions
    • GAE
    • GCE
    • GKE
  • ストレージ・データベース
    • Cloud Datastore
    • Cloud Storage
    • Cloud SQL
  • ビッグデータ
    • BigQuery
    • Cloud Datalab
  • Apigee

アーカイブ

人気記事

  • Flutter でモバイルアプリを作ってみる 入門編① 〜ヘッダーとフッター〜 460ビュー
  • OpenAPIを理解しよう、基礎編 – OpenAPI、Apigeeに立つ 430ビュー
  • 面倒なログイン機能の実装はFirebase Authenticationに丸投げしよう 408ビュー

最近の投稿

  • Serverless NEG + Cloud Armor + GAE を試してみる
  • Serverless NEGでマルチリージョンCloud Runを試してみた
  • Serverless NEG + GAE を試してみる
  • Cloud Endpointsの全体像をさらっと理解する
  • 【問題】GAEの自動スケーリングインスタンスにHTTPリクエストしたとき、何秒でタイムアウトするでしょうか?

カテゴリー

  • G Suite(旧:Apps)
    • Chrome Extension
  • GCP
    • gcloud
    • GoogleAPI千本ノック
  • GCE vs AWS ベンチマーク
  • GO言語
  • 機械学習
  • 最新ニュース
  • その他
    • security
    • フロントエンド
  • コンピューティング
    • Cloud Functions
    • GAE
    • GCE
    • GKE
  • ストレージ・データベース
    • Cloud Datastore
    • Cloud Storage
    • Cloud SQL
  • ビッグデータ
    • BigQuery
    • Cloud Datalab
  • Apigee
HOME
  • クラウドエース公式サイトへ
  • 利用規約
  • 個人情報保護方針
  • お問い合わせ
  • 採用情報

© 2021 apps-gcp.com All rights reserved.