개발자 팁개발 워크플로우 › 개발자에게 운영 DB 권한을 어디까지 줄 것인가

개발자에게 운영 DB 권한을 어디까지 줄 것인가

한 줄 요약

전면 차단도 전면 허용도 실무에서 지속되지 않는다. 단계별 권한 분리와 감사 기록.

양 극단이 지속되지 않는 이유

전면 차단: 장애가 났을 때 원인을 볼 수 없다. 결국 예외 경로가 생기고, 그 경로가 관리되지 않는다.

전면 허용: 실수 한 번의 비용이 크다. WHERE 없는 UPDATE 하나로 전체 행이 바뀐다.

현실적인 방향은 권한을 나누고 기록을 남기는 것이다.

단계별 분리

| 등급 | 권한 | 대상 |

|---|---|---|

| 1 | 복제본 읽기 (마스킹) | 전체 개발자 |

| 2 | 운영 읽기 | 담당 영역 개발자 |

| 3 | 운영 쓰기 (승인 후 임시) | 장애 대응 |

| 4 | 스키마 변경 | 배포 파이프라인 |

4등급이 사람이 아니라 파이프라인이라는 점이 중요하다. 스키마 변경은 코드로 관리되어야 리뷰와 이력이 남는다.

1등급 — 복제본을 기본으로

대부분의 조회는 복제본에서 가능하다. 이점:

"운영 데이터를 봐야 한다"는 요구의 상당수가 복제본으로 충족된다.

2등급 — 읽기도 완전히 안전하지는 않다

읽기 전용 계정에서도 두 가지 위험이 남는다.

1. 개인정보 조회

권한이 있다고 봐도 되는 것은 아니다. 접근 기록이 남아야 하고, 필요 최소 범위 원칙이 적용돼야 한다.

2. 대량 쿼리 부하

```sql

SELECT * FROM events; -- 수억 행

```

읽기만으로도 운영에 영향을 준다. 타임아웃과 결과 크기 제한을 계정 수준에서 걸어두는 방법이 있다.

3등급 — 임시 권한

운영 쓰기가 필요한 경우는 실제로 있다. 잘못된 데이터를 고쳐야 하거나, 장애 대응 중이거나.

관리 방식:

```

  1. 요청 (사유 명시)
  2. 승인 (다른 사람)
  3. 시간 제한 부여 (예: 2시간)
  4. 자동 만료
  5. 실행 내역 기록

```

4번이 핵심이다. 수동 회수는 대부분 잊힌다. 시간이 지나면 자동으로 사라지는 구조여야 한다.

감사 기록

무엇을 남길 것인가:

기록의 목적은 처벌이 아니라 사고 시 추적이다. 무엇이 언제 바뀌었는지 알 수 있으면 복구가 빨라진다.

실수를 줄이는 습관

권한 구조와 별개로, 개인 차원의 방어책이 있다.

1. 프롬프트 색상 구분

운영 연결은 빨간색으로 표시되게 설정한다. 어느 DB에 붙어 있는지 착각하는 사고가 실제로 흔하다.

2. SELECT 먼저

```sql

-- 1) 먼저 대상 확인

SELECT COUNT(*) FROM orders WHERE ...;

-- 2) 예상과 맞으면 UPDATE

```

3. 트랜잭션으로 감싸기

```sql

BEGIN;

UPDATE ...;

-- 결과 확인 후 COMMIT 또는 ROLLBACK

```

4. 자동 커밋 끄기

클라이언트 설정에서 auto-commit을 꺼두면 실수한 문장을 되돌릴 여지가 생긴다.

도구 쪽에서 할 수 있는 것

DB 클라이언트를 고를 때 확인할 만한 기능:

이런 장치가 있으면 권한 구조가 느슨해도 사고 확률이 크게 준다.

최종 수정 2026-08-28

자주 묻는 질문

개발자가 운영 DB를 못 보게 하면 안 되나요?

장애 대응이 느려집니다. 읽기 권한은 열되 기록을 남기는 방식이 현실적입니다.

읽기 전용이면 안전한가요?

파괴적 변경은 막히지만 개인정보 조회와 대량 쿼리로 인한 부하 문제는 남습니다.

임시 권한은 어떻게 관리하나요?

기한이 자동 만료되는 방식이 좋습니다. 수동 회수는 대개 잊힙니다.

DB Linker로 지금 시작하기

AI 채팅으로 데이터베이스를 조회·관리하는 로컬 전용 개발자 도구. 자체 서버 없이 이용자의 기기에서만 동작합니다.

App Store에서 받기 →

안내

이 글은 일반적인 데이터베이스 관리 원칙과 개발 관행을 다루는 콘텐츠이며, 특정 프로젝트·프로덕션 환경에 대한 전문적 조언을 대체하지 않습니다. 구체적 버전·수치가 언급되더라도 실제 사용 중인 도구·버전에서 반드시 재확인하시기 바랍니다.

글 중 일부는 AI 도구의 도움을 받아 초안을 작성한 뒤 발행됩니다. 내용 중 사실과 다르거나 수정이 필요한 부분을 발견하시면 GitHub Issues로 알려주세요.