인증과 인가

인증과 인가 (Authentication & Authorization)

인증과 인가는 밀접한 개념으로, 줄여서 AuthNAuthZ라고 부릅니다. 인증(AuthN) 은 사용자가 누구인지 검증하는 과정이고, 인가(AuthZ) 는 그 사용자가 어떤 권한을 갖는지 결정하는 과정이에요. Weaviate는 사용자 인증을 API 키 또는 OpenID Connect(OIDC) 로 제어하고, 익명 접근(anonymous access) 옵션도 제공합니다. 인증된 사용자는 이후 서로 다른 인가 수준을 부여받아요.

출처: 공식문서 - Authentication and authorization

상황부터 — 인증과 인가를 구분하자

예를 들어 API 키 jane-secret으로 로그인한 사용자에게는 관리자 권한을, ian-secret으로 로그인한 사용자에게는 읽기 전용 권한을 줄 수 있어요. 즉 인증(누구인지)은 같아도 인가(무엇을 할 수 있는지)는 다르게 부여할 수 있습니다.

API 키와 OIDC 인증은 동시에 활성화할 수 있어요. Weaviate에 인증하려면 클라이언트 라이브러리를 쓰는 것을 권장합니다. Weaviate Cloud(WCD) 인스턴스는 API 키 접근으로 사전 구성돼 있어서, 새 API 키를 만들어 인증하면 됩니다.

API 키 인증

Weaviate에 인증하는 가장 단순한 방법이에요. 각 사용자에게 고유 API 키를 부여하고, 요청 헤더에 키를 실어 보냅니다. 환경변수(예: AUTHENTICATION_APIKEY_ENABLED, AUTHENTICATION_APIKEY_ALLOWED_KEYS, AUTHENTICATION_APIKEY_USERS)로 구성해요.

AUTHENTICATION_APIKEY_ENABLED: 'true'
AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'user-a-key,user-b-key'
AUTHENTICATION_APIKEY_USERS: 'user-a,user-b'

OIDC 인증

OIDC는 외부 ID 제공자(예: Okta, Azure AD, Google)를 통한 인증이에요. 클라이언트 자격 증명(client credentials), 리소스 소유자 패스워드(resource owner password), 하이브리드 플로우 등 여러 플로우를 지원합니다.

OIDC 인증은 토큰 발급자(issuer)로부터 유효한 토큰을 받아 REST·GraphQL 요청의 헤더에 넣어 보내는 방식이에요. Weaviate가 토큰(JWT)을 받으면 구성된 토큰 발급자가 실제로 서명했는지 검증하고, 서명이 맞으면 토큰 내용을 신뢰해 그 정보로 사용자를 인증합니다.

익명 접근 (Anonymous access)

익명 접근은 인증 없는 요청을 허용합니다. 모든 신원 검증을 우회하므로, 로컬 개발·평가 목적 외에는 강력히 권장하지 않아요.

인가 스킴

Weaviate는 사용자 인증 상태에 따라 서로 다른 접근(인가 수준)을 부여해요. 사용할 수 있는 인가 스킴은 세 가지예요.

  • RBAC(Role-Based Access Control) — 사용자 권한을 세밀하게 제어. 역할(role)을 정의하고 권한을 부여해 사용자에게 할당. 생산 배포의 권장 인가 스킴이에요.
    • 사전 정의 역할: root(전체 접근), viewer(읽기 전용)
    • 커스텀 역할: 컬렉션·객체·테넌트·백업 등에 특정 권한 부여
    • 세분화: 이름 필터와 정규식 패턴으로 컬렉션·테넌트·연산 수준 접근 제어
  • Admin list — 사용자를 admin(전체 접근) 또는 read-only(읽기 전용)로만 나눔. 세밀한 제어는 불가. RBAC로 더 유연하고 안전하게 관리하는 것을 권장하며, RBAC와 병행 사용 불가.
  • 무차별 접근(Undifferentiated access) — 모든 인증 사용자에게 전체 접근. 개발·신뢰된 단일 사용자 환경에서만 적합.

익명 사용자는 Weaviate에서 anonymous로 식별됩니다. Admin list 스킴에서만 익명 사용자에게 권한을 부여할 수 있고, RBAC는 익명 사용자와 호환되지 않아요.

요약

  • 인증(AuthN)은 "누구인가", 인가(AuthZ)는 "무엇을 할 수 있는가".
  • 인증: API 키(가장 단순) / OIDC(외부 IdP) / 익명(개발 전용).
  • 인가: RBAC(권장) / Admin list / 무차별 접근.
  • 생산 배포는 API 키 or OIDC 인증 + RBAC 인가 조합이 기본.

더 알아보기 (Learn more)