1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

POMERIUM - OSS の Identity Aware Proxy

Posted at

はじめに

OSS の Identity Aware Proxy なるものが存在すると聞いて手を動かしてみました。
検証メモとなります。

確認ポイント

手を動かす前に確認すべきポイントを列挙します。

  • オンプレとクラウドの繋ぎ(エージェント導入有無)
  • サポートプロトコル
  • ポスチャ機能有無(シグナル・振る舞いと同義)

最低限、ここら辺の理解をゴールにします。

POMERIUM とは

公式サイトをベースに概要を掴みます。

本当にさっと知りたい方は製品紹介動画をどうぞ

もう少し知りたい方はFAQセクションをどうぞ

モダンアーキテクチャは常に3つの要素を確認/評価し続ける。パケット毎に毎回評価し、アクセス許可・拒否を判定するイメージです。

  • user identity : 誰がアクセスしているのか
  • device identity : どのデバイスがアクセスしているのか
  • context : どんな文脈でアクセスしているのか

概要

  • タイトル通り OSS の Identity Aware Proxy
  • 認証・認可を行う OSS。IdP は Pomerium ローカルの DB、外部 IdP でもOK
  • VPN の悩みを解消・zero trsut~という雰囲気
  • プランは大別して二つ
    • Open Source(OSS 版)
    • Teams/Enterprise(機能制限なしの有償版)

有償版は、サポート・API・SAML/LDAP SSO が利用可能です。また、CI/CD 関連機能も有償版限定となります。

ポリシー設定は Teams プランから利用できます。user・group・domain・taime・duration・request context・devicecontext・MFA・その他が利用できます。
※ request context はどこまで・何を設定できるか確認したかった内容ですが、机上調査で手打ちですね...

なお、Audit log は Teams プラン以上から利用可能です。本番環境は Teams 以上が現実解になりそうです。。。

コスト

  • Pomerium にログインするユーザ数で費用が発生するようです
  • 30日間の返金サポートがあります。返金理由は不問だそうです(本当ですか...?)
  • authorization は Istio, Google Cloud と連携可能

導入実績/事例

  • 公式サイト上は100以上の企業で導入されていると謳っています

アーキテクチャ

image.png
//公式より

Promerium はユーザとアプリの間に位置します。(名前の通りプロキシですね)
先に説明の通り、Inbound 及び Outbound トラフィックを処理できます。

また、IdP は Promerium 自身 or IDaaS を利用できます
※ 検証以外は Promerium 自身の IdP 利用はあまり無さそうですね

image.png
//公式より

本番環境では各コンポーネントは分けてデプロイした方がいいみたいです。
external attack surface を減らす目的です。

image.png
//公式より

続いで認証シーケンスです。分かり易いですね。
ふと気になったのですが、Databroker が死んだら一発アウトなのでしょうか...
概要は見えてきましたので、そろそろ手を動かしていきます。

Let's get started!!

Quick-Startを基にコンテナを起動していきます。検証に必要なファイルは以下の通りです。

  1. TLS 証明書
  2. Pomerium 設定ファイル
  3. docker compose ファイル

まずは mkcert 等で自己証明書を用意します。

mkcert "*.localhost.pomerium.io"

次に Promerium 設定ファイルを公式からコピーします。

config.yaml
cat <<EOF >./config.yaml
# See detailed configuration settings : https://www.pomerium.com/docs/reference/


# this is the domain the identity provider will callback after a user authenticates
authenticate_service_url: https://authenticate.localhost.pomerium.io

####################################################################################
# Certificate settings:  https://www.pomerium.com/docs/reference/certificates.html #
# The example below assumes a certificate and key file will be mounted to a volume #
# available to the  Docker image.                                                  #
####################################################################################
certificate_file: /pomerium/cert.pem
certificate_key_file: /pomerium/privkey.pem

##################################################################################
# Identity provider settings : https://www.pomerium.com/docs/identity-providers/ #
# The keys required in this section vary depending on your IdP. See the          #
# appropriate docs for your IdP to configure Pomerium accordingly.               #
##################################################################################
idp_provider: google
idp_client_id: REPLACE_ME
idp_client_secret: REPLACE_ME

# Generate 256 bit random keys  e.g. `head -c32 /dev/urandom | base64`
cookie_secret: V2JBZk0zWGtsL29UcFUvWjVDWWQ2UHExNXJ0b2VhcDI=

# https://pomerium.com/reference/#routes
routes:
  - from: https://verify.localhost.pomerium.io
    to: http://verify:8000
    policy:
      - allow:
          or:
            - email:
                is: user@example.com
    pass_identity_headers: true
EOF

最後に compose ファイルも公式からコピーします。

config.yaml
cat <<EOF >./docker-compose.yml
version: "3"
services:
  pomerium:
    image: pomerium/pomerium:latest
    volumes:
      ## Mount your domain's certificates : https://www.pomerium.com/docs/reference/certificates
      - ./_wildcard.localhost.pomerium.io.pem:/pomerium/cert.pem:ro
      - ./_wildcard.localhost.pomerium.io-key.pem:/pomerium/privkey.pem:ro

      ## Mount your config file : https://www.pomerium.com/docs/reference/
      - ./config.yaml:/./config.yaml:ro # 適宜修正
    ports:
      - 443:443

  ## https://verify.localhost.pomerium.io --> Pomerium --> http://verify
  verify:
    image: pomerium/verify:latest
    expose:
      - 8000
EOF

Pomerium 設定ファイルが誤っているようでエラーが出ています。
後日時間を取って追記しようと思います。

また、GitLab の前に置く構成が気になるので、その辺りも触りたいと思います!

参考文献

1
0
0

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
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?