환경 변수와 시크릿 관리, 어디까지 해야 하나
·
IT
데이터베이스 비밀번호를 어디에 두는지 물어보면 답이 제각각이다. .env 파일, 도커 이미지 안, 배포 스크립트, 심지어 저장소 안에 커밋된 설정 파일까지 나온다. 이 글은 시크릿을 다루는 단계별 기준과, 사고가 났을 때 무엇을 해야 하는지를 정리한다.설정과 시크릿은 다르다먼저 구분이 필요하다. 둘을 같이 다루면 규칙이 흐려진다.설정은 환경마다 다른 값이지만 노출돼도 피해가 없는 것이다. API 기본 URL, 로그 레벨, 타임아웃, 기능 플래그 같은 것들이다. 저장소에 넣어도 된다.시크릿은 노출되면 피해가 생기는 것이다. 데이터베이스 비밀번호, API 키, 서명 키, 인증서 개인키, OAuth 클라이언트 시크릿.기준은 단순하다. 이 값을 슬랙 공개 채널에 붙여넣어도 괜찮은가. 안 된다면 시크릿이다.절대 ..
JWT와 세션, 무엇을 골라야 하나
·
IT
로그인을 구현할 때 세션과 JWT 중 무엇을 쓸지 정해야 한다. 검색해 보면 "JWT는 확장성이 좋다", "세션은 안전하다" 같은 요약이 나오는데, 둘 다 절반만 맞는 말이다. 이 글은 둘의 실제 차이와, 선택을 가르는 조건을 정리한다. 결론부터 말하면 로그아웃을 즉시 반영해야 한다면 세션 쪽이 훨씬 단순하다.근본적인 차이는 상태를 어디에 두는가세션 방식은 서버가 상태를 갖는다. 로그인하면 서버가 세션을 만들어 저장소에 넣고, 클라이언트에는 세션 ID만 쿠키로 준다. 요청이 올 때마다 그 ID로 저장소를 조회한다.JWT 방식은 서버가 상태를 갖지 않는다. 로그인하면 사용자 정보를 담고 서명한 토큰을 준다. 요청이 오면 서명만 검증하면 되고, 저장소 조회가 없다.여기서 모든 장단점이 파생된다.JWT 의 장..