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

Traefik BasicAuth 미들웨어

원문 보기 위키 갱신

출처: Traefik BasicAuth 미들웨어 (BasicAuth Documentation)

본문

BasicAuth

basicAuth 미들웨어는 인증된 사용자에게만 서비스에 대한 접근을 허용해줘요.

설정 예시

구조화 (YAML)

# 사용자 목록 선언
http:
  middlewares:
    test-auth:
      basicAuth:
        users:
          - "test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/"
          - "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"

구조화 (TOML)

# 사용자 목록 선언
[http.middlewares]
  [http.middlewares.test-auth.basicAuth]
  users = [
    "test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
    "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0",
  ]

Labels

# 사용자 목록 선언
#
# 참고: docker-compose.yml에서 사용할 때는 이스케이프를 위해 해시의 모든 달러 기호를 두 배로 늘려야 해요.
# user:password 쌍을 만들려면 다음 명령을 사용할 수 있어요:
# echo $(htpasswd -nB user) | sed -e s/\\$/\\$\\$/g
#
# 또한, 평가되지 않는 경우(예: Ansible docker_container 모듈) 달러 기호를 두 배로 늘리면 안 된다는 점도 참고하세요.
labels:
  - "traefik.http.middlewares.test-auth.basicauth.users=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/,test2:$$apr1$$d9hr9HBB$$4HxwgUir3HP4EsggP/QNo0"

Tags

{
  // ...
  "Tags": [
    "traefik.http.middlewares.test-auth.basicauth.users=test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/,test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"
  ]
}

Kubernetes

# 사용자 목록 선언
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: test-auth
spec:
  basicAuth:
    secret: secretName

설정 옵션

| 필드 | 설명 | 기본값 | 필수 | | users | 인증된 사용자 배열이에요. 각 사용자는 name:hashed-password 형식으로 선언해야 해요. (자세한 내용은 여기) | "" | 아니요 | | usersFile | 미들웨어의 인증된 사용자를 담고 있는 외부 파일 경로예요. 파일 내용은 name:hashed-password 목록이에요. (자세한 내용은 여기) | "" | 아니요 | | realm | 인증의 realm을 커스터마이징할 수 있어요. | "traefik" | 아니요 | | headerField | 인증된 사용자를 저장할 헤더 필드를 정의할 수 있어요. | "" | 아니요 | | removeHeader | 요청을 서비스로 전달하기 전에 인증 헤더를 제거할 수 있어요. | false | 아니요 |

비밀번호 형식

비밀번호는 MD5, SHA1 또는 BCrypt로 해시해야 해요. 비밀번호를 생성하려면 htpasswd를 사용하세요.

users & usersFile

  • users와 usersFile을 모두 제공하면 병합돼요. users의 값이 usersFile의 내용보다 우선해요.

  • Kubernetes에서는 파일 경로를 참조할 수 없기 때문에, Kubernetes IngressRoute에서는 users 및 usersFile 필드를 사용하지 않아요. 대신 secret 필드를 사용하세요.

Kubernetes Secrets

users 옵션은 Kubernetes secrets를 지원해요.

Kubernetes kubernetes.io/basic-auth secret 유형

Kubernetes는 특별한 kubernetes.io/basic-auth secret 유형을 지원해요. 이 secret은 username과 password 두 개의 키를 담고 있어야 해요.

이 키들은 어떤 방식으로도 해시되거나 암호화되지 않으므로, 다른 방법보다 덜 안전하다는 점을 참고하세요. 자세한 내용은 Kubernetes Basic Authentication Secret 문서에서 확인할 수 있어요.

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

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

  • API Gateway 데모 영상 보기

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

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

더 알아보기 (Learn more)