Carry secrets on sessions and deployments in an encrypted column
- Dominant language
- Python
- Stars
- 670
- Forks
- 183
- Avg merge
- 17h 7m
- Merged PRs (30d)
- 358
Description
세션과 deployment 가 비밀 값을 받을 수 있게 한다. 지금은 environ 에 평문으로 넣는 수밖에 없다.
### 지금 상태
- sessions.environ - JSONB, 평문. 세션에 넘길 환경변수가 전부 여기 들어간다
- deployment revision 의 environ - 같은 형태
API 키나 토큰 같은 비밀을 컨테이너에 넘기려면 지금은 environ 에 평문으로 넣어야 한다. DB 에 평문으로 남고, 세션·deployment 를 조회할 수 있는 사람이면 다 보인다.
### 할 일
세션과 deployment 에 secrets 값을 둔다. environ 과 분리한다 - 하나는 평문이고 하나는 암호문이므로 같은 자리에 담으면 어느 쪽인지 구분되지 않는다.
- 저장은 BA-7042 가 만든 암호화 컬럼을 쓴다 (manager/models/base.py 의 컬럼 타입, manager/secret/ 의 키 제공자·암복호기). 자기 기술형 포맷이라 키 회전을 따라간다
- 컨테이너에 전달할 때만 복호화한다. 조회 응답에는 값을 담지 않는다 - 키 이름만 답하거나 마스킹한다
- deployment 는 revision 단위인지 deployment 단위인지 정한다. revision 마다 다른 비밀을 쓸 수 있어야 하는지가 그 판단이다
### 정할 것
- 조회 시 무엇을 답하는가 - 키 이름만인가, 마스킹된 값인가, 아무것도 아닌가
- 수정이 되는가 - 값을 바꿀 수 있는가, 지우고 다시 넣어야 하는가
- 세션이 실행 중일 때 바뀐 비밀이 반영되는가, 다음 실행부터인가
- agent 로 전달하는 경로에서 평문이 어디까지 흐르는가. RPC 페이로드·로그·이벤트에 남지 않는지 확인한다
### 의존
BA-7042 (암호화 컬럼 기반) 머지됨.
JIRA Issue: BA-7480
Contributor guide
Research direction
Start with the encrypted column type in manager/models/base.py and the key provider and encryptor under manager/secret/, using BA-7042 as the dependency context. Trace session and deployment revision environment handling and the agent delivery path. Done requires resolving the storage scope, read and update behavior, runtime refresh semantics, and ensuring secrets do not leak through RPC payloads, logs, or events.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, python
- Domain
- backend-api-design, security
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100