Files
FESADev/docs/security.md
T

3.8 KiB

실행 권한과 데이터 취급

현재 사용 환경

FESA는 개인 연구용으로 로컬 입력 파일을 읽고 로컬 결과를 저장하는 솔버다. 사용자에게 별도의 데이터 분류·보안 정책은 없다. 고객 기밀이 없다고 단정하거나 모델의 외부 전송이 허용되었다고 해석하지 않는다. 외부 배포는 계획이며, 공개 서비스 인증·계정·권한 관리가 현재 구현된 것으로 설명하지 않는다.

현재 CLI에는 별도 로그인·토큰·비밀번호 수명주기가 없다. 실행 파일과 입력·결과에 대한 접근 권한은 운영체제의 실행 계정과 파일 권한에 따른다. 잘못된 자격증명·만료·계정 잠금에 대한 솔버 응답은 적용 대상이 아니다. 이후 서버나 계정 기능이 추가되면 새 정책과 실패 경로를 정의해야 하며 로컬 실행 권한을 그대로 서버 권한 모델로 사용하지 않는다.

보호 대상과 허용 범위

주체 동작 조건과 경계
로컬 해석 사용자 입력을 읽고 결과·로그 생성 실행 계정이 경로에 접근할 수 있어야 한다. OS 접근 거부를 우회하지 않는다.
솔버 프로세스 같은 입력의 결과·로그 쓰기 Output write lease 획득 후 수행한다. Lease 충돌 시 새 쓰기를 시작하지 않는다.
개발 담당자 요청한 소스·문서·테스트 수정 요청 범위의 일반 작업은 진행하고 관련 없는 사용자 변경은 보존한다.
개발 담당자 Reference 생성·변경·복원 해당 작업이 명시적으로 요청되어야 한다. 구현의 실패를 없애기 위한 데이터 보정은 허용하지 않는다.
개발 담당자 외부 solver·라이선스·자격증명·비용 사용 기존 승인 범위가 없으면 사용자 결정이 필요하다. 파일의 존재가 실행 허가를 뜻하지 않는다.
개발 담당자 Commit·push·tag·publish·release 각각 요청된 범위에 한정한다. 검증 실행기가 이 권한을 부여하지 않는다.

입력과 실행의 신뢰 경계

.inp는 모델 데이터다. 지원하지 않는 keyword를 외부 명령이나 파일 포함으로 실행하지 않는다. 문법·참조·물성 검사는 해석 의미를 보호하지만, 악의적인 입력에 대한 자원 제한이나 프로세스 격리가 입증되었다는 뜻은 아니다. 외부에서 받은 임의 모델을 안전하게 실행하는 서비스라는 보장은 현재 없다.

빌드 설정, CMake preset, 실행할 프로그램과 스크립트는 코드 실행 권한을 가진 입력이다. 작업 디렉터리 검사·shell=False·timeout은 실행 파일의 모든 부작용을 차단하지 못한다. 신뢰하지 않는 설정을 단순 데이터로 보고 자동 실행하지 않는다.

Output lease는 동시 쓰기 충돌 방지 장치다. 파일 ACL이나 사용자 인증을 대신하지 않는다. 결과 경로의 lexical 의미와 OS가 해석하는 symlink·junction의 실제 위치도 구별한다.

기록과 배포 시 남은 결정

솔버 진단에는 source 파일 경로, 줄 번호, keyword, entity identity와 오류 설명이 들어갈 수 있다. 모델·결과·진단을 외부 공유할 때 경로와 모델 정보가 포함될 수 있음을 확인한다. 현재 별도의 암호화·자동 마스킹·보존기간·사용자 접근 감사 정책은 정해져 있지 않다. 수치 실행 로그를 보안 감사 로그로 간주하지 않는다.

개인 dependency 경로와 자격증명을 공용 문서나 버전 관리에 넣지 않는다. 향후 외부 배포 전에 배포 방식, dependency 재배포 권리, 입력 신뢰 범위와 데이터 취급 방침을 결정해야 한다. 이는 현재 기능 완료의 새 조건이나 배포 승인 기록이 아니다.