메인 콘텐츠로 건너뛰기

개발자들을 위한 데이터베이스 보안 완전 가이드

2026년 데이터를 보호하기 위한 데이터베이스 보안에 대한 완전한 가이드. 암호화, 접근 제어, 키 관리, 규정 준수에 대한 최적화 방법을 배워보세요.

Martin Donadieu

Martin Donadieu

콘텐츠 마케터

개발자들을 위한 데이터베이스 보안 완전 가이드

밤늦게 릴리즈를 푸시하고, 알림을 훑어보며, 개인 레포에 절대 나가지 shouldn't never한 자격증을 발견합니다. 그럴 수 있는 이유는 데이터베이스 패스워드였거나, 더 넓은 권한을 가진 클라우드 접근 키였습니다. 그 문제는 단지 누군가가 로그인할 수 있는 문제가 아니라, 데이터베이스 보안이 로그인 문제로만 다루어지고 있기 때문입니다. 실제 시스템에서 이것은 어디서나 나타납니다. 팀은 암호화를 한번만 활성화하고, 그들이 끝났다고 생각합니다. 백업을 하지만, 복원 테스트를 하지 않습니다. 편의를 위해 관리자 서비스 계정을 만들고, 그것이 존재하는 것을 잊습니다. 프로덕션을 잠그고, 스테이징에 고객 데이터를 복사한 채로 남깁니다. 모바일 또는 웹 앱을 개발하고 있다면, 데이터베이스 보안은 모든 것을 다 커버해야 합니다: 주 데이터베이스, 복제본, 수출물, 로그, 백업, 키가 모든 것을 제어하는 것.

__CAPGO_KEEP_0__

If you’re also working through auth for your next app, remember that authentication and storage security solve different failure modes. Auth decides who should get in. Storage security limits damage when someone does, or when data leaks through a path you didn’t expect. For teams shipping customer-facing apps, it’s also worth aligning storage decisions with adjacent controls like API security standards for app store compliance.

The urgency isn’t theoretical. 세계 데이터 생산량은 2020년 64.2 zettabytes로 기록되었으며 2025년까지 180 zettabytes로 증가할 것으로 예상되었습니다. 에 따르면 Edge Delta의 데이터 저장소 요약. 그 규모에서 보안 저장은 단순히 강화 작업이 아닌 아키텍처가 됩니다.

Table of Contents

데이터베이스 보안은 단순한 비밀번호만으로 충분한가요

비밀번호는 하나의 진입점을 보호하지만, 인증 정보가 유출되거나 스냅샷이 복사되거나 내부 서비스가 테이블을 읽는 경우 데이터를 보호하지 못합니다. 따라서 안전한 데이터베이스 저장은 층을 쌓아야 합니다.

기존의 모델은 단순했습니다: 데이터베이스를 방화벽 뒤에 두고 강력한 비밀번호를 요구하고 외부로부터 멀리 떨어뜨리면 됩니다. 그러나 클라우드 시스템, 모바일 백엔드 및 현대적인 CI/CD PIPELINE에서 이 모델은 깨집니다. 데이터는 서비스 간에 이동하고 엔지니어는 임시 수출을 생성하고 분석 작업은 복제본을 생성합니다. 백업 시스템은 다른 인프라스트럭처에서 복사본을 저장합니다. 공격자는 데이터베이스 엔진을 직접 공격하지 않아도 키를 훔치거나 API 토큰을 악용하거나 더 약한 제어를 가진 복제본을 찾으면 됩니다.

침묵하는 경로에서 보안이 실패합니다

가장 손상이 되는 저장 실패는 처음에는 드라마틱하지 않습니다. 보통 보입니다.

  • 개발자 편의성이 프로덕션 위험으로 변합니다: 관리자 자격 증명을 공유한 후 스크립트가 재사용하는 경우 배포를 중단하는 것만으로 자격 증명이 회전하는 것이 너무 복잡해질 수 있습니다.
  • A 복사된 데이터가 통제를 벗어난다: 생산 기록이 스테이징으로 복제되어 QA가 버그를 재현할 수 있다.
  • 백업이 약점이 된다: 생산에는 강력한 제어가 있지만 복원 버킷 또는 스냅샷 정책이 없다.

실용적인 규칙: 만약 공격자가 읽을 수 있는 데이터와 하나의 자격증만이 사이에 있다면, 보안 저장소가 아니라 단일 취약점이 있다.

공격자가 자격증을 악용할 수 있는 방어가 살아남아야 한다.

마이크로소프트의 클라우드 지침은 전송 중 및 저장 중 암호화, 최소 권한 접근 제어, 비인가 활동에 대한 모니터링을 포함한 클라우드 데이터 보안 최적화 방안을 권장한다. 실제 사고는 종종 유효한 접근 권한을 잘못 사용한 경우에 시작된다.실무에서 성공하는 방법은 단조롭고 일관적이다. 데이터베이스 파일을 암호화하라. 연결을 암호화하라. 서비스 역할을 분리하라. 관리자 권한을 제거하라. sensitive한 연산을 로그하라. 비정상적인 사용 패턴에 대한 경고를 설정하라. 그 중 하나도 매력적이지 않지만 실제 침해를 방지한다.

이것을 생각하는 유용한 방법은 물리적 금고이다. 금고 문이 중요하다. 같은 경우는 격리 장치, 카메라 footage, 방문 로그, box를 열 수 있는 사람에 대한 정책도 중요하다. 보안 데이터 저장소도 마찬가지다. 패스워드는 단지 앞문이다.

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

__CAPGO_KEEP_1__

__CAPGO_KEEP_2__

__CAPGO_KEEP_3__ __CAPGO_KEEP_4____CAPGO_KEEP_5__ __CAPGO_KEEP_6____CAPGO_KEEP_7__

__CAPGO_KEEP_8__

__CAPGO_KEEP_9__

__CAPGO_KEEP_10__

  1. __CAPGO_KEEP_11__ 예를 들어 프로필, 주문 내역, 결제 관련 메타데이터, 또는 건강 관련 콘텐츠와 같은 것.
  2. 인증 자료 예를 들어 비밀번호 해시, 세션 기록, 갱신 토큰, 또는 API 비밀 정보.
  3. 운영 데이터 예를 들어 감사 로그, 작업 큐, 관리자 노트 및 지원 내보내기.
  4. 복구 자산 예를 들어 스냅샷, 논리적 덤프, 특정 시점 로그 및 암호화 키.

마지막 항목이 팀이 생각하는 것보다 더 중요합니다. 공격자가 백업을 삭제하거나 복호화 키에 접근할 수 있다면, 복구 스토리가 붕괴됩니다.

가장 중요한 위협 그룹 세 가지

개발자와 함께 사용하는 간단한 모델은 세 그룹이 있습니다.

외부 공격자

이 그룹은 처음으로 생각하는 그룹입니다. SQL 인젝션, 훔친 API 토큰, 누출된 클라우드 자격 증명, 노출된 관리자 패널, 취약한 의존성. 공통된 주제는 데이터에 접근할 수 있는 외부자입니다.

질문할 것들:

  • 어플리케이션을 통해 데이터베이스를 간접적으로 조회할 수 있나요?
  • 스톨린 서버 인증 정보가 여러 서비스가 필요로 하는 것보다 더 많은 서비스를 읽을 수 있나요?
  • 복사한 스냅샷이 독립적으로 읽을 수 있나요?

내부 위협

이것은 악의적인 내부자와 권한이 너무 많은 잘못된 의도 없는 직원도 포함합니다. 지원 엔지니어가 티켓을 해결하기 위해 데이터를 내보내고, 계약자도 로컬 복사본을 유지합니다. 플랫폼 관리자는 생산 라인에 접근할 수 있지만 그들의 직책에는 필요하지 않습니다.

이것을 도와주는 것은 직책에 따라 권한을 분리하고,敏感한 읽기를 가시화하는 감사 기록이 있습니다.

고객 기록에 접근한 사람, 언제 접근했는지, 그 접근이 허용된 이유를 알 수 없다면, 데이터베이스 제어는 더 강력해 보이지만 실제로는 약해 있습니다.

비자발적 노출

이것은 빠르게 움직이는 팀에서 가장 일반적인 범주입니다. 미설정된 저장소 버킷. 스테이징 환경에 라이브 데이터를 시드합니다. 토큰이나 개인 정보가 포함된 디버그 로그. 복원된 백업을 낮은 보안 환경에 배치하여 문제 해결을 위해.

비자발적 노출이 강력한 저장소 보안이 운영 가능한 이유입니다. 하나의 설정으로 해결하지 않습니다. 데이터 분류, 경계, 검토, 정기적인 청소로 해결합니다.

데이터베이스 저장소의 핵심 원칙

A breach rarely comes from one dramatic failure. It usually comes from a chain of ordinary mistakes. A backup is copied to the wrong account. A service gets broader permissions than it needs. An old key stays active for months because rotation kept getting postponed. Secure database storage has to interrupt that chain at several points, and keep doing it as the system changes.

나는 작업을 네 개의 기둥으로 분류합니다: 암호화, 접근 제어, 감사, 최소화. 백업과 복구도 중요하지만, 복원된 데이터가 새로운 노출 경로가 될 수 있기 때문에 운영 처리에 별도의 처리가 필요합니다. 복원된 데이터가 어디에 저장되었는지, 누구에게 읽을 수 있는지, 어떤 키로 암호화된 데이터를 복호화할 수 있는지 테스트하지 않으면 안 됩니다.

A secure database storage의 네 개의 핵심 기둥을 나타내는 다이어그램: Access Control, Encryption, Auditing, and Backup.

암호화는 훼손된 데이터의 가치를 줄입니다.

암호화는 시간을 벌고 영향을 줄입니다. someone이 디스크 스냅샷, raw 백업 파일, 또는 내부 네트워크에서 트래픽을 가져오면 암호화된 데이터는 고객 기록으로 변환하기 훨씬 어려워집니다.

암호화된 데이터는 디스크에 저장된 데이터, 스냅샷, 백업 아티팩트를 보호합니다. 애플리케이션 서버, 프록시, 데이터베이스 엔진 간의 연결은 TLS를 통해 보호됩니다. NIST는 SP 800-111 및 관련 데이터-at-rest 권장 사항에서 두 가지 제어를 다룹니다. SP 800-111.

운영상의 트레이드 오프는 이론적인 트레이드 오프가 아니다. 암호화는 데이터 경로와 시간이 지남에 따라 유지되는 키 관리가 분리되어야만 도움이 된다.velope 암호화는 건물 주 키와 잠긴 사무실 키와 같이 작동한다. 키 관리 서비스는 주 키를 보호하고, 그 주 키는 실제 레코드 또는 파일에 사용되는 짧은 수명 데이터 키를 암호화한다. 그 디자인은 회전 중 노출을 제한하고, 키 자료를 취소하거나 대체할 때 모든 것을 한 번에 다시 작성하지 않고 쉽게 만든다.

팀은 암호화를 한번만 활성화하고 그만둔 경우 문제를 일으킨다. 키가 어디에 살고 있는지, 누구가 사용할 수 있는지, 회전이 예약되어 있는지, 그리고 잊어버린 키 버전이 여전히 이전 백업에 의존하는지 확인해야 한다.

접근 제어는 폭파 반경을 제한한다

권한은 조직 차트보다 애플리케이션 경계를 따라야 한다.

API 체크아웃을 위한 데이터베이스 역할은 급여 데이터를 읽을 수 없어야 한다. 배경 작업자는 초기 마이그레이션 중 편리했기 때문에 스키마 변경 권한이 있어서는 안 된다. 지원 도구는 필터링된 뷰 또는 APPROVED 절차를 사용하여 대폭적인 테이블 접근 대신 사용해야 한다.

실용적인 모델은 다음과 같다:

  • 웹 앱 역할: 사용자 요청의 뒤에 있는 테이블에 대한 제한된 읽기 및 쓰기 접근 권한
  • 작업자 역할: 작업자가 실행하는 레코드에 대한 접근 권한
  • 분석 역할: 편집 가능한 식별자가 제거된 커레이티드 데이터 세트에 대한 읽기 전용 접근 권한
  • 관리자 역할: 단기적 승인에 강력한 로깅 및 검토가 있는 접근 권한.

데이터 변환과 pair 될 때 이 기둥이 더 강해집니다. 팀이 masked 또는 reduced 데이터로 작업할 수 있다면, 그 버전을 제공하는 대신 전체 생산 값을 제공하는 것이 좋습니다. 규제 건강 데이터의 경우 PHI의 비식별화 유용한 접근과 불필요한 노출의 차이입니다.

__CAPGO_KEEP_0__ 키 보안은 앱 스토어 준수에 특히 중요합니다. API key security for app store compliance감사 결과가 제어가 실제로 작동하는지 여부를 보여줍니다.

검증할 수 없는 정책은 단순히 희망입니다.

사고 시에 중요한 질문에 답하는 감사 기록입니다.

어떤 식별자가 레코드를 읽었는지, 어떤 역할이 권한을 변경했는지, 어떤 수출 작업이 데이터를 이동했는지, 어떤 키가 암호화 된 아카이브를 해독했는지 등.

또한 느린 드리프트를 노출합니다. 예를 들어, 서비스 계정은 이전에 필요하지 않았던 테이블에 접근하기 시작했습니다.

  • 인증 활동: 성공 로그인, 실패 로그인, 토큰 사용, 및 관리자 세션.
  • 권한 변경: 허가, 취소, 역할 생성, 정책 편집, 및 스키마 변경.
  • Sensitive 접근 패턴: 대량 읽기, 큰 내보내기, 비정상적인 쿼리 경로, 및 예상 시간 또는 원본 네트워크 외부 접근.
  • 키 관리 이벤트: 키 생성, 회전, 암호화 실패 시도, 비활성화 버전, 및 KMS 또는 비밀 저장소의 정책 변경.

로그 보존은 중요합니다. 또한 검토도 중요합니다. 만약 로그가 조사하기 전에 만료되거나, 또는 이미 침해가 발생한 경우에만 권한 변경을 확인하는 경우, 감사 시스템은 이론적으로만 존재합니다.

이것이 구현 세부 사항이 너무 추상해지기 전에 좋은 설명입니다:

민감한 데이터를 잘 수호할 수 없는 곳에서 제거하는 것이 중요합니다.

민감한 데이터를 잘 수호할 수 없는 곳에서 제거하는 것이 중요합니다. 많은 팀이 최소한의 엔지니어링 노력으로 가장 큰 보안 이익을 얻습니다.

더 적게 저장하고, 더 적게 보관하고, 더 적은 곳에 복사하세요. 만약 특정 기능이 나이대만 필요하다면, 생년월일을 모두 저장하지 마세요. 만약 지원이 마지막 네 자리만 필요한 식별자에만 관심이 있다면, 전체 field를 노출하지 마세요. 만약 테스트 환경에서 실제 개인 데이터가 필요하지 않다면, 생산 백업을 복원하지 마세요. 그리고 임시라고 부르세요.

이것도 운영 방식입니다. 보존 일정에 대한 강제가 필요합니다. 오래된 내보내기 작업은 삭제해야 합니다. 다운스트림 시스템은 검토해야 합니다. 왜냐하면 sensitive field가 검색 인덱스, 캐시, 데이터 레이크, 모바일 저장소, ad hoc CSV 파일에 복제될 때마다 위험성이 증가하기 때문입니다. Capacitor 앱의 경우 @capgo/capacitor-data-storage-sqlite 그리고 @capgo/capacitor-fast-sql 암호화된 앱 내부 저장소를 제공할 수 있지만, 여전히 저장할 shouldn't 것들을 모두 locally 저장하지 않도록 결정해야 합니다.

이러한 기둥의 목적은 첫 번째 날에 완벽함이 아니라, 키 회전, 직원 변경, 사고 대응, 백업 복원, 제품 성장과 같은 상황에서 저장 시스템이 여전히 방어할 수 있는 시스템을 구축하는 것입니다. 보안 데이터베이스 저장은 성공하거나 실패하는 데서 succeed or fails.

암호화에 대한 실용적인 구현 패턴

모든 시스템에 대해 암호화 패턴이 하나만 있는 것은 아닙니다. 올바른 선택은 무엇을 보호하고 있는지, 누구에게 쿼리할 수 있는지, 팀이 지원할 수 있는 복잡도에 달려 있습니다. 실수는 가장 강력한 sounding 패턴을 선택하고 나서 그것을 나쁘게 implement하는 것입니다.

디스크, 데이터베이스透明 데이터 암호화 및 애플리케이션 암호화 3 가지 실용적인 구현 패턴을 minh họa하는 infographic.

TDE는 가장 빠른 baseline입니다.

Transparent Data Encryption, 또는 TDE,는 일반적으로 가장 쉬운 곳에서 시작합니다. 데이터베이스 엔진은 디스크에 파일을 암호화하고 엔진이 메모리에 읽어 들이면 암호화된 파일을 복호화합니다. 애플리케이션은 일반적으로 code 변경이 필요하지 않습니다.

전체 데이터베이스 보호

  • 저장소 수준의 규정 준수 요구 사항
  • 스톨린 디스크, 스냅샷 또는 raw 파일 접근으로부터의 위험을 줄입니다.
  • TDE는 모든 것을 보호하지 않습니다. 공격자가 유효한 데이터베이스 접근 권한을 얻으면 엔진은 여전히 복호화된 데이터를 제공합니다. 그 이유로 TDE는 저장소 위반이 아닌 유효한 자격 증명으로의 남용을 방지하는 데 도움이 됩니다.

애플리케이션 암호화는 가장 중요한 field를 보호합니다.

애플리케이션 암호화는 데이터베이스에 데이터가 도달하기 전에 발생합니다. __CAPGO_KEEP_0__가 선택한 field를 암호화한 후, ciphertext를 저장소에 기록합니다. 특히 sensitive한 열(예: 정부 ID, 은행 정보, 복구 비밀, 개인 노트)과 같은 경우 잘 작동합니다.

Application-level encryption happens before data reaches the database. Your code encrypts selected fields, then writes ciphertext to storage. This works well for especially sensitive columns such as government IDs, bank details, recovery secrets, or private notes.

That extra control comes with trade-offs:

  • 복잡성이 더 많습니다: 키 선택, 암호화 라이브러리, 회전 동작 및 오류 처리.
  • 쿼리하기가 어려워집니다: 정확한 일치, 부분 검색 및 색인화가 설계 문제가 됩니다.
  • 개발자는 discipline이 필요합니다: 이동 스크립트에서 단 하나의 단축키가 모델의 모든 것을 무효화할 수 있습니다.

단순한 pseudocode 패턴은 다음과 같습니다:

Step Action
1 요청에서 플레인 텍스트 필드를 읽습니다.
2 키 서비스에서 데이터 암호화 키를 요청하거나 wrapped local key를 사용합니다.
3 필드를 애플리케이션에서 암호화합니다.
4 데이터베이스에 암호문과 메타데이터를 저장하십시오.
5 만약 읽기 경로가 승인된 경우에만 암호화하십시오.

애플리케이션의 지역 저장에 대한 설계 질문은 동일합니다. 장치에 오프라인 토큰이나敏感한 동기화 상태를 저장한다면, 기본적으로 모바일 저장이 안전하다고 가정하지 마십시오. 플랫폼에 대한 패턴을 사용하십시오. __CAPGO_KEEP_0__에서 discussed된 것과 같은 것들. secure storage for offline tokens in Capacitor.

Envelope 암호화는 두려운 것처럼 들릴 수 있지만, 아이디어는 간단합니다. 데이터를 하나의 키로 암호화하고, 그 키를 다른 키로 암호화합니다. 더 안전한 키로 암호화합니다.

문서를 작은 safe에 잠그고, 그 safe의 키를 은행 보관함에 잠그는 것과 같습니다. 문서 저장層을 훔치더라도, 유용한 것을 열 수하려면 은행 보관함의 키에 접근해야 합니다.

일반적인 흐름입니다.

데이터 키를 생성하십시오.

  1. 데이터 키를 생성한 후, 데이터를 암호화하십시오. 그 데이터 키를 사용하여 데이터를 암호화하십시오.
  2. __CAPGO_KEEP_0__ 데이터를 안전한 곳에 잠그고, 그 safe의 키를 안전한 곳에 잠그는 것과 같습니다.
  3. 데이터 키를 __CAPGO_KEEP_0__에 wrapping하는 방법 KMS 또는 HSM에서 마스터 키를 사용하여 데이터 키를 wrapping합니다.
  4. 데이터 키 wrapping에 사용된 키 메타데이터와 함께 ciphertext를 저장합니다. 데이터 키 wrapping에 사용된 키 메타데이터와 함께 ciphertext를 저장합니다.
  5. 인가된 읽기 중에만 unwrap합니다..

Field advice: 강력한 마스터 키를 모든 애플리케이션 서버에 노출하지 않고 강력한 격리화를 필요로 할 때 envelope encryption을 사용하세요.

이 패턴은 성능과 제어가 균형을 이루는 것이 일반적입니다. 실제 암호화 작업에 사용되는 데이터 키는 짧은 시간 동안 사용되며, KMS 또는 HSM은 wrapping과 unwrap을 위한 마스터 키를 보호합니다.

암호화 패턴 비교

패턴 implementation 복잡도 성능 영향 최고의 선택
디스크 또는 볼륨 암호화 낮음 낮음 서버 및 연결된 스토리지에 대한 인프라 수준의 보호
투명한 데이터 암호화 낮음에서 중간 낮음에서 중간 데이터베이스 전체 보호에 대한 최소한의 앱 변경
애플리케이션 수준 암호화 중간에서 높음 필드 사용 및 쿼리 디자인에 따라 다름 높은 민감도 컬럼과 엄격한 분리 필요
Envelope 암호화 중간에서 높은 중간 강한 키 분리 및 확장 가능한 키 관리가 필요한 시스템

실제 규칙은 간단합니다. TDE 또는 관리 중인 At-Rest 암호화와 같은 강력한 기본선을 시작하고, 데이터 민감도 및 위협 모델이 추가 엔지니어링을 정당화하는 경우만 field-level 또는 envelope 암호화를 추가하세요.

키 및 비밀 관리의 마스터

침입은 일반적인 비밀 처리 실수로 시작하는 경우가 많습니다. 프로덕션 데이터베이스가 암호화되어 있고 백업이 존재하고, 접근 권한이 종이로 제어되는 것처럼 보입니다. 그런 다음 CI 작업이 로그에 토큰을 출력하거나 엔지니어가 지원 스크립트를 위해 관리자 자격 증명을 재사용하거나陈舊한 키가 팀이 생성한 후에도 활성화된 채로 남아 있는 경우가 있습니다.

이는 키 및 비밀 관리가 운영 관행이 아닌 설정 작업이 아니라는 것을 의미합니다.

잘못 관리된 키로 암호화된 데이터베이스는 서버 룸에 열쇠가 달린 채로 있는 것과 같습니다. 정부 지침도 같은 점을 강조합니다. 암호화만으로는 KMS 또는 HSM 기반 키 관리, 최소 권한 접근, 복구 계획을 생략하는 팀이 있는 경우 격차를 닫을 수 없습니다. NSA와 파트너의 클라우드 데이터 보안 지침.

팀이 이것을 잘못하는 경우

사고 리뷰에서 익숙한 패턴입니다:

  • 소스코드 내 code:에 있는 비밀 직접 입력한 인증 정보, 임베디드 인증서, 또는 점차 프로덕션 의존성으로 변하는 유틸리티 스크립트
  • 복사한 설정 파일에 있는 비밀: 노트북 간에 파일 전달, 공유 폴더에 저장, 또는 급히 고친 중에 커밋한 파일
  • 강제 제어가 약한 환경 변수: 편리하지만, 빌드 로그, 셸 히스토리, 크래시 리포트, 또는 광범위한 런타임 권한으로 노출될 수 있습니다.
  • 회전에 대한 책임이 없는 키: 키가 몇 년 동안 존재하는 이유는 어떤 팀도 재발급, 배포, 롤백 계획을 소유하지 않기 때문입니다.
  • 고등 권한의 공유 비밀: 어플리케이션, 엔지니어, 및 자동화가 사용하는 하나의 인증 정보로, 감사 및 제한이 훨씬 더 어려워집니다.

앱 및 인프라 비밀을 저장하는 표준화 방법을 만드는 경우, 비밀 관리를 처리하는 데 있어 실용적인 참고 자료 __CAPGO_KEEP_0__ 환경 변수를 안전하게 관리하는 방법 __CAPGO_KEEP_0__ 환경 변수를 안전하게 관리하는 방법은 팀이 임의의 비밀 정보 분산을 피할 수 있도록 도와줍니다.

좋은 키 관리 방법

__CAPGO_KEEP_0__를 사용하세요. 중앙 집중식 정책, 접근 제어, 감사 로그, 예약된 회전이 사용자 정의 하드웨어 제어보다 더 중요할 때 사용하세요. __CAPGO_KEEP_1__를 사용하세요. 위험, 규정 준수 요구 사항, 서명 및 키 보호 규칙이 전용 하드웨어 경계를 정당화할 때 사용하세요. 많은 팀이 __CAPGO_KEEP_1__을 어디서나 사용할 필요가 없습니다. 그들은 시스템이 암호 해독 작업을 요청할 수 있는 규칙이 명확해야 하며, 인간이 정책을 변경할 수 있는 규칙이 명확해야 하며, 그 행동이 검토되는 규칙이 명확해야 합니다. __CAPGO_KEEP_2__는 좋은 정신 모델입니다. 작은 잠금 상자를 사용하여 현금을 보관하고, 그 상자를 은행 금고 안에 보관하는 것과 같습니다. 애플리케이션은 암호화 작업을 위해 단기적인 데이터 키를 처리합니다. 금고 키는 __CAPGO_KEEP_0__ 또는 __CAPGO_KEEP_1__에 저장되어 있으며, 접근이 엄격하게 제한됩니다. 사고를 방지하는 제어가 작동합니다. __CAPGO_KEEP_0__을 정기적으로 회전하세요. 회전은 해킹된 키의 유용한 수명을 줄이지만, 애플리케이션, 작업, 복원 작업이 이후에도 작동할 수 있도록 안전하게 실행할 수 있어야 합니다. __CAPGO_KEEP_1__

__CAPGO_KEEP_0__

__CAPGO_KEEP_2__

  • __CAPGO_KEEP_0__ __CAPGO_KEEP_1__
  • 업무를 분리하십시오: 고객 데이터를 읽는 서비스는 키 정책을 변경하거나 로깅을 비활성화할 수 없어야 합니다.
  • _sensitive한 키 이벤트를 로깅하십시오: 키 생성, 회전, 암호화 요청, 접근 실패, 정책 변경 등 모든 이벤트가 표시되어야 합니다.
  • 재 암호화 경로를 테스트하십시오: wrapping key를 회전하는 것은 일반적으로 애플리케이션 데이터를 재 암호화하는 것보다 쉽지만, 두 가지 모두 롤백 단계와 백업 단계가 필요합니다.
  • 기존 비밀을 의도적으로 비활성화하고 폐기하십시오: 이전 인증서를 제거하기에 충분한 시간을 두고, 오래된 인증서를 제거하여 조용한 백도어가 될 수 없도록 하십시오.

CI/CD는 프로덕션 런타임과 같은 discipline을 deserves합니다. 빌드 시스템은 넓은 접근 권한과 약한 가시성을 가지고 있기 때문에, 비밀 유출의 일반적인 장소입니다. 이 문제에 대해 진지하게 다루는 팀은 CI/CD pipeline의 비밀 관리를 formalize합니다. pipeline 인증서를 임시 예외로 다루지 않고 대신 formalize합니다. 단 하나의 규칙이 있습니다. 애플리케이션은 __CAPGO_KEEP_0__에 의존하여 신뢰할 수 있는 시스템에서 암호화 연산을 요청해야 하며, 환경 내에서 raw master 키를 가지고 다니지 않아야 합니다.

One rule is simple. Application code should request cryptographic operations from trusted systems, not carry raw master keys around the environment.

__CAPGO_KEEP_0__

__CAPGO_KEEP_1__

__CAPGO_KEEP_2__

__CAPGO_KEEP_3__ __CAPGO_KEEP_4__.

__CAPGO_KEEP_5__

__CAPGO_KEEP_6__

  • __CAPGO_KEEP_7__
  • __CAPGO_KEEP_8__
  • __CAPGO_KEEP_9__
  • __CAPGO_KEEP_10__

__CAPGO_KEEP_11__

__CAPGO_KEEP_0__

__CAPGO_KEEP_1__

__CAPGO_KEEP_2__

__CAPGO_KEEP_3__

  1. __CAPGO_KEEP_4__ __CAPGO_KEEP_5__
  2. __CAPGO_KEEP_6__ __CAPGO_KEEP_7__
  3. __CAPGO_KEEP_8__ __CAPGO_KEEP_9__
  4. __CAPGO_KEEP_10__ __CAPGO_KEEP_11__

백업만으로는 당신을 구하지 못합니다. 성공적인 복원만이 당신을 구합니다.

만약 백업 생성만 테스트하고 실제로 복원 테스트를 하지 않는다면, 회복 전략을 검증하지 못했습니다. 파일이 누적되는 장소만을 검증했습니다.

안전한 데이터베이스 저장을 위한 개발자 체크리스트

이 체크리스트는 디자인 리뷰, 릴리즈 리뷰, 그리고 사후 인시던트 클린업 시 팀이 사용하는 것을 원합니다.

안전한 데이터베이스 저장 시스템을 유지하기 위한 10가지 필수적인 베스트 프랙티스를 보여주는 개발자 체크리스트 그래픽.

설계

  • _sensitive field를 명확하게 식별했습니까?: 개인 데이터, 인증 자료, 금융 기록, 그리고 보존 규칙에 따라야 하는 모든 것.
  • _storage하지 말아야 하는 field를 결정했습니까?: feature가 필요하지 않은 field, 그리고 다운스트림 팀이 피할 수 있는 복사본.
  • data가 어디서 살아남을지 매핑했습니까?: production, staging, 로그, export, 분석 시스템, 백업, 그리고 클라이언트 장치.

구현

  • 데이터는 __CAPGO_KEEP_0__에서 __CAPGO_KEEP_1__로 암호화되어 있는가: __CAPGO_KEEP_2__의 데이터베이스, 복제본, 백업 경로에 대해
  • 응용 프로그램 및 서비스 역할이 엄격하게 범위가 지정되어 있는가: 일반 앱 트래픽에 대해 공유 슈퍼 사용자 없이
  • 비밀과 암호화 키가 code와 느슨한 구성 외부에서 처리되는가: 통제된 접근 및 감사 가능성과 함께
  • 敏感한 접근 및 특권 변경이 로그되는가: 수호자들이 쿼리할 수 있는 중앙 장소에

운영

  • 키 회전 및 비밀 검토가 정상적인 운영의 일부인가: 연간의 혼란이 아닌
  • Do we regularly test restore: 복원 시스템에서 암호화, 애플리케이션 시작, 및 접근 검토를 포함합니다.
  • Do we continuously audit data sprawl: 개발 세트, 지원 수출, 개발 데이터 세트, 그리고 잊어버린 백업 위치를 포함합니다.

안전한 데이터베이스 저장은 프로젝트 단계가 아닙니다. 그것은 반복적인 실천입니다.

자주 묻는 질문

클라우드 제공업체 기본 암호화가 충분합니까

그것은 강한 기초선이지만, 완전한 전략은 아닙니다. 기본 암호화는 저장 매체 및 관리 서비스를 보호하지만, 권한이 과도한 접근, 복사된 데이터 세트, 약한 백업 제어, 또는 나쁜 키 관리를 해결하지 않습니다.

암호화가 데이터베이스 성능에 영향을 미치나요

때때로, yes. 영향은 패턴에 따라 달라집니다. 인프라 및 데이터베이스 수준 암호화는 일반적으로 더 적은 애플리케이션 복잡성을 가지고 있습니다. field-level 암호화는 선택된 데이터에 대한 더 강한 제어를 제공하지만, 인덱싱, 필터링, 및 검색을 복잡하게 할 수 있습니다. 작업 부하에 대한 측정치를 취하기 전에 광범위한 배포를 시작하기 전에.

이것은 SQL 및 NoSQL 시스템에 대해 다르나요

원칙은 동일합니다. 여전히 암호화, 최소 권한, 감사, 키 관리, 및 테스트 된 복원 필요합니다. 구현 세부 사항은 문서 저장소, 키-값 저장소, 및 관계형 시스템이 다른 접근 모델 및 쿼리 동작을 노출하기 때문에 달라집니다.

__CAPGO_KEEP_0__와 __CAPGO_KEEP_1__ 앱에 대한 __CAPGO_KEEP_0__의 고속 수정을 지원하는 __CAPGO_KEEP_0__의 주요 기능은 signed web bundle delivery, rollout controls, rollback protection, 및 release observability입니다.

__CAPGO_KEEP_2__ 오류로 인한 저장소, 인증, 또는 __CAPGO_KEEP_2__ 오류로 인한 클라이언트 측 수정을 빠르게 배포해야 하는 경우


Capgo helps teams ship fixes to Capacitor and Electron apps quickly, with signed web bundle delivery, rollout controls, rollback protection, and release observability. If your incident response plan depends on getting client-side fixes out fast after a storage, auth, or API mistake, Capgo __CAPGO_KEEP_0__

실시간 업데이트 Capacitor 앱

웹层 버그가 활성화된 상태에서, Capgo를 통해修정을 배포하는 대신, 앱 스토어 승인까지 며칠 기다리지 말고. 사용자는 배경에서 업데이트를 받으면서, 네이티브 변경 사항은 일반적인 검토 경로를 유지합니다.

시작하기

__CAPGO_KEEP_0__

Capgo이 제공하는 최고의 통찰력을 통해 완벽한 전문가 모바일 앱을 만들 수 있습니다.