역방향 프록시 pomerium의 설정 파일 예시에 대해 설명합니다.

개요

pomerium은 다양한 기능을 제공하는 L7역방향 프록시입니다. nginx와 비교하면 더욱 쉽게 SSO 통합이 가능하지만 WAS 없이 좀 더 프록시 기능에만 특화된 프로그램입니다. 주요 사용 시나리오는 아래와 같습니다.

자세한 설정에 대한 내용은 https://www.pomerium.com/reference/ 를 참고하세요.

docker-compose.yml 예시

2개의 별도의 파일로 세팅합니다. config.yaml과 .env가 그것입니다. docker-compose.yml은 아래와 같이 나타납니다.

pomerium:
    image: pomerium/pomerium:latest
    network_mode: host
    environment:
      - SHARED_SECRET=${POMERIUM_SHARED_SECRET}
      - COOKIE_SECRET=${POMERIUM_COOKIE_SECRET}
      - IDP_CLIENT_ID=${POMERIUM_GOOGLE_ID}
      - IDP_CLIENT_SECRET=${POMERIUM_GOOGLE_SECRET}
    volumes:
      - /path/to/config/config.yaml:/pomerium/config.yaml:ro
      - /path/to/cert/:/pomerium/cert:ro
    restart: always

.env 예시

.env 파일의 자세한 내용은 이 문서를 참고하세요. 이 파일은 pomerium과는 상관없고 docker-compose가 읽어서 환경 변수를 설정하기 위한 파일입니다.

POMERIUM_SHARED_SECRET=
POMERIUM_COOKIE_SECRET=
POMERIUM_GOOGLE_ID=
POMERIUM_GOOGLE_SECRET=

config.yaml 예시

address: :443
log_level: info
authenticate_service_url: https://auth.myserver.com
administrators: "admin@gmail.com"
cookie_name: _pomerium
http_redirect_addr: :80
certificates:
  - cert: /srv/cert/domain1.pem
    key: /srv/cert/domain1.key
  - cert: /srv/cert/domain2.pem
    key: /srv/cert/domain2.key
idp_provider: "google"
idp_provider_url: "https://accounts.google.com"
metrics_address: ":8888"

policy:
# comment is available
  - from: https://myserver.com
    to: http://localhost:8080/
    allowed_users:
      - admin@gmail.com
    prefix: /service/

policy예시

  - from: https://myserver.com
    to: http://localhost:8080/
    allowed_users:
      - admin@gmail.com
    prefix: /service/

위와 같은 구성은 https://myserver.com가 Host인 요청중에서 Host 뒤의 URL이 /service/인 요청을 http://localhost:8080로 리다이렉트 합니다. 8080 포트 서버 입장에선 https://myserver.com/service/hello.html로 pomerium에 들어온 요청은 자신에게 http://localhost:8080/hello.html URL로 요청이 들어옵니다. admin@gmail.com 유저로 인증된 요청만 통과됩니다.

유용한 옵션들은 아래와 같습니다.

comments powered by Disqus