๊ท์น ํ๊ฐ๋ ์ ์ฑ ์ ์ค์ ๋ ๊ท์น์ ์ฌ์ฉํ์ฌ ์น ์์ฒญ์ ํ์ฉ ๋๋ ๊ฑฐ๋ถํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ๊ฒฐ์ ์ ๋ด๋ฆด ๋ ๋ค์ ์์ฑ์ ๊ณ ๋ คํฉ๋๋ค.
- ๊ท์น์ ์ฐ์ ์์: ์ ์ ๊ฐ์ด ์์์๋ก ์ฐ์ ์์๊ฐ ๋์ต๋๋ค.
- SessionMatcher: ๋ค์ ์ธ์
์์ค ์์ฑ๊ณผ ์ผ์นํฉ๋๋ค.
- ์์ค ๋จธ์ ์ IP ์ฃผ์
- ์์ค ๋จธ์ ์ ์๋น์ค ๊ณ์
- ์์ค ๋จธ์ ์ ๋ณด์ ํ๊ทธ
- ๋์ ๋จธ์ ์ ํธ์คํธ ์ด๋ฆ
- ApplicationMatcher: ๋ค์ HTTP ์์ฒญ ์์ฑ๊ณผ ์ผ์นํฉ๋๋ค.
- URL
- ๊ฒฝ๋ก
- ์์ฒญ ํค๋
๋ชจ๋ SessionMatcher
๋ฐ ApplicationMatcher
์์ฑ์ ๋ชฉ๋ก์ SessionMatcher
๋ฐ ApplicationMatcher
์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์์ฑ์ ์ฐธ์กฐํ์ธ์.
๊ท์น ํ๊ฐ ์๋ ๋ฐฉ์
๊ท์น์ ๋ค์ ์์๋ก ํ๊ฐ๋ฉ๋๋ค.
- ์ฐ์ ์์๊ฐ ๋์ ๊ท์น์ด ๋จผ์ ํ๊ฐ๋ฉ๋๋ค.
SessionMatcher
๋ฐApplicationMatcher
์์ฑ๊ณผ ์ผ์นํ๋ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ๊ท์น์ด ํด๋น ํธ๋ํฝ์ ๋ํด ์ํํ ์์ ์ ๊ฒฐ์ ํฉ๋๋ค.- ์์ฒญ์ด ํด๋น ๊ท์น์
SessionMatcher
๋ฐApplicationMatcher
์์ฑ๊ณผ ์ผ์นํ์ง ์์ผ๋ฉด ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ๋ค์ ๊ท์น์ด ํ๊ฐ๋ฉ๋๋ค. - ์ด ํ๋ก์ธ์ค๋ ์์ฒญ๊ณผ ์ผ์นํ๋ ๊ท์น์ด ๋ฐ๊ฒฌ๋๊ฑฐ๋ ๋ชจ๋ ๊ท์น์ด ํ๊ฐ๋ ๋๊น์ง ๊ณ์๋ฉ๋๋ค. ์ผ์นํ๋ ํญ๋ชฉ์ด ์์ผ๋ฉด ์์ฒญ์ด ๊ฑฐ๋ถ๋ฉ๋๋ค.
TLS ๊ฒ์ฌ ๊ตฌ์ฑ ์
TLS ๊ฒ์ฌ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ ์ ๋ค์ ๊ท์น ํ๊ฐ ์๋๋ฆฌ์ค๋ฅผ ์ดํดํด์ผ ํฉ๋๋ค.
ํด๋ผ์ด์ธํธ๋ ํ๋ก์ ์๋ฒ์ HTTP ์์ฒญ์ ๋ณด๋ผ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ํธ์คํธ ์ด๋ฆ, ์์ค ID, HTTP ํค๋, ๊ฒฝ๋ก๋ฅผ ํฌํจํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ์ ํ๊ฐํฉ๋๋ค.
์์ฒญ์ด ํ์ฉ๋๋ฉด HTTP ํธ๋ํฝ์ด ๋์์ ์ ์ก๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์์ฒญ์ด ๊ฑฐ๋ถ๋๋ฉด HTTP ํธ๋ํฝ์ด ํต๊ณผํ ์ ์์ต๋๋ค.
ํด๋ผ์ด์ธํธ๋ ํ๋ก์์ HTTP CONNECT ์์ฒญ์ ์ ์กํ์ฌ ๋์์ TCP ํฐ๋์ ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ ํด๋ผ์ด์ธํธ๊ฐ ์์์ TCP ํธ๋ํฝ์ ์ ์กํ๊ฑฐ๋ HTTPS์ ๋ง์ฐฌ๊ฐ์ง๋ก ํ๋ก์๋ฅผ ํตํด ๋์๊ณผ ์๋ ํฌ ์๋ TLS ์ฐ๊ฒฐ์ ์ค์ ํ๋ ค๋ ๊ฒฝ์ฐ์ ์ํ๋ฉ๋๋ค.
๊ท์น์ ์ผ์นํ๋
SessionMatcher
์์ฑ์ด ์๊ณApplicationMatcher
์์ฑ์ด ์๋ ๊ฒฝ์ฐ ๊ท์น ํ๊ฐ ๊ฒฐ๊ณผ ํธ๋ํฝ์ด ํ์ฉ๋๊ณ ๋์์ ๋ํ ํฐ๋์ด ์ค์ ๋ ํ ํธ๋ํฝ์ด TCP ํ๋ก์๋ฉ๋๋ค. ์ด๋ HTTPS ๋ฐ TCP ํธ๋ํฝ์ ์ ์ฉ๋ฉ๋๋ค.์ฐ์ ์์๊ฐ ๋ ๋์ ๊ท์น์ด ์์ฒญ์ ๋ํด ์ทจํ ์์ ์ ๊ฒฐ์ ํ ์ ์๋ ๊ฒฝ์ฐ ๊ท์น ํ๊ฐ๊ฐ ๊ณ์๋ฉ๋๋ค. ํ๊ฐ๊ฐ
ApplicationMatcher
์์ฑ์ด ์๋ ๊ท์น์ผ๋ก ์งํ๋๋ฉด ํฐ๋๋ง๋ ํธ๋ํฝ์ด HTTP ๋๋ HTTPS๋ก ํด์๋ฉ๋๋ค.๊ธฐ๋ณธ ๋ฐ์ดํฐ๊ฐ HTTP ๋๋ HTTPS๊ฐ ์๋๋ฉด ์ฐ๊ฒฐ์ด ์คํจํฉ๋๋ค.
๊ธฐ๋ณธ ๋ฐ์ดํฐ๊ฐ HTTP์ด๋ฉด ํธ์คํธ ์ด๋ฆ, ์์ค ID, HTTP ํค๋, ๊ฒฝ๋ก๋ฅผ ํฌํจํ์ฌ ์์ฒญ์ด ํ๊ฐ๋ฉ๋๋ค. ํ๊ฐ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ํธ๋ํฝ์ด ํ์ฉ๋๊ฑฐ๋ ๊ฑฐ๋ถ๋ฉ๋๋ค.
HTTPS ํธ๋ํฝ์ ๊ฒฝ์ฐ TLS ๊ฒ์ฌ ํ๋๊ทธ๊ฐ ์ฌ์ฉ ์ค์ ๋ ๊ฒฝ์ฐ์๋ง ๊ท์น์ด ํ๊ฐ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ท์น์ ๊ฑด๋๋๋๋ค.
HTTPS ํธ๋ํฝ์ ๊ฒฝ์ฐ ๋ค์ ์กฐ๊ฑด์ด ์ฐธ์ธ ๊ฒฝ์ฐ์๋ง ๊ท์น์ด ๊ฒ์ฌ๋ฉ๋๋ค.
- TLS ๊ฒ์ฌ ํ๋๊ทธ๊ฐ ์ฌ์ฉ ์ค์ ๋์ด ์์ต๋๋ค.
- ํธ๋ํฝ์ด
SessionMatcher
์์ฑ๊ณผ ์ผ์นํฉ๋๋ค.
TLS ๊ฒ์ฌ ๊ท์น ๊ตฌ์ฑ ๊ถ์ฅ์ฌํญ
- TCP ํธ๋ํฝ์ ํ์ฉํ๋ ค๋ฉด TCP ํธ๋ํฝ์ ํ์ฉํ๋ ๊ท์น์ ์ฐ์ ์์๊ฐ HTTP ํธ๋ํฝ์ ํ์ฉํ๋ ๊ท์น๋ณด๋ค ๋์์ผ ํฉ๋๋ค.
ApplicationMatcher
์์ฑ์ด ์๋ ๊ท์น์ ๊ด๋ จ ์๋ ํ๋ฆ์ด HTTP๋ก ํด์๋๋ ๊ฒ์ ์ต์ํํ๊ธฐ ์ํดSessionMatcher
์์ฑ์ ์ฌ์ฉํ์ฌ ๋ฒ์๋ฅผ ์ขํ์ผ ํฉ๋๋ค.- TLS(HTTPS ํฌํจ) ํธ๋ํฝ์ ํ์ฉํ์ง๋ง TLS ๊ฒ์ฌ๋ฅผ ์ํํ์ง ์๋ ๊ท์น์ TCP ํ๋ก์ ๊ท์น์ผ๋ก ํด์๋ ์ ์์ต๋๋ค.
- ๋ถํ์ํ ํธ๋ํฝ TLS ๊ฒ์ฌ๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด TLS ๊ฒ์ฌ ๊ท์น์ด TLS๊ฐ ์๋ ๊ฒ์ฌ ๊ท์น๋ณด๋ค ์ฐ์ ์์๊ฐ ๋ฎ์์ผ ํฉ๋๋ค. ๋๋ ์ผ์นํ์ง ์๋ ํธ๋ํฝ์ ๋ํด ๋น ๋ฅด๊ฒ ์คํจํ๋๋ก
SessionMatcher
์์ฑ์ ์ฌ์ฉํ์ฌ TLS ๊ฒ์ฌ ๊ท์น ๋ฒ์๋ฅผ ์ขํ์ผ ํฉ๋๋ค.
TLS ๊ฒ์ฌ ๊ท์น ๊ตฌ์ฑ ์์
๋ค์ ์์์์ ๋ ๊ท์น์ ๊ณ ๋ คํ์ธ์.
์ 1
์ด ์์์์๋ ์ฐ์ ์์๊ฐ ๋ฎ์ ๋ค๋ฅธ ๊ท์น์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ค์ ๋ ๊ฐ์ง ๊ท์น์ ๊ณ ๋ คํ์ธ์.
๊ท์น 1
description: do not allow POST requests priority: 10 basicProfile: DENY sessionMatcher: true tlsInspectionEnabled: true applicationMatcher: request.method == 'POST'
๊ท์น 2
description: allow TCP proxying from tag 12345 to example.com priority: 20 basicProfile: ALLOW sessionMatcher: source.matchTag('tagValues/12345') && host() == 'example.com'
์ด ์์์ ๋ณด์ ์น ํ๋ก์๋ ๋ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ด ํด์ํฉ๋๋ค.
- TCP ํธ๋ํฝ์ ํ์ฉํ์ง๋ง ํน์ ์ ํ์ HTTP ์์ฒญ์ ํ์ฉํ์ง ์์ผ๋ฉฐ ์ํธ ๋ฐฐํ์ ์ธ ๊ฒ์ TCP ํธ๋ํฝ์ POST ์์ฒญ์ด ํฌํจ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ๊ท์น 2์ ํธ๋ํฝ์ ํ์ฉ๋์ง ์์ต๋๋ค. HTTP ๋ฉ์๋๋ฅผ ํ๊ฐํ๊ธฐ ์ํด ํ๊ทธ 12345์์ example.com์ผ๋ก์ ํธ๋ํฝ์ ๊ฐ๋ก์ฑ์ HTTP๋ก ํด์๋๊ธฐ ๋๋ฌธ์ ๊ฑฐ๋ถ๋ฉ๋๋ค.
๊ท์น 2๋ฅผ ์ ์ฉํ๋ ค๋ฉด ๋ค์ ์๋ฃจ์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ธ์.
- ๊ถ์ฅ: ๊ท์น 2์ ์ฐ์ ์์๋ฅผ ๋ ๋์ ์์ค์ผ๋ก ๋์ ๋๋ค(์ฐ์ ์์: 5).
ํ์ฉ๋ ํธ๋ํฝ์ด
SessionMatcher
์์ฑ๊ณผ ๊ฒน์น์ง ์๋๋ก ๊ท์น 1์ ๋ฒ์๋ฅผ ์ง์ ํฉ๋๋ค.sessionMatcher: !(source.matchTag('tagValues/12345') && host() == 'example.com')
๊ฒน์น๋ ๊ท์น์ด ๋ง์ผ๋ฉด ์ ์ง ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ง๋ฏ๋ก ์ด ์๋ฃจ์ ์ ๊ถ์ฅํ์ง ์์ต๋๋ค.
์ 2
๋ค์ ๋ ๊ฐ์ง ๊ท์น์ ๊ณ ๋ คํ์ธ์.
๊ท์น 1
description: allow to specific GitHub repository (TLS inspect to match specific path) priority: 10 basicProfile: ALLOW sessionMatcher: true tlsInspectionEnabled: true applicationMatcher: request.url().startsWith('github.com/grpc/grpc')
๊ท์น 2
description: allow TCP proxying from tag 12345 to example.com priority: 20 basicProfile: ALLOW sessionMatcher: host() == 'bankofamerica.com'
์ด ์์์ ๋ณด์ ์น ํ๋ก์๋ ๋ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ด ํด์ํฉ๋๋ค.
bankofamerica.com
์ ๋์์ผ๋ก ํ๋ ํธ๋ํฝ์ ํฌํจํ ๋ชจ๋ ํธ๋ํฝ์ด TLS์ ๋ํด ๊ฒ์ฌ๋์ด ์ฐ์ ์์๊ฐ ๋์ ๊ท์น 1์request.url()
๊ณผ ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค.๊ท์น 2์์ TLS ๊ฒ์ฌ๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ๋ค์ ์๋ฃจ์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
- ๊ท์น 2์ ์ฐ์ ์์๋ฅผ ๋ ๋์ ์์ค์ผ๋ก ๋์
๋๋ค(์ฐ์ ์์: 5).
๋ฐ๋ผ์ ๊ท์น 1์ ํ๊ฐํ๊ธฐ ์ ์ ๊ท์น 2๊ฐ ์ ์ฉ๋๋ฉฐ
bankofamerica.com
์ ํธ๋ํฝ์ TLS ๊ฒ์ฌ ์์ด ํ์ฉ๋ฉ๋๋ค. ๊ถ์ฅ: ๊ท์น 1์ ๋ฒ์๋ฅผ ์ขํ์
github.com
๋๋ฉ์ธ์ ๋ํด์๋ง TLS ๊ฒ์ฌ๋ฅผ ํ์ฉํ์ธ์. ๋ฒ์๋ฅผ ์ขํ๋ ค๋ฉด ํ๊ฒํ ๋sessionMatcher
์์ฑ์ ์ถ๊ฐํฉ๋๋ค.sessionMatcher: host() == 'github.com'
- ๊ท์น 2์ ์ฐ์ ์์๋ฅผ ๋ ๋์ ์์ค์ผ๋ก ๋์
๋๋ค(์ฐ์ ์์: 5).
๋ฐ๋ผ์ ๊ท์น 1์ ํ๊ฐํ๊ธฐ ์ ์ ๊ท์น 2๊ฐ ์ ์ฉ๋๋ฉฐ
์ ํ์ฌํญ
TLS ๊ฒ์ฌ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ ์ ๋ค์ ์ ํ์ฌํญ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
์๋ฒ๋ ๊ณต๊ฐ ๋ฃจํธ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํด์ผ๋ง ํ์ธํ ์ ์์ต๋๋ค. ๋ฃจํธ ์ธ์ฆ ๊ธฐ๊ด(CA) ์งํฉ์ Mozilla ๋ฃจํธ ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ธ์ฆ์ ํ์ธ ๋์์ ๋ณ๊ฒฝ๋ ์ ์์ผ๋ฉฐ ์น๋ธ๋ผ์ฐ์ ์์ ์ธ์ฆ์๋ฅผ ํ์ธํ๋ ๋ฐฉ์์ ํด๋นํฉ๋๋ค.
ํ์ฌ ๋ฐฑ์๋ ํ์ธ์ด ๋ถ๊ฐ๋ฅํ๋ฏ๋ก ๋น๊ณต๊ฐ ๋๋ ์์ฒด ์๋ช ๋ ์ธ์ฆ์๊ฐ ์๋ ์๋ฒ๋ก์ ํธ๋ํฝ์ ๊ฐ๋ก์ฑ ์ ์์ต๋๋ค.
๋ณด์ ์น ํ๋ก์๋ ์ธ์ฆ์ ํด์ง ๋ชฉ๋ก(CRL) ๊ฒ์ฌ๋ฅผ ์คํํ์ง ์์ต๋๋ค.
TLS ๊ฒ์ฌ๊ฐ ์๋ํ๋ ค๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ํ์ฌ ์๋ฒ ์ด๋ฆ ํ์(SNI)๋ฅผ ๋ณด๋ด์ผ ํฉ๋๋ค. SNI๋ ์ ํ์ฌํญ์ธ TLS ์ฌ์ ํ์ฅ ํ๋ก๊ทธ๋จ์ด์ง๋ง ๋๋ถ๋ถ์ ํด๋ผ์ด์ธํธ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
ํด๋ผ์ด์ธํธ์ ์ํธํ๋ ํด๋ผ์ด์ธํธ Hello(ECH)(์ด์ ์ ์ํธํ๋ SNI)๊ฐ ํ์ํ ๊ฒฝ์ฐ TLS ๊ฒ์ฌ๊ฐ ์๋ํ์ง ์์ต๋๋ค.
ECH๋ ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ ์ค์ ๋ ์๋ฒ ํค๋ฅผ ์ฌ์ฉํ์ฌ TLS ํธ๋์ ฐ์ดํฌ์ ์์์ ์ํธํํ ์ ์๊ฒ ํด์ฃผ๋ IETF ํ์ค ์ด์์ ๋๋ค. TLS ๊ฒ์ฌ๋ ๊ฐ๋ก์ฑ๊ธฐ ํ๋ก์ ์ญํ ์ ํ๋ฏ๋ก ์ฌ์ ์ค์ ๋ ์๋ฒ ํค์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ECH๊ฐ ์๋ํ์ง ์์ต๋๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ๋น๊ณต๊ฐ ๋ฃจํธ ์ธ์ฆ์๋ฅผ ์ ๋ขฐํ๋๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
๋น๊ณต๊ฐ CA ํ์์ CA๋ฅผ ์ญ์ ํ๋ฉด ํด๋น CA์์ ์๋ช ํ ์บ์๋ ์ธ์ฆ์๊ฐ ์ต๋ 28์๊ฐ ๋์ ์ ๊ณต๋ฉ๋๋ค. ์บ์๋ ์ธ์ฆ์๊ฐ ์ฌ์ฉ๋์ง ์๋๋ก ํ๋ ค๋ฉด ์ CA ํ์ ๊ฐ๋ฆฌํค๋๋ก TLS ๊ฒ์ฌ ์ ์ฑ ์ ์ ๋ฐ์ดํธํ๋ฉด ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ณด์ ์น ํ๋ก์๋ ์ ์ธ์ฆ์๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.