Istio HTTP 인가

Istio HTTP 인가 (Authorization for HTTP Traffic)

서로 인증이 된 서비스 사이에도 "이 서비스가 저 서비스의 특정 API를 호출해도 되는가"는 별도로 판단해야 해요. Istio 인가는 AuthorizationPolicy 리소스로 HTTP 요청에 접근 제어를 거는 걸 보여줘요.

출처: https://istio.io/latest/docs/tasks/security/authorization/authz-http/

AuthorizationPolicy는 selector로 대상 워크로드를 고르고, action으로 허용/거부를 정하며, rules로 조건을 기술하는 구조예요. when 필드엔 요청의 속성(예: 파라미터, IP, 메서드)을, to엔 요청 대상(예: 경로·메서드)을 기술해요.

아래 예시는 특정 경로에 대해 GET 메서드만 허용하는 정책이에요.

apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
  name: httpbin-allow
  namespace: foo
spec:
  selector:
    matchLabels:
      app: httpbin
      version: v1
  action: ALLOW
  rules:
  - to:
    - operation:
        methods: ["GET"]
        paths: ["/info*"]

일치 규칙은 기본적으로 OR로 합쳐져요. 예를 들어 methods 배열에 ["GET", "POST"]를 넣으면 GET 또는 POST를 뜻해요. 규칙 안의 여러 항목은 AND, 그리고 별도 rules 항목 간에는 OR로 평가된다는 점을 기억하면 정책을 조립하기 쉬워요.

특히 주의할 점은 allow 정책이 없으면 기본적으로 모두 허용된다는 거예요. 그런데 워크로드에 allow 정책이 하나라도 걸리면, 그 워크로드에 대해선 그 정책이 허용하는 트래픽만 통과해요. 이 "기본 허용 → 규칙이 있으면 그 규칙만"의 전환이 실무에서 헷갈리는 지점이라, deny 정책을 우선 적용해 안전망을 까는 방법도 함께 알아두면 좋아요.

더 알아보기