배경 및 현상
Tumblebug RDBMS 라이프사이클 테스트 중 OpenStack 환경에서 데이터베이스(sampledb) 생성 이후, Remote 및 Internal Data I/O 테스트 단계에서 아래와 같이 MySQL Error 1044 (Access Denied)가 발생하며 실패하는 현상을 확인했습니다.
open: Error 1044 (42000): Access denied for user 'admin'@'%' to database 'sampledb'
(타 8종 CSP(AWS, Azure, GCP, Alibaba, Tencent, IBM, NCP, NHN): 완전관리형 DB 플랫폼 차원에서 마스터 계정에 전역 관리자 권한(ALL PRIVILEGES)이 자동 부여되므로 Data I/O 테스트가 정상 통과(Pass))
원인 분석 및 관련 로그
OpenStack Trove는 사용자 생성 시 기본적으로 권한이 없는 상태(GRANT USAGE ON *.*)로 생성됩니다. Spider 드라이버는 이를 타 CSP와 맞추기 위해 grantAdminPrivileges()를 통해 root로 접속하여 admin에게 GRANT ALL PRIVILEGES ON *.*를 부여하도록 구현되어 있으나, 주소 조합 시 포트가 중복되는 버그로 인해 실패하고 있습니다.
-
포트 중복 포맷팅:
convertInstanceToRDBMSInfo (L845)에서 이미 rdbmsInfo.Endpoint에 기본 포트가 붙어 "183.111.177.152:3306" 형태로 반환됩니다.
CreateRDBMS (L458)에서 grantAdminPrivileges(rdbmsInfo.Endpoint, defaultPort, ...)를 호출하면서 포트가 한 번 더 결합되어 DSN이 tcp(183.111.177.152:3306:3306) 형태로 생성됩니다.
-
발생하는 오류 및 로그:
-
결과:
admin 계정에 전역 권한이 부여되지 못했고, 이후 CreateDatabase로 새 데이터베이스(sampledb)가 생성되어도 admin에게 해당 DB 권한이 없어 실제 SQL 접근 시 Error 1044가 발생합니다.
검토 요청
grantAdminPrivileges 호출 또는 내부 주소 조합 시 이미 포트가 포함된 엔드포인트를 안전하게 파싱하도록 보완하는 방향에 대해 검토 부탁드립니다.
배경 및 현상
Tumblebug RDBMS 라이프사이클 테스트 중 OpenStack 환경에서 데이터베이스(
sampledb) 생성 이후, Remote 및 Internal Data I/O 테스트 단계에서 아래와 같이 MySQL Error 1044 (Access Denied)가 발생하며 실패하는 현상을 확인했습니다.(타 8종 CSP(AWS, Azure, GCP, Alibaba, Tencent, IBM, NCP, NHN): 완전관리형 DB 플랫폼 차원에서 마스터 계정에 전역 관리자 권한(
ALL PRIVILEGES)이 자동 부여되므로 Data I/O 테스트가 정상 통과(Pass))원인 분석 및 관련 로그
OpenStack Trove는 사용자 생성 시 기본적으로 권한이 없는 상태(
GRANT USAGE ON *.*)로 생성됩니다. Spider 드라이버는 이를 타 CSP와 맞추기 위해grantAdminPrivileges()를 통해root로 접속하여admin에게GRANT ALL PRIVILEGES ON *.*를 부여하도록 구현되어 있으나, 주소 조합 시 포트가 중복되는 버그로 인해 실패하고 있습니다.포트 중복 포맷팅:
convertInstanceToRDBMSInfo(L845)에서 이미rdbmsInfo.Endpoint에 기본 포트가 붙어"183.111.177.152:3306"형태로 반환됩니다.CreateRDBMS(L458)에서grantAdminPrivileges(rdbmsInfo.Endpoint, defaultPort, ...)를 호출하면서 포트가 한 번 더 결합되어 DSN이tcp(183.111.177.152:3306:3306)형태로 생성됩니다.발생하는 오류 및 로그:
grantAdminPrivileges내부에서sql.Open/ExecContext실행 시 다음과 같은 네트워크 주소 파싱 오류가 발생합니다:이로 인해
CreateRDBMS(L459)에서 다음 경고 로그가 남게 됩니다:결과:
admin계정에 전역 권한이 부여되지 못했고, 이후CreateDatabase로 새 데이터베이스(sampledb)가 생성되어도admin에게 해당 DB 권한이 없어 실제 SQL 접근 시Error 1044가 발생합니다.검토 요청
grantAdminPrivileges호출 또는 내부 주소 조합 시 이미 포트가 포함된 엔드포인트를 안전하게 파싱하도록 보완하는 방향에 대해 검토 부탁드립니다.