LoginSignup
1

More than 1 year has passed since last update.

GCP の Identity Aware-Proxy を使って SSH した話

Last updated at Posted at 2020-12-22

Cloud Identity Aware-Proxy とは?

一言で表すと、Google のアカウントを使ってセキュアにリソースに接続できるプロキシサービスです。

何ができる?

  • GCP 上の VM に対して、アクセス制御を行うことができる
  • Google アカウントの ID を確認して、制御を行うことができる
  • VPN を使用することなく、外部ネットワークからの作業ができる
  • ゼロトラストのアクセスモデルを実装できる

Identity-Aware Proxy 概要

IAP との出会いの経緯

GCP 上の GCE にセキュアに SSH できる方法がないかを探しており、いくつかの候補を出していました。

  1. GIP を使用して目的のインスタンスへ接続を行う
  2. GIP を付与した踏み台インスタンスを作成し、踏み台インスタンスを経由して目的のインスタンスへ接続を行う

2 に関しては、公式のドキュメントでも紹介されており、オンプレでの NW 構築を経験していた自分の中ではかなり有力な候補でした。

図にするとこのような感じ↓
GCP のサービスを使用せずに、PrivateサブネットのGIPを持たないインスタンスに接続する場合
スクリーンショット 2020-12-17 16.47.44.png

しかし、この方法だといくつか面倒なことが

  • 鍵の管理が面倒

    • GCP のサービスを使用せずに GCE へとアクセスしようとすると、ローカルでの鍵の作成・保管が必要になる
    • ローカルで作成した公開鍵を、SSH 先のインスタンスに登録する必要がある
  • GIP 関連

    • 固定の GIP を取得する必要がある
    • 常に不正にアクセスされるリスクがある

まず、鍵の管理については、 gcloud コマンドを使用したSSH 接続の方法 にて解決しました。
さすがクラウドって感じで、めんどくさい鍵周りの部分をやってくれます。

そして、 GIP を使用しないで SSH できないかと調べていたところ、たどり着いたのが IAP でした。

IAP で使用した機能

IAP には様々な機能があるのですが、今回の GCE への SSH 接続には、 Cloud IAP TCP Fowarding という機能を使用しました。

何ができるのか

  • トンネルを使用した TCP 接続ができる

通信のフロー

  1. TCP のコネクションを IAP を使用して HTTPS でラッピングする
  2. IAM にて権限を確認する
    1. 接続先のリソースの権限
    2. IAP トンネルを使用する権限
  3. VPC に紐づく FW ルールを確認(ネットワークレベル)
    1. IAP から リソースへの接続が許可されているか

図にするとこのようになります↓
_2020-12-21_17.22.55.png

IAP が踏み台インスタンスの役割をしてくれてるため、インスタンスへ GIP を付与する必要がなくなり、当初考えていた面倒な点を解消することができました。

一つ気になる点が

確かに IAP を使用することで、GCE へのセキュアな通信を確立することができましたが、1つ気になることが出てきてしまいました。
Google アカウントが漏れたらやりたい放題じゃん...

これを解決するために、Access Context Manager という機能を使用しました。
別の機能になってしまうので詳細な説明は割愛しますが、一言で言うと" IPやデバイスなどの単位で、プロジェクトやリソースへのアクセス制御が行えるサービス "です。
組織単位でポリシーを作成し、プロジェクト単位でポリシーを適用します。
今回の場合は、IP 制限のポリシーを作成し、IAP トンネルを使用する IAM ロールにアタッチして使用しました。
この機能を使用することで、万が一Google アカウントが流出した際も、IPアドレスなどで制御を行うことができ、セーフティーネットを張ることができます。

最後に

IAP を使用した VM への接続は、今回のような GCE 以外にも、GKE への接続や GAE への接続など、様々な使い方ができる機能なので今後もお世話になりそうです。
私と同じような状況で迷っている方に、この記事が参考になりましたら幸いです。
最後までご覧いただきありがとうございました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1