시스템 속성
시스템 속성 (System Properties)
Kafka는 Java 시스템 속성(system property)으로 켜고 끌 수 있는 설정 일부를 지원해요. 시스템 속성은 보통 Kafka 컴포넌트가 실행 중인 Java 가상 머신(JVM)에 -D 플래그를 넘겨 설정해요. 아래는 지원되는 시스템 속성들이에요.
출처: 문서
본문
org.apache.kafka.sasl.oauthbearer.allowed.files
SASL OAUTHBEARER 플러그인이 읽을 수 있는 파일을 결정하는 데 쓰는 시스템 속성이에요. 파일 목록을 쉼표로 구분해서 받아요. 기본값은 빈 목록이에요. 특정 파일을 허용하려면 다음과 같이 시스템 속성을 명시적으로 설정해야 해요.
-Dorg.apache.kafka.sasl.oauthbearer.allowed.files=/tmp/token,/tmp/private_key.pem
| 항목 | 값 |
|---|---|
| Since (도입 버전) | 4.1.0 |
| 기본값 | (빈 목록) |
org.apache.kafka.sasl.oauthbearer.allowed.urls
SASL OAUTHBEARER 토큰 또는 jwks 엔드포인트로 허용할 URL을 설정하는 시스템 속성이에요. URL 목록을 쉼표로 구분해서 받아요. 기본값은 빈 목록이에요. 특정 URL을 허용하려면 다음과 같이 시스템 속성을 명시적으로 설정해야 해요.
-Dorg.apache.kafka.sasl.oauthbearer.allowed.urls=https://www.example.com,file:///tmp/token
| 항목 | 값 |
|---|---|
| Since (도입 버전) | 4.0.0 |
| 기본값 | (빈 목록) |
org.apache.kafka.disallowed.login.modules
SASL JAAS 구성에서 문제가 있는 로그인 모듈(log-in module) 사용을 비활성화하는 데 쓰는 시스템 속성이에요. loginModule 이름 목록을 쉼표로 구분해서 받아요. 기본적으로 com.sun.security.auth.module.JndiLoginModule과 com.sun.security.auth.module.LdapLoginModule loginModule이 비활성화돼 있어요.
JndiLoginModule이나 LdapLoginModule을 활성화하려면 다음과 같이 시스템 속성을 명시적으로 재설정해야 해요. 구성을 검증하고 신뢰할 수 있는 JNDI 구성만 허용하는 걸 권장해요. 자세한 내용은 CVE-2023-25194를 참고해요.
-Dorg.apache.kafka.disallowed.login.modules=
더 많은 loginModule을 비활성화하려면 loginModule 이름을 쉼표로 구분해 시스템 속성을 갱신해요. 다음처럼 쉼표로 구분한 목록에 JndiLoginModule 모듈 이름을 반드시 명시적으로 추가해줘야 해요.
-Dorg.apache.kafka.disallowed.login.modules=com.sun.security.auth.module.JndiLoginModule,com.ibm.security.auth.module.LdapLoginModule,com.ibm.security.auth.module.Krb5LoginModule
이 구성은 비권장(deprecated) 처리되어 향후 릴리스에서 제거될 예정이에요. org.apache.kafka.allowed.login.modules를 사용해 주세요.
| 항목 | 값 |
|---|---|
| Since (도입 버전) | 3.4.0 |
| Deprecated (비권장 버전) | 4.2.0 |
| 기본값 | com.sun.security.auth.module.JndiLoginModule,com.sun.security.auth.module.LdapLoginModule |
org.apache.kafka.allowed.login.modules
SASL JAAS 구성에서 특정 로그인 모듈을 명시적으로 허용하는 시스템 속성이에요. 로그인 모듈 클래스 이름 목록을 쉼표로 구분해서 받아요. 이 속성은 비권장된 org.apache.kafka.disallowed.login.modules 속성의 더 엄격한 허용 목록(allowed-list) 기반 대안이에요. JAAS 구성의 보안을 강화하려면 이 속성을 사용하는 걸 권장해요.
두 속성이 모두 설정되면 org.apache.kafka.allowed.login.modules가 우선해요.
| 항목 | 값 |
|---|---|
| Since (도입 버전) | 4.2.0 |
| 기본값 | (빈 목록) |
org.apache.kafka.automatic.config.providers
Apache Kafka에서 ConfigProvider 구현의 자동 로딩을 제어하는 시스템 속성이에요. ConfigProvider는 파일, 디렉토리, 환경 변수 같은 소스에서 설정 값을 동적으로 공급하는 데 쓰여요. 이 속성은 ConfigProvider 이름 목록을 쉼표로 구분해서 받아요. 기본적으로 FileConfigProvider, DirectoryConfigProvider, EnvVarConfigProvider를 포함한 모든 내장 ConfigProvider가 활성화돼 있어요.
모든 자동 ConfigProvider를 비활성화하려면 다음과 같이 시스템 속성을 명시적으로 설정해야 해요. 설정 데이터가 신뢰할 수 없는 소스에서 오는 환경이나 보안 강화가 필요한 환경에서는 자동 ConfigProvider 비활성화를 권장해요. 자세한 내용은 CVE-2024-31141을 참고해요.
-Dorg.apache.kafka.automatic.config.providers=none
특정 ConfigProvider만 허용하려면 완전한(fully qualified) ConfigProvider 클래스 이름을 쉼표로 구분해 설정해요. 예를 들어 EnvVarConfigProvider만 활성화하려면 다음과 같이 설정해요.
-Dorg.apache.kafka.automatic.config.providers=org.apache.kafka.common.config.provider.EnvVarConfigProvider
여러 ConfigProvider를 사용하려면 다음과 같이 이름을 쉼표로 구분한 목록으로 포함해요.
-Dorg.apache.kafka.automatic.config.providers=org.apache.kafka.common.config.provider.FileConfigProvider,org.apache.kafka.common.config.provider.EnvVarConfigProvider
| 항목 | 값 |
|---|---|
| Since (도입 버전) | 3.8.0 |
| 기본값 | 모든 내장 ConfigProvider 활성화 |
더 알아보기 (Learn more)
- 시스템 속성은 JVM에
-D플래그로 전달돼요. Kafka 설정 파일이 아니라 JVM 시동 옵션에 넣어야 해요. - 로그인 모듈 허용은
org.apache.kafka.allowed.login.modules를 쓰는 게 보안상 더 안전해요.