일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- AI
- 티스토리챌린지
- Intellij
- replication lag
- 캡슐화
- GoF
- 디자인패턴
- redirect-gateway
- cosine similarity metric
- 구조체
- GIT
- javascript
- ssh 에이전트
- goland
- authorizationpolicy
- elasticsearch
- go
- sqs fifo queue
- Kubernetes
- golang
- Infra
- 오블완
- context7
- AWS
- 서비스메쉬
- 2024 톨스토이문학상 수상
- model context protocol
- RDS
- typescript
- esbuild
Archives
- Today
- Total
Fall in IT.
Istio AuthorizationPolicy로 특정 도메인에 대한 IP 접근 제어 설정하기 본문
반응형
이 글에서는 온프레미스 환경에서 클라우드의 Elasticsearch에 보안적으로 안전하게 접근하기 위해 Istio의 AuthorizationPolicy를 활용하여 특정 도메인만 특정 IP에서 접근 가능하도록 설정한 방법을 공유한다.
참고로, 필자가 다니는 회사에서는 클라우드와 온프레미스 환경을 둘다 사용하여 서비스를 운영하고 있다.
상황 요약
- AI 추론 및 학습 서버는 온프레미스에 구축되어 있고,
- 그 외의 서비스의 클라우드 인프라는 AWS EKS에서 운영되고 있다.
- 각 서비스에서 발생하는 로그는 클라우드 Kubernetes에 설치형으로 운영 중인 Elasticsearch에 저장된다.
- Elasticsearch는 보안상 외부에 노출되지 않고, VPC 내부에서만 접근 가능하도록 설정되어 있다.
- 온프레미스에서 동작하는 서비스에서 발생하는 로그도 Elasticsearch에 기록하고 싶다.
접근 제어가 필요한 이유
가장 간단한 방법은 Elasticsearch의 엔드포인트를 외부에 노출시키는 것이다.
하지만, 이는 보안상 매우 위험한 방법이다.
대안으로 고려한 방법
- Elasticsearch 외부 노출
- → 간단하지만 보안상 부적합 ❌
- Site-to-Site VPN 구성→ 운영 비용 부담으로 보류
- → 보안은 뛰어나지만, 매월 $36 이상 요금 발생이 예상 됨
- Istio AuthorizationPolicy 사용 ✅→ 쿠버네티스 기반 서비스 구조와도 자연스럽게 통합
- → Istio Ingress Gateway에서 도메인 + IP 조합으로 접근을 제어
적용 구조
서비스 메시는 Istio로 구성되어 있으며, 트래픽 흐름은 다음과 같다.
외부 → Istio Ingress Gateway → Gateway → VirtualService → Elasticsearch Service
이 중 Istio Ingress Gateway 단에서 접근 제어 정책을 적용한다.
AuthorizationPolicy 설정
특정 도메인(elasticsearch.domain.com)에 대해서는 온프레미스 IP만 허용
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: allow-only-onprem-ip
namespace: istio-system
spec:
selector:
matchLabels:
app: istio-ingressgateway
action: ALLOW
rules:
- from:
- source:
ipBlocks:
- "221.111.4.12/32" # 온프레미스 고정 IP (각자 변경 필요)
when:
- key: request.headers[:authority]
values: ["elasticsearch.domain.com"]
그 외의 도메인들은 모두 허용 (기존 접근은 유지하기 위함)
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: allow-other-domains
namespace: istio-system
spec:
selector:
matchLabels:
app: istio-ingressgateway
action: ALLOW
rules:
- when:
- key: request.headers[:authority]
notValues: ["elasticsearch.domain.com"]
정상 동작 확인
온프레미스와 외부 환경에서 각각 curl 명령어를 통해 접근 테스트를 진행한다.
$ curl -I <https://elasticsearch.domain.com>
- 온프레미스 고정 IP에서는 200 OK
- 기타 외부 IP에서는 403 Forbidden
정리
접근 주체 도메인 결과
온프레미스 (221.111.4.12) | elasticsearch.domain.com | ✅ 허용 |
기타 외부 IP | elasticsearch.domain.com | ❌ 차단 |
모든 IP | 다른 도메인 (예: kibana.domain.com) | ✅ 허용 |
결론
Istio의 AuthorizationPolicy는 별도의 VPN 비용 없이도 도메인 기반 + IP 제어를 손쉽게 구현할 수 있었다.
반응형
'시스템구축' 카테고리의 다른 글
SQS FIFO Queue로 구성한 부품 매칭 시스템 구조와 설계 이유 (1) | 2025.07.04 |
---|---|
MSA에서 메서드 분리에서 유스케이스 분리를 고민하는 시점 (0) | 2025.06.21 |
JWT 토큰을 이용한 인증방식 개선: HTTP 헤더에서 쿠키 기반 인증 방식으로 (0) | 2025.02.15 |
쿠버네티스 패키지(kube-prometheus-stack) 관리 이슈 (0) | 2024.12.04 |
DDNS란 무엇인가? (0) | 2024.11.22 |
Comments