Security 퀴즈

지원 버전: Istio 1.28.0 EKS 버전: 1.34 (Kubernetes 1.28+) 마지막 업데이트: 2026년 2월 23일

이 퀴즈는 Istio의 보안 기능에 대한 이해도를 테스트합니다.

객관식 문제 (1-5번)

문제 1: PeerAuthentication 모드

PeerAuthentication의 mTLS 모드 중 PERMISSIVE의 특징으로 옳은 것은?

A. mTLS와 평문 트래픽을 모두 허용한다 B. mTLS만 허용하고 평문은 거부한다 C. 모든 트래픽을 거부한다 D. mTLS를 비활성화한다

chevron-right정답 및 해설hashtag

정답: A

PERMISSIVE 모드는 mTLS와 평문 트래픽을 모두 허용하여 점진적 마이그레이션을 지원합니다.

해설:

PeerAuthentication의 mTLS 모드:

모드
설명
사용 시나리오

PERMISSIVE

mTLS + 평문 모두 허용

점진적 마이그레이션, 혼합 환경

STRICT

mTLS만 허용

프로덕션 보안 강화

DISABLE

mTLS 비활성화 (평문만)

디버깅, 레거시 시스템

PERMISSIVE 모드 예제:

apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
  namespace: istio-system
spec:
  mtls:
    mode: PERMISSIVE  # mTLS + 평문 모두 허용

동작 방식:

클라이언트 A (Istio Sidecar) → [mTLS] → 서버 (PERMISSIVE)  ✅ 허용
클라이언트 B (No Sidecar)     → [평문] → 서버 (PERMISSIVE)  ✅ 허용

STRICT 모드와 비교:

apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: strict-mtls
  namespace: production
spec:
  mtls:
    mode: STRICT  # mTLS만 허용
클라이언트 A (Istio Sidecar) → [mTLS] → 서버 (STRICT)  ✅ 허용
클라이언트 B (No Sidecar)     → [평문] → 서버 (STRICT)  ❌ 거부

마이그레이션 전략:

1단계: PERMISSIVE (혼합 트래픽 허용)

2단계: 모든 서비스에 Sidecar 주입

3단계: STRICT (mTLS 강제)

참고 자료:


문제 2: AuthorizationPolicy의 action

다음 AuthorizationPolicy 구성의 의미는?

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: deny-all
spec:
  {}

A. 모든 요청을 허용한다 B. 모든 요청을 거부한다 C. 정책을 적용하지 않는다 D. mTLS만 허용한다

chevron-right정답 및 해설hashtag

정답: B

빈 spec을 가진 AuthorizationPolicy는 모든 요청을 거부합니다 (deny-by-default).

해설:

AuthorizationPolicy의 기본 동작:

  1. 정책이 없으면: 모든 요청 허용

  2. 빈 spec (예제와 같음): 모든 요청 거부

  3. rules가 있으면: rules에 따라 허용/거부

Deny-by-default 패턴:

AuthorizationPolicy의 action 종류:

action
설명
우선순위

DENY

명시적 거부

1 (최우선)

ALLOW

명시적 허용

2

AUDIT

로그만 기록

3

CUSTOM

외부 인증 서비스

4

평가 순서:

실전 예제:

테스트:

참고 자료:


문제 3: JWT 인증

RequestAuthentication에서 JWT 토큰을 검증할 때 사용하는 필드는?

A. issuer와 audiences B. principals와 namespaces C. methods와 paths D. hosts와 ports

chevron-right정답 및 해설hashtag

정답: A

RequestAuthentication은 issueraudiences 필드를 사용하여 JWT 토큰을 검증합니다.

해설:

JWT 토큰 구조:

RequestAuthentication 구성:

JWT 검증 프로세스:

OIDC 제공자와 통합:

AuthorizationPolicy와 결합:

테스트:

참고 자료:


문제 4: mTLS 인증서 관리

Istio에서 mTLS 인증서의 기본 유효 기간은?

A. 1시간 B. 24시간 C. 7일 D. 90일

chevron-right정답 및 해설hashtag

정답: B

Istio에서 mTLS 인증서의 기본 유효 기간은 24시간이며, 자동으로 갱신됩니다.

해설:

Istio 인증서 관리:

기본 설정:

  • 인증서 유효 기간: 24시간 (1일)

  • 갱신 시점: 만료 전 8시간

  • 갱신 방식: 자동 (Istiod가 관리)

  • 인증서 형식: X.509

인증서 라이프사이클:

인증서 확인:

유효 기간 커스터마이징:

인증서 갱신 실패 시나리오:

SPIFFE ID:

CA 계층 구조:

외부 CA 통합:

참고 자료:


문제 5: Service Account 기반 인증

Istio에서 서비스 간 인증에 사용되는 identity는?

A. Pod 이름 B. Service 이름 C. Service Account D. Namespace 이름

chevron-right정답 및 해설hashtag

정답: C

Istio는 Service Account를 기반으로 서비스 간 identity를 관리합니다.

해설:

Service Account 기반 Identity:

SPIFFE ID 형식:

AuthorizationPolicy에서 Service Account 사용:

Service Account vs Pod/Service 이름:

항목
Service Account
Pod 이름
Service 이름

안정성

✅ 안정적

❌ 동적 변경

✅ 안정적

보안

✅ 인증서 기반

❌ 신뢰 불가

❌ 신뢰 불가

RBAC 통합

✅ Kubernetes RBAC

❌ 불가능

❌ 불가능

mTLS

✅ 인증서에 포함

❌ 포함 안됨

❌ 포함 안됨

실전 예제: 3-Tier 애플리케이션:

Service Account 확인:

Namespace 간 통신:

참고 자료:


주관식 문제 (6-10번)

문제 6: Deny-by-default 보안 정책 구현

Kubernetes 클러스터에서 Istio를 사용하여 deny-by-default 보안 정책을 구현하는 방법을 단계별로 설명하세요. 필수 리소스(PeerAuthentication, AuthorizationPolicy)와 예외 처리 방법을 포함해야 합니다.

chevron-right예시 답안hashtag

답변:

Deny-by-default 보안 정책 구현:


1단계: mTLS STRICT 모드 활성화

모든 서비스 간 통신을 mTLS로 강제합니다:

적용 범위:

  • istio-system namespace에 배포 → 전체 메시에 적용

  • 특정 namespace에 배포 → 해당 namespace만 적용

  • selector 사용 → 특정 workload만 적용


2단계: 모든 트래픽 거부 (Deny-by-default)

이 정책 이후:

  • ❌ 모든 inbound 트래픽 거부

  • ❌ 서비스 간 통신 불가

  • ❌ 외부에서 접근 불가


3단계: 필요한 통신만 선택적 허용

예시 1: Frontend → Backend 통신 허용

예시 2: Backend → Database 통신 허용


4단계: Ingress Gateway 정책

외부 트래픽을 허용하려면 Ingress Gateway에도 정책이 필요합니다:


5단계: Health Check 및 Readiness Probe 예외 처리

Kubernetes health check가 차단되지 않도록 예외 처리:

또는 PeerAuthentication에서 특정 포트 제외:


6단계: 모니터링 및 로깅 예외

Prometheus가 메트릭을 수집할 수 있도록 허용:


완전한 예제: 3-Tier 애플리케이션


테스트 및 검증:


모범 사례:

  1. 점진적 적용:

    • 먼저 PERMISSIVE 모드로 mTLS 활성화

    • 모든 서비스에 Sidecar 주입 확인

    • STRICT 모드로 전환

    • Deny-by-default 정책 적용

  2. 최소 권한 원칙:

    • 필요한 최소한의 통신만 허용

    • HTTP 메서드 제한 (GET만, POST만 등)

    • 경로 제한 (/api/*만 등)

  3. 예외 처리:

    • Health check는 반드시 예외 처리

    • 모니터링 시스템 접근 허용

    • Ingress Gateway 정책 설정

  4. 테스트:

    • 각 정책 적용 후 테스트

    • 부작용 확인 (로그, 메트릭)

    • 롤백 계획 준비

참고 자료:


문제 7: JWT + mTLS 이중 인증

Istio에서 **최종 사용자 인증(JWT)**과 **서비스 간 인증(mTLS)**을 함께 사용하는 시나리오를 구현하세요. OAuth2/OIDC 제공자(예: Keycloak)와 통합하는 방법을 포함해야 합니다.

chevron-right예시 답안hashtag

답변:

JWT + mTLS 이중 인증 아키텍처:


1단계: Keycloak 설정


2단계: mTLS 활성화 (서비스 간 인증)


3단계: JWT 인증 설정 (최종 사용자 인증)


4단계: AuthorizationPolicy 설정

Ingress Gateway 정책

Backend 정책


5단계: Role 기반 접근 제어

JWT claims 기반으로 세밀한 권한 제어:


6단계: JWT Payload 활용

Backend에서 JWT payload 사용:


7단계: 완전한 예제

Ingress Gateway

Frontend

Backend


테스트:


보안 이점:

  1. 이중 인증:

    • JWT: 최종 사용자 신원 확인

    • mTLS: 서비스 간 신원 확인

  2. 깊은 방어 (Defense in Depth):

    • Gateway에서 JWT 검증

    • 서비스 간 mTLS로 통신 암호화

    • AuthorizationPolicy로 세밀한 권한 제어

  3. 역할 기반 접근 제어 (RBAC):

    • JWT claims 기반 권한 관리

    • 동적 권한 업데이트 (Keycloak에서 관리)

참고 자료:


문제 8: 외부 서비스 접근 제어

Istio에서 Egress 트래픽을 제어하여 특정 외부 서비스만 접근을 허용하는 방법을 설명하세요. ServiceEntry, VirtualService, AuthorizationPolicy를 사용한 완전한 예제를 포함해야 합니다.

chevron-right예시 답안hashtag

답변:

Egress 트래픽 제어 전략:


1단계: Egress 트래픽 기본 모드 확인

Istio는 두 가지 egress 모드를 지원합니다:

모드 비교:

모드
설명
보안

ALLOW_ANY

모든 외부 트래픽 허용 (기본값)

⚠️ 낮음

REGISTRY_ONLY

ServiceEntry에 등록된 서비스만 허용

✅ 높음

REGISTRY_ONLY 모드로 변경:


2단계: ServiceEntry로 외부 서비스 등록

예제 1: HTTPS API (GitHub)

예제 2: HTTP API (httpbin)

예제 3: 특정 IP 주소


3단계: VirtualService로 트래픽 제어

타임아웃 및 재시도 설정

헤더 추가 (API Key)


4단계: AuthorizationPolicy로 접근 제어

특정 Service Account만 허용

특정 경로만 허용


5단계: Egress Gateway 사용 (선택사항)

중앙 집중식 egress 제어:

트래픽 흐름:


6단계: 완전한 예제

시나리오: Backend 서비스만 GitHub API에 접근 허용


테스트:


모니터링:


보안 이점:

  1. 화이트리스트 방식: ServiceEntry에 등록된 서비스만 접근

  2. Service Account 기반 제어: 특정 서비스만 외부 API 호출 가능

  3. 감사 및 로깅: 모든 egress 트래픽 로깅 가능

  4. 중앙 집중식 관리: Egress Gateway로 모든 외부 트래픽 모니터링

참고 자료:


문제 9: 보안 감사 및 로깅

Istio에서 보안 관련 이벤트를 **감사(Audit)**하고 로깅하는 방법을 설명하세요. AuthorizationPolicy의 AUDIT actionAccess Log 구성을 포함해야 합니다.

chevron-right예시 답안hashtag

답변:

Istio 보안 감사 및 로깅 전략:


1. AuthorizationPolicy AUDIT Action

AUDIT action은 트래픽을 차단하지 않고 로그만 기록합니다.

기본 AUDIT 정책

특정 조건만 감사


2. Access Log 활성화

전체 메시에 Access Log 활성화

특정 Namespace에만 적용


3. 보안 감사를 위한 커스텀 로그 필터

mTLS 정보 포함

Authorization 정보 포함


4. 외부 로깅 시스템 통합

FluentBit으로 CloudWatch 전송

Elasticsearch 통합


5. 완전한 보안 감사 구성


6. 로그 분석 쿼리

Prometheus 쿼리

CloudWatch Insights 쿼리


7. Grafana 대시보드


8. 알림 설정


모범 사례:

  1. AUDIT 먼저, DENY 나중에:

    • 새 정책은 AUDIT로 시작

    • 로그 분석 후 DENY로 전환

  2. 선택적 로깅:

    • 모든 트래픽 로깅은 비용 증가

    • 민감한 작업만 로깅

  3. 로그 보존:

    • 보안 감사: 최소 90일

    • 규정 준수: 1년 이상

  4. 실시간 알림:

    • 무단 접근 시도 즉시 알림

    • 비정상 패턴 탐지

참고 자료:


문제 10: Zero Trust 네트워크 구현

Istio를 사용하여 Zero Trust 네트워크 원칙을 구현하는 방법을 설명하세요. mTLS STRICT, deny-by-default, least privilege 원칙을 적용한 완전한 예제를 포함해야 합니다.

chevron-right예시 답안hashtag

답변:

Zero Trust 네트워크 원칙:

  1. Never Trust, Always Verify: 모든 통신을 검증

  2. Least Privilege: 최소 권한만 부여

  3. Assume Breach: 침해를 가정하고 설계


Istio Zero Trust 아키텍처:


1단계: mTLS STRICT 모드

모든 서비스 간 통신을 암호화:

검증:


2단계: Deny-by-default 정책

전역 Deny 정책


3단계: Least Privilege (최소 권한)

시나리오: 3-Tier 웹 애플리케이션

Service Account 생성

Ingress Gateway → Frontend

Frontend → Backend

Backend → Database


4단계: 네임스페이스 격리

다른 Namespace에서의 접근 차단:


5단계: 시간 기반 접근 제어

EnvoyFilter로 시간 기반 제어 구현:


6단계: Egress 트래픽 제어

외부 서비스 접근 제한:


7단계: 완전한 Zero Trust 구성


8단계: 검증 및 모니터링


Zero Trust 체크리스트:

  • ✅ mTLS STRICT 모드 (모든 통신 암호화)

  • ✅ Deny-by-default (기본 모든 거부)

  • ✅ Explicit Allow (필요한 것만 허용)

  • ✅ Service Account 기반 identity

  • ✅ 최소 권한 (메서드/경로/포트 제한)

  • ✅ Namespace 격리

  • ✅ Egress 트래픽 제어

  • ✅ Health check 예외 처리

  • ✅ 모니터링 및 감사

  • ✅ 정기적인 정책 검토

참고 자료:


점수 계산

  • 객관식 1-5번: 각 10점 (총 50점)

  • 주관식 6-10번: 각 10점 (총 50점)

  • 총점: 100점

평가 기준:

  • 90-100점: 우수 (Istio 보안 전문가)

  • 80-89점: 양호 (프로덕션 보안 구성 가능)

  • 70-79점: 보통 (추가 학습 권장)

  • 60-69점: 미흡 (기본 개념 복습 필요)

  • 0-59점: 재학습 필요

학습 자료

마지막 업데이트