5. 사용자 정의 함수(UDF) 및 보안
Trino는 다양한 내장 함수를 제공하지만, 특정 비즈니스 로직이나 복잡한 계산을 위해 사용자 정의 함수(UDF)를 생성하여 기능을 확장할 수 있습니다. 또한, 데이터 액세스를 보호하기 위한 보안 설정도 중요합니다.
5.1. 사용자 정의 함수 (UDF) 생성
Trino UDF는 Java로 작성되며, Trino 서버에 플러그인 형태로 배포됩니다. 간단한 UDF 예시를 살펴보겠습니다.
다음은 입력 문자열을 대문자로 변환하는 UDF의 예시입니다. (실제 구현에는 빌드 및 배포 과정이 필요합니다.)
import io.trino.spi.function.Description;
import io.trino.spi.function.ScalarFunction;
import io.trino.spi.function.SqlType;
import io.trino.spi.type.StandardTypes;
import io.airlift.slice.Slice;
import io.airlift.slice.Slices;
public class MyStringFunctions
{
@Description("Converts a string to uppercase")
@ScalarFunction("my_upper")
@SqlType(StandardTypes.VARCHAR)
public static Slice myUpper(@SqlType(StandardTypes.VARCHAR) Slice input)
{
return Slices.utf8Slice(input.toStringUtf8().toUpperCase());
}
}
이 UDF를 배포하면 Trino 쿼리에서 SELECT my_upper(\'hello\');와 같이 사용할 수 있습니다.
5.2. Trino 보안 설정
Trino 환경을 보호하기 위한 주요 보안 기능은 다음과 같습니다.
- 인증 (Authentication): Trino 서버에 접속하는 사용자의 신원을 확인합니다. LDAP, Kerberos, JWT(JSON Web Token) 등을 지원합니다.
config.properties파일에 설정합니다. - 권한 부여 (Authorization): 인증된 사용자가 특정 카탈로그, 스키마, 테이블 또는 컬럼에 대해 어떤 작업을 수행할 수 있는지 정의합니다. SQL 표준 권한 부여 모델을 따르며,
etc/access-control.properties파일에서 구성합니다. - TLS/SSL: 클라이언트와 Trino 서버 간의 모든 통신을 암호화하여 데이터 가로채기를 방지합니다.
config.properties에http-server.https.enabled=true및 인증서 경로를 설정합니다. - 감사 로깅 (Audit Logging): 모든 쿼리 및 사용자 활동을 기록하여 보안 감사 및 모니터링을 가능하게 합니다.
이 5단계를 모두 완료했다면, 강력하고 안전한 Trino 기반 데이터 쿼리 환경을 구축하고 활용할 준비가 된 것입니다.