Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WireGuardとOpenID Connectの連携をGoで実装してみた

Kurochan
August 19, 2021

WireGuardとOpenID Connectの連携をGoで実装してみた

社内勉強会で発表した資料です
https://github.com/kurochan/oidc-wireguard-vpn/

Kurochan

August 19, 2021
Tweet

More Decks by Kurochan

Other Decks in Technology

Transcript

  1. 黒崎 優太 • 株式会社サイバーエージェント AI事業本部 アプリ運⽤センター • ⼩売業界 x DXの事業をやっています

    • バックエンドエンジニア 直近はAWSとかGCPとかセキュリティまわりの 仕事をしていました @kuro_m @kurochan #times_kurochan
  2. VPNサーバを作ってみる • VPNサーバの実現⽅法は⾊々ありそう • OSSもあるし、商⽤VPNもありそう • アカウントの棚卸し業務をやりたくない • サイバーエージェントには内製の認証基盤がある •

    OpenID Connectもあるよ • アプリ運⽤センターに異動してきてGo⾔語を書く必要が • 直近広告事業で6年半くらいScalaを書いていた • Go⾔語よく知らない… • Go⾔語の勉強がてら作ってみる
  3. WireGuard + OpenID Connect • 簡単に構築ができて、社内のID基盤とも連携できるのを⽬指す • 固定IP + 通信の暗号化のためにWireGuard

    VPN • 社内のID基盤を使った認証をするためにOpenID Connect • https://github.com/kurochan/oidc-wireguard-vpn/
  4. OpenID Connect CIBA Flow • OpenID Connectは「Webサイト」に特化している • WireGuardのように、ブラウザアプリケーションではないアプリも認証したい •

    CIBA = Client Initiated Backchannel Authentication • クライアント側から認証を開始して、裏側(何かしらの⽅法)で認証/認可をする • VPN接続しようとしたらSlack経由で認証/認可のリクエストが⾶んでくるなど
  5. WireGuard + OpenID Connect + nftables • なんかいけそう! • WireGuardのVPNが通ったとしても、退職や部署異動するとOpenID

    Connect で認可されなくなる • WireGuardのサーバ側の設定は定期棚卸しくらいでよくなる