초보가 실제로 당하는 사고는 대형 해킹이 아니다. 키 하나 잘못 둔 것, 알림 하나 안 켠 것에서 난다. 그래서 보안은 실력이 아니라 습관의 문제다.
이 글 3줄 요약
- 초보가 당하는 사고는 해킹이 아니라 API 키 노출과 과금 폭탄 두 가지다. 습관 4개면 코딩을 몰라도 막을 수 있다.
- 4가지 습관은 키 분리, 권한 최소화, 과금 알림, 백업이다. 각각 금고, 열쇠, 계량기, 화재보험에 빗대면 외운다.
- 공통 원리 하나. 돈과 데이터는 터진 뒤에는 늦다. 알림도 백업도 사고가 나기 전에 미리 걸어둬야 의미가 있다.
이 글은 AI 바이브코딩 강의 12부작 시리즈의 11편이다. 처음 오셨다면 1편부터 보면 흐름이 이어진다.
오늘의 질문: 보안은 전문가나 챙기는 거 아냐?
"보안이니 비용이니, 그거 전문가나 챙기는 거 아냐? 초보인 나는 그냥 만들기만 하면 되는 거 아냐?"
많은 초보가 이렇게 생각한다. 그리고 이게 바로 사고가 나는 지점이다.
결론부터 말하면 아니다. 초보가 실제로 당하는 사고는 뉴스에 나오는 대형 해킹이 아니다. 비밀번호를 코드에 적어둔 것 하나, 결제 알림을 안 켠 것 하나에서 난다. 규모가 크고 정교한 공격에 뚫리는 게 아니라, 아주 사소한 습관 하나를 안 지켜서 당한다.
그래서 보안은 실력의 문제가 아니라 습관의 문제다. 어려운 기술을 몰라서 사고가 나는 게 아니라, 쉬운 순서를 안 밟아서 난다. 오늘 배울 습관 4개를 몸에 붙이면, 코딩을 깊이 몰라도 대부분의 사고를 막을 수 있다.
지켜야 할 건 딱 4가지 습관뿐
보안이라고 하면 배울 게 산더미처럼 느껴지지만, 초보 단계에서 실제로 필요한 건 4가지가 전부다. 각각을 일상 비유 하나씩과 함께 외워두면 잊지 않는다.
| 습관 | 한 줄 정의 | 일상 비유 |
|---|---|---|
| 키 분리 | API 키 같은 비밀 값을 코드에 직접 쓰지 않고 따로 뺀다 | 비밀번호는 금고에, 전단지엔 안 붙인다 |
| 권한 최소화 | 사람에게도 AI에게도 꼭 필요한 권한만 준다 | 알바에겐 포스기 열쇠만, 금고 열쇠는 안 준다 |
| 과금 알림 | 쓴 만큼 돈이 나가는 서비스는 한도와 알림을 먼저 건다 | 수도 계량기, 터지고 나서 알면 늦다 |
| 백업 | 되돌릴 수 없는 작업 전에 복사본을 만든다 | 화재보험, 사고 나기 전에 든다 |
여기서 API 키란 프로그램이 외부 서비스를 이용할 때 쓰는 출입증이자 비밀번호다. 이 키만 있으면 누구든 내 계정으로 그 서비스를 쓸 수 있다는 게 핵심이다.
이제 이 4가지를 하나씩, 왜 그렇게 하는지까지 풀어보자.
습관 1 — 키 분리: 금고 비밀번호를 유리문에 붙이지 마라
4가지 중 가장 중요한 하나다. 그래서 제일 먼저, 가장 자세히 본다.
API 키를 코드에 직접 적어두는 건, 금고 비밀번호를 가게 유리문에 붙여두는 것과 같다. 왜냐하면 코드는 언제든 남에게 보일 수 있는 전단지이기 때문이다. 깃허브에 올리는 순간, 화면을 공유하는 순간, 남에게 코드를 보여주는 순간 그 안에 적힌 키까지 같이 노출된다.
키가 노출되면 무슨 일이 벌어질까. 그 키를 주운 사람이 내 계정으로 서비스를 마음껏 쓴다. 그리고 그 요금은 전부 나에게 청구된다. 남이 내 돈으로 파티를 여는 셈이다.
그래서 방법은 이렇다. 실제 키는 코드가 아니라 .env라는 별도 파일에 넣는다. .env는 비밀 값만 따로 모아두는 쪽지 파일이라고 생각하면 된다. 그리고 이 .env 파일을 .gitignore에 등록한다. .gitignore는 "이 파일들은 깃에 올리지 마"라고 적어두는 목록이다. 이렇게 하면 실제 키는 금고 속 쪽지에만 있고, 남에게 보이는 코드(전단지)에는 "금고에서 꺼내 써"라는 지시만 남는다.
정리하면 이렇다.
| 구분 | 위험한 방식 | 안전한 방식 |
|---|---|---|
| 키를 두는 곳 | 코드에 직접 적음 | .env 파일에만 넣음 |
| 깃 업로드 | 코드와 함께 올라감 | .gitignore로 제외 |
| 남에게 보이면 | 키까지 노출, 내 돈으로 씀 | 지시문만 보임, 키는 안 보임 |
좋은 소식이 있다. 이걸 직접 손으로 세팅할 필요가 없다. AI에게 "키는 코드에 넣지 말고 .env에 넣고 .gitignore에 추가해줘"라고 말하면 알아서 해준다. 이 한 문장만 기억하면 첫 번째 습관은 끝이다.
습관 2 — 권한 최소화: 열쇠는 필요한 만큼만, 특히 AI에게
두 번째 습관은 권한을 필요한 만큼만 주는 것이다. 사람에게도, 그리고 특히 AI에게 그렇다.
먼저 사람과 서비스 쪽부터 보자. 새 서비스에 가입할 때 요구하는 권한을 다 켜지 말자. "이 앱이 정말 내 파일 전체를 삭제할 권한까지 필요한가?"를 한 번 되물어보는 습관이다. 알바에게 포스기 열쇠는 주되, 금고 열쇠까지 줄 필요는 없는 것과 같다.
더 중요한 건 AI 쪽이다. 에이전트, 즉 스스로 알아서 일하는 AI는 시키면 진짜로 지운다. 사람처럼 "이거 지워도 되나?" 하고 한 번 더 망설이지 않는다. 그래서 "되돌릴 수 없는 작업은 실행하기 전에 나한테 물어봐"를 규칙으로 미리 걸어둬야 한다. 예를 들면 "파일 삭제나 데이터 초기화를 하기 전에는 반드시 확인받고 진행해" 같은 규칙이다. 자동차에 브레이크를 달아두는 것과 같다.
핵심 원리는 이렇다. 권한을 처음부터 좁혀두면, 내가 실수해도 AI가 실수해도 피해 범위가 작다. 사고의 크기는 결국 "내가 줘버린 권한의 크기"만큼이다. 큰 열쇠를 안 줬으면 크게 터질 일도 없다.
습관 3·4 — 과금 알림과 백업: 터진 뒤에는 늦다
세 번째와 네 번째 습관은 하나로 묶인다. 돈과 데이터는 둘 다 "터진 뒤"에는 손을 쓸 수 없다는 공통점이 있기 때문이다.
세 번째, 과금 알림은 수도 계량기와 같다. 클라우드나 API 같은 서비스는 쓴 만큼 돈이 나간다. 무료로 시작해도 어느새 유료 구간에 들어가 있다. 그래서 결제 한도와 알림을 먼저 걸어둬야 한다. 여기서 흔한 함정이 있다. 알림이 없으면 이번 달 청구서를 받고 나서야 처음 안다는 것이다. 이미 물이 다 샌 뒤다.
네 번째, 백업은 화재보험과 같다. 전체 삭제, 덮어쓰기, 데이터 초기화처럼 되돌릴 수 없는 작업을 하기 전에 복사본을 만들어 두는 것이다. 코드는 Git이라는 도구가 이력을 남겨 자동으로 백업해 주지만, 데이터는 따로 챙겨야 한다. 기억할 점은 이거다. 백업은 사고를 막아주는 게 아니라, 사고가 나도 피해를 0으로 되돌려 준다.
두 습관의 공통점이 곧 오늘의 핵심 원리다. 둘 다 사고가 나기 전에 걸어둬야 의미가 있다. 나고 나서 켜는 알림, 지우고 나서 만드는 백업은 아무 소용이 없다.
실전 — 새 프로젝트 시작할 때 이 순서대로
앞의 4가지를 실제 작업 순서로 바꾸면 이렇게 된다. 새 프로젝트를 시작할 때 이 순서대로 밟으면 된다.
- 키는
.env에,.env는 깃에 올리지 않기. 비밀 값은 코드가 아니라.env파일에 넣고,.gitignore에.env를 등록해 실수로도 깃에 안 올라가게 잠근다. - AI에게도 "삭제 전엔 물어봐" 브레이크 걸기. 에이전트에게 되돌릴 수 없는 작업(삭제·초기화·결제)은 실행 전에 확인받도록 규칙을 먼저 준다.
- 결제 한도·알림 설정 먼저, 서비스 가입은 그다음. 클라우드나 API 계정을 만들면 제일 먼저 사용 한도와 금액 알림부터 켠다. 개발은 그 뒤에 한다.
- 되돌릴 수 없는 작업 전엔 백업. 지우기, 덮어쓰기, 데이터 이전 직전에 복사본 한 부를 챙긴다. "혹시" 한 번이 며칠을 살린다.
실전에서 이렇게 쓴다 — 두 가지 습관 사례
이 습관들이 실제로 어떻게 쓰이는지, 두 가지 사례로 보자.
첫 번째는 비용을 0원으로 만든 이야기다. 쓰지 않으면서 켜둔 클라우드 DB(데이터를 저장하는 창고) 프로젝트들이 매달 조용히 요금을 발생시키고 있었다. 안 쓰는 것들을 정리하자 월 비용이 0원이 됐다. 여기서 얻은 감각은 이거다. "켜둔 프로젝트 수가 곧 비용"이다. 요금은 대단한 기능에서 나오는 게 아니라, 그냥 켜둔 개수에서 나온다. 그러니 안 쓰면 끈다. 그게 가장 확실한 비용 절감이다.
두 번째는 실수해도 막히게 만든 이야기다. AI 에이전트에게 일을 맡기다 보면 실수로 비밀 파일을 건드릴 수 있다. 그래서 그 시도를 자동으로 막는 안전장치를 걸어뒀다. 이걸 훅(hook)이라고 부른다. 훅은 특정 행동이 일어나기 직전에 자동으로 끼어드는 검문소다. 사람이 매번 지켜보지 않아도 시스템이 먼저 막아준다. 핵심은 이거다. 규칙은 사람의 기억에 맡기지 말고 시스템에 심어라. 기억은 흔들리지만 시스템은 매번 똑같이 막는다.
흔한 오해 두 가지
초보가 자주 하는 착각 두 가지를 바로잡고 가자.
| 오해 | 실제 |
|---|---|
| "보안은 어차피 초보가 못 챙겨. 전문가 되면 그때 하지." | 사고는 대형 해킹이 아니라 키 하나 노출, 알림 하나 안 켬에서 난다. 습관 4개면 초보도 대부분 막는다. |
| "무료로 시작하니까 돈 나갈 일 없어." | 무료 구간 초과, 안 지운 프로젝트가 조용히 유료로 굴러간다. 알림과 정리가 유일한 방어다. |
첫 번째 오해의 핵심은 이거다. 보안은 실력이 아니라 순서의 문제다. 오늘 배운 4가지가 바로 그 순서다. 두 번째 오해의 핵심은 "켜둔 개수가 곧 비용"이라는 것. 안 쓰면 끄고, 한도 알림은 미리 켠다.
3줄 정리
딱 세 줄만 가져가면 된다.
- 사고는 실력이 아니라 습관 문제다. 키 분리, 권한 최소, 과금 알림, 백업. 이 4개면 초보여도 안 난다.
- 키는 코드에 박지 말고
.env에(금고 속 쪽지)..gitignore로 깃에서 제외한다. 코드는 남에게 보일 수 있는 전단지라고 생각하기. - 돈과 데이터는 "터진 뒤"에는 늦다. 과금 알림과 백업은 사고가 나기 전에 미리 걸어둬야 의미가 있다.
숙제는 없다. 단, 지금 쓰는 서비스 중에 결제 알림이 안 켜진 게 있는지 딱 하나만 확인해 보자. 그게 오늘 배운 습관의 첫걸음이다.
다음 편 — 바이브코딩 강의 12편에서는 어제 정한 걸 오늘 또 설명하지 않게 결정을 파일에 남기는 법과, AI와 오래 협업하며 만든 걸 굴리는 유지보수 루틴을 다룬다.