
새로 여는 DB 포트는 없다
AI 도입 검토 회의에서 IT팀이 받은 요청은 "AI 서버가 접속할 수 있게 DB 포트를 열어 달라"였습니다. 그 DB는 사내망 깊숙이 방화벽 뒤에 있고, 바깥에서 들어오는 길은 운영자들이 쓰는 SSH 배스천(사내망으로 들어가는 관문 서버) 하나뿐입니다. 보안 책임자라면 포트를 새로 여는 일도, 배스천 계정을 AI에 내주는 일도 내키지 않습니다. 길을 열어 준 뒤에는 그 길로 데이터가 평문으로 오가지 않는지도 걱정입니다.
DB 포트를 새로 열 필요는 없습니다. OwlAI는 이미 있는 배스천을 거쳐 SSH 터널로 DB에 닿습니다. 배스천 계정의 비밀번호나 개인키는 받지 않고, 배스천에는 OwlAI가 쓸 줄 한 줄만 넣습니다. DB까지 오가는 데이터는 TLS로 암호화하고, 접속할 때마다 DB 서버의 인증서까지 확인합니다.
배스천에는 줄 한 줄만 넣는다
OwlAI는 조직마다 자기 SSH 키를 만들어 보관하고, 연결 화면은 배스천 계정의 authorized_keys에 넣을 줄 하나를 보여 줍니다. 이 줄로 로그인하면 셸도 명령 실행도 막혀 있고, 줄에 적힌 DB 주소로 가는 길만 열립니다. OwlAI가 배스천에 들어가 다른 서버를 둘러볼 방법이 없습니다. 줄의 구성과 배스천 쪽 설정은 「배스천에는 계정 대신 DB 포워딩만 여는 키 한 줄을 넣는다」에서 자세히 다룹니다.
배스천을 확인하는 장치도 있습니다. 처음 등록할 때 관리자는 화면에 뜬 배스천의 호스트키 지문(배스천마다 고유한 식별값)을 배스천 관리자에게 받은 값과 대조합니다. 그 뒤로는 지문이 정확히 같을 때만 접속하므로, 누군가 배스천 주소를 가로채 다른 서버로 돌려도 OwlAI는 그 서버에 붙지 않습니다. 배스천을 재설치해 지문이 바뀌어도 관리자가 다시 확인하기 전까지는 접속하지 않습니다.
터널은 조회를 실행할 때 열리고 조회가 끝나면 닫힙니다. OwlAI와 배스천 사이에 늘 열어 두는 연결이 남지 않습니다.
SaaS라면 허용할 주소가 정해져 있다
구축형은 OwlAI가 고객 망 안에 설치되므로, 배스천의 SSH 포트에 OwlAI 서버의 주소만 허용하면 됩니다. SaaS에서는 OwlAI가 고객 망 밖에서 접속합니다. 그래서 사설 주소의 DB를 바로 등록할 수 없고, 공개 주소의 배스천을 거쳐 연결합니다. OwlAI가 고객 쪽으로 접속할 때 나가는 주소는 정해져 있어서, 연결 화면의 방화벽 허용 주소에 그 주소가 나옵니다. 배스천 방화벽에는 그 주소만 허용합니다. 인터넷 전체에 SSH를 열 필요가 없습니다.
DB까지 암호화하고, 인증서로 상대를 확인한다
SSH 터널은 OwlAI에서 배스천까지를 암호화합니다. 배스천에서 DB까지의 사내망 구간까지 암호화하려면 TLS를 함께 씁니다. TLS는 터널 안을 지나 DB까지 이어지고, 등록 창에서 처음부터 켜져 있습니다.
TLS를 켜면 OwlAI는 DB 서버의 인증서와 이름을 반드시 확인합니다. 믿을 수 없는 기관이 발급했거나 이름이 다른 인증서면 접속하지 않습니다. 확인 없는 암호화는 중간에 끼어든 서버와도 암호화된 대화를 나눌 수 있기 때문입니다. 공인 인증서를 쓰는 DB는 따로 넣을 것이 없고, 사내 인증 기관이 발급한 인증서라면 그 기관의 인증서를 연결에 붙여 넣습니다.
TLS를 쓰지 않는 DB라면 끌 수 있습니다. 그때 터널도 거치지 않는 연결이면 연결 목록에 암호화되지 않은 연결이 표시됩니다. 보안 담당자는 평문으로 오갈 수 있는 연결을 목록에서 바로 찾아낼 수 있습니다.
도입 전에 확인할 것
사내망 DB를 OwlAI에 연결하기 전에 아래를 IT 부서·배스천 관리자와 맞춰 둡니다.
- DB 앞 배스천이 OpenSSH 7.2 이상인지
- 셸 로그인을 막은 OwlAI 전용 배스천 계정
- 배스천 관리자에게 받아 둘 호스트키 지문
- 배스천 SSH 포트에 허용할 OwlAI 주소(SaaS는 연결 화면의 방화벽 허용 주소)
- DB의 TLS 사용 여부, 사내 인증 기관을 쓴다면 그 인증서
어떤 기술로 풀었을까요?
회사 DB에 묻기의 다른 글

인사이트 · 회사 DB에 묻기
AI가 짠 SQL은 돌아가는데, 매출 숫자는 왜 틀릴까
데모에서는 감탄이 나옵니다. "지난달 가장 많이 팔린 제품 다섯 개"를 묻자마자 AI가 SQL(데이터베이스 조회 언어)을 짜서 정확한 답을 내놓습니다.

인사이트 · 회사 DB에 묻기
부서마다 매출을 다르게 센다면, AI는 누구 기준으로 답할까
경영회의에서 영업본부는 매출이 12% 늘었다고 보고하고, 재무팀은 8%라고 말합니다. 둘 다 틀리지 않았습니다.

인사이트 · 회사 DB에 묻기
운영 DB에 AI를 붙이자는 말에 보안팀이 묻는 세 가지
업무 DB에 AI를 연결하자는 이야기가 나오면 DB 관리자와 보안팀은 같은 질문 세 개를 꺼냅니다. AI가 실수로 데이터를 지우면 어떻게 하나.
