Traefik BasicAuth 미들웨어
본문
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 방식이 없고 모든 구성이 그대로 유지돼요. 짧은 영상으로 직접 확인해 보세요.