보안 및 인증 (Security & Authentication)

보안 및 인증 (Security & Authentication)

1️⃣ mTLS (Mutual TLS) 개념 및 Istio 보안 적용 방법

1 mTLS 개요

mTLS(Mutual TLS, 상호 인증 TLS)는 클라이언트와 서버 간의 트래픽을 암호화하고, 서로를 인증하는 보안 프로토콜입니다. 일반적으로 TLS는 서버 인증만 하지만, mTLS는 클라이언트도 인증합니다. 이를 통해 두 엔티티가 신뢰할 수 있는지 확인하고, 보안 통신을 보장할 수 있습니다.

2 Istio에서 mTLS 적용 방법

Istio는 기본적으로 서비스 간 통신을 안전하게 보호할 수 있도록 mTLS를 지원합니다. 이를 통해 클러스터 내 서비스 간의 트래픽을 암호화하고, 인증할 수 있습니다. Istio는 PeerAuthentication 리소스를 사용하여 mTLS를 설정하고, DestinationRule을 통해 서비스 간의 통신 정책을 관리합니다.

📌 mTLS 적용 예시

  1. PeerAuthentication 리소스를 사용한 mTLS 활성화
apiVersion: authentication.istio.io/v1alpha1
kind: PeerAuthentication
metadata:
  name: default
spec:
  mtls:
    mode: STRICT
  1. DestinationRule을 통한 mTLS 설정
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: myservice-mtls
spec:
  host: myservice
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL

3 mTLS의 장점

  • 암호화된 통신: 서비스 간 모든 트래픽은 암호화되어 전송됩니다.
  • 양방향 인증: 서버와 클라이언트 모두 인증을 수행하여 보안성을 높입니다.
  • 무단 액세스 차단: 인증되지 않은 서비스는 네트워크에서 접근할 수 없습니다.

2️⃣ AuthorizationPolicy를 활용한 RBAC 기반 접근 제어

1 RBAC (Role-Based Access Control) 개요

RBAC는 역할 기반 접근 제어로, 사용자나 서비스가 시스템 리소스에 접근할 수 있는 권한을 역할(Role)을 통해 제어하는 방식입니다. Istio에서는 AuthorizationPolicy를 사용하여 서비스 간에 세밀한 접근 제어를 설정할 수 있습니다.

2 AuthorizationPolicy 리소스

AuthorizationPolicy는 Istio에서 서비스를 보호하고, 서비스 간 트래픽을 제어하는 데 사용됩니다. 이를 통해 특정 서비스나 리소스에 대한 접근 권한을 부여하거나 제한할 수 있습니다.

📌 AuthorizationPolicy 예시 (RBAC 구현)

apiVersion: authorization.istio.io/v1alpha1
kind: AuthorizationPolicy
metadata:
  name: myservice-policy
spec:
  selector:
    matchLabels:
      app: myservice
  rules:
    - from:
        - source:
            principals: ["cluster.local/ns/default/sa/myservice-sa"]

3 RBAC의 장점

  • 정밀한 권한 관리: 사용자나 서비스의 역할에 따라 접근 권한을 세밀하게 제어할 수 있습니다.
  • 보안 강화: 권한 없는 사용자는 중요한 리소스에 접근할 수 없도록 방지합니다.
  • 정책 중심의 보안: 관리자가 권한을 한 곳에서 설정하고, 정책을 일관되게 적용할 수 있습니다.

3️⃣ RequestAuthentication & PeerAuthentication 설정

1 RequestAuthentication 개요

RequestAuthentication은 외부 인증 시스템을 Istio와 통합하여 서비스에 대한 인증을 수행하는 리소스입니다. 예를 들어, JWT(Json Web Token) 인증을 활용하여, 들어오는 요청을 인증하고 유효성을 검사할 수 있습니다.

2 PeerAuthentication 개요

PeerAuthentication은 클러스터 내에서 서비스 간의 통신에 대한 인증 방식을 설정하는 리소스입니다. mTLS를 설정하거나, TLS를 사용하는 서비스 간의 인증을 제어합니다.

📌 RequestAuthentication 리소스 예시 (JWT 인증)

apiVersion: authentication.istio.io/v1alpha1
kind: RequestAuthentication
metadata:
  name: my-jwt-auth
spec:
  selector:
    matchLabels:
      app: myservice
  jwtRules:
    - issuer: "https://my-oauth2-provider.com"
      jwksUri: "https://my-oauth2-provider.com/.well-known/jwks.json"

📌 PeerAuthentication 리소스 예시

apiVersion: authentication.istio.io/v1alpha1
kind: PeerAuthentication
metadata:
  name: myservice-peer-auth
spec:
  mtls:
    mode: STRICT

3 RequestAuthentication & PeerAuthentication의 장점

  • 세밀한 인증 제어: 서비스 간 트래픽에 대한 인증을 구체적으로 설정할 수 있습니다.
  • 외부 인증 시스템 통합: OAuth2, JWT와 같은 외부 인증 시스템을 손쉽게 통합하여 보안을 강화할 수 있습니다.
  • 서비스 내 인증 정책 적용: 각 서비스에 맞는 인증 정책을 적용하여 보안을 강화합니다.

4️⃣ JWT 기반 인증 적용 (OAuth2, OpenID Connect 연동)

1 JWT 인증 개요

JWT(Json Web Token)는 클라이언트와 서버 간의 인증을 위해 널리 사용되는 방식입니다. Istio는 RequestAuthentication 리소스를 통해 JWT 기반 인증을 쉽게 설정할 수 있습니다. 이를 통해 애플리케이션 간의 인증 및 권한 부여를 구현할 수 있습니다.

2 OAuth2 & OpenID Connect 연동

OAuth2와 OpenID Connect는 JWT 기반 인증과 연동되어, 외부 인증 제공자와의 통합을 지원합니다. 이를 통해 Istio는 인증된 사용자만 서비스를 호출할 수 있도록 관리할 수 있습니다.

📌 JWT 인증 및 OAuth2 설정 예시

apiVersion: authentication.istio.io/v1alpha1
kind: RequestAuthentication
metadata:
  name: oauth2-jwt-auth
spec:
  selector:
    matchLabels:
      app: myservice
  jwtRules:
    - issuer: "https://my-oauth2-provider.com"
      jwksUri: "https://my-oauth2-provider.com/.well-known/jwks.json"

3 JWT 기반 인증의 장점

  • 경량화된 인증: JWT는 헤더에 포함되어 있어 서버 부하를 줄이고, 빠르게 인증을 처리할 수 있습니다.
  • 표준화된 인증 방식: JWT는 OAuth2 및 OpenID Connect와 쉽게 연동되어 다양한 외부 인증 시스템과 호환됩니다.
  • 보안성 강화: 토큰 자체가 암호화되어 안전하게 정보가 전달됩니다.

5️⃣ Egress Gateway를 통한 외부 서비스와 보안 통신 설정

1 Egress Gateway 개요

Egress Gateway는 Istio에서 클러스터 외부와의 트래픽을 제어하는 역할을 합니다. 이를 통해 클러스터 외부와의 통신을 보안적으로 처리할 수 있습니다. 예를 들어, 외부 API와의 통신 시 Egress Gateway를 사용하여 보안 통신을 설정할 수 있습니다.

2 Egress Gateway 설정

Egress Gateway는 외부 서비스와의 통신에 대해 트래픽 라우팅, TLS 암호화, 인증 등의 보안을 적용할 수 있습니다.

📌 Egress Gateway 리소스 예시

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: egress-gateway
spec:
  selector:
    istio: egressgateway
  servers:
    - port:
        number: 443
        name: https
        protocol: HTTPS
      hosts:
        - "api.external.com"

3 Egress Gateway의 장점

  • 외부 통신 보호: 클러스터 외부와의 트래픽을 암호화하고, 인증을 통해 보안을 강화합니다.
  • 세밀한 통제: 외부 서비스와의 통신을 중앙 집중식으로 제어하여 보안을 강화할 수 있습니다.
  • 정책 기반 통신: 외부와의 통신에 대한 정책을 정의하여, 예상치 못한 보안 위험을 방지할 수 있습니다.
RSS Feed
마지막 수정일자