본문 바로가기
WIKI 기술 지식 베이스

Traefik APIKey 미들웨어

원문 보기 위키 갱신

출처: Traefik APIKey 미들웨어 (API Key Authentication)

본문

APIKey

Traefik Hub 기능

이 미들웨어는 Traefik Hub에서만 독점적으로 사용할 수 있어요. Traefik Hub의 고급 기능에 대해 자세히 알아보세요.

API Key 인증 미들웨어는 비밀 키가 HTTP 헤더, 쿠키 또는 쿼리 파라미터를 통해 전달되도록 요구해 API를 보호할 수 있게 해줘요. 이 비밀 키는 base64로 인코딩되어 있어도 되고 아니어도 돼요.

설정 예시

Middleware API Key

apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: test-apikey
  namespace: apps
spec:
  plugin:
    apiKey:
      ***
        headerAuthScheme: Bearer
        header: Authorization
      secretNonBase64Encoded: true
      secretValues:
        - "urn:k8s:secret:apikey:***
        - "urn:k8s:secret:apikey:*** 

Values Secret

apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: apikey
  namespace: whoami
stringData:
  secret: $2y$05$D4SPFxzfWKcx1OXfVhRbvOTH/QB0Lm6AXTk8.NOmU4rPLX2t6UUuW # htpasswd -nbB "" foo | cut -c 2-
  othersecret: $2y$05$HbLL.g5dUqJippH0RuAGL.RaM9wNS2cT7hp6.vbv5okdCmVBSDzzK # htpasswd -nbB "" bar | cut -c 2-

설정 옵션

| 필드 | 설명 | 기본값 | 필수 | | keySource.header | 클라이언트가 보낸 비밀을 담고 있는 헤더 이름을 정의해요. keySource.header 또는 keySource.query 또는 keySource.cookie 중 하나는 반드시 설정해야 해요. | "" | 아니요 | | keySource.headerAuthScheme | Authorization을 헤더 이름으로 사용할 때 스킴(scheme)을 정의해요. Authorization 헤더 문서를 확인하세요. | "" | 아니요 | | keySource.query | 클라이언트가 보낸 비밀을 담고 있는 쿼리 파라미터 이름을 정의해요. keySource.header 또는 keySource.query 또는 keySource.cookie 중 하나는 반드시 설정해야 해요. | "" | 아니요 | | keySource.cookie | 클라이언트가 보낸 비밀을 담고 있는 쿠키 이름을 정의해요. keySource.header 또는 keySource.query 또는 keySource.cookie 중 하나는 반드시 설정해야 해요. | "" | 아니요 | | secretNonBase64Encoded | 클라이언트가 보낸 비밀이 base64로 인코딩되어 있는지 여부를 정의해요. | false | 아니요 | | secretValues | API 키의 해시를 담고 있어요. 지원되는 해시 알고리즘은 Bcrypt, SHA1, MD5예요. 해시는 htpasswd로 생성해야 해요. URN 형식 urn:k8s:secret:[name]:[valueKey]으로 Kubernetes Secret을 참조할 수 있어요. | [] | 예 |

프로덕션에서 Traefik OSS를 사용 중이신가요?

직장에서 Traefik을 사용하고 있다면, 엔터프라이즈급 API 게이트웨이 기능이나 Traefik OSS용 상용 지원을 추가하는 걸 고려해 보세요.

  • API Gateway 데모 영상 보기

  • 24/7/365 OSS 지원 요청하기

Traefik OSS에 API 게이트웨이 기능을 추가하는 건 빠르고 매끄러워요. rip-and-replace 방식이 없고 모든 구성이 그대로 유지돼요. 짧은 영상으로 직접 확인해 보세요.

더 알아보기 (Learn more)