문제

데이터베이스 서버에 연결되는 응용 프로그램 서버가 있습니다. 저는 사용자에게 설치 프로그램을 제공 할 수 있으며, 적당한 정도의 편안함을 통해 데이터베이스 스키마가 안전하다고 신뢰합니다.

설치 한 컴퓨터를 제어하지 않으면 서 수용해야 할 위험이 있다는 것을 이해합니다. 올바른 도구와 지식을 가진 결정된 사람은 메모리를 직접보고 정보를 끌어낼 수 있습니다.

처음에 나는 내 초점 영역이 단순히 육각 편집기에서 사소하게 보지 않고 설치 프로그램에 자격 증명을 추가하는 것이라고 생각했습니다.

그러나 연구를 시작했을 때 PostgreSQL의 경우 데이터베이스를 조용히 설치하고 사용자에게 자격 증명을 제공하지 않더라도 텍스트 기반 구성 파일 (PG_HBA.CONF)을 변경할 수 있다는 것을 알게되었습니다. 서버를 다시 시작하여 자격 증명없이 데이터베이스에 대한 전체 액세스를 가능하게합니다.

이 시나리오가 다른 DBMS에서 보호됩니까? 이 시나리오에서 대부분의 상업용 제품은 어떻게 스키마를 보호합니까? 대부분의 제품은 임베디드 데이터베이스를 사용합니까?


편집 : 일부 제품은 사용자가 실제로 직접 만지지 않는 데이터베이스에 의존한다고 가정합니다. 그리고 물론 사용자는 아마도 임베디드 데이터베이스를 사용하는 방식으로 설계했기 때문에 절대 보지 못합니다.

도움이 되었습니까?

해결책

대부분의 상업 제품은 스키마를 보호하지 않습니다. 그들은 두 캠프 중 하나에 속합니다.

제품의 주요 구성 요소 (예 : 급여 시스템)에 대한 엔터프라이즈 클래스 데이터베이스를 사용하고 있으며,이 경우 스키마/데이터를 숨기려는 시도가 없습니다. 이러한 경우 대부분의 경우 고객은 데이터베이스에 대한 제어가 필요합니다. 데이터베이스 백업 방법을 구성하고 클러스터링 된 환경 등을 만들 수 있습니다.

다른 사례는 "데이터베이스"가 데스크탑 응용 프로그램을위한 작은 설정 또는 저장 파일 일뿐입니다 (예 : Firefox의 기록 및 북마크 데이터베이스). 이 경우 내장 된 데이터베이스 (예 : SQLITE, Firefox와 같은)를 사용하고 스트리밍 암호화 계층을 추가하거나 (참조라는 공식 버전이 있습니다) 임베디드 데이터베이스를 사용하고 암호화 계층을 잊어 버려야합니다. 사용자는 파일을 처음 읽으려면 자체 데이터베이스 도구를 설치해야합니다.

다른 팁

내가 기억하는 한 "보호하다" 그들의 스키마. 스키마가 무엇을 보호하기를 원하십니까?

다음 사항을 고려하십시오.

  • 결국, RDBMS에서 무엇이든 보호 할 수있는 유일한 사람은 데이터베이스 서버 관리자입니다. 그리고이 스키마 가이 사람으로부터 보호되기를 원하십니까?

  • 내가 의상을 입고 있었고 나는 가지고 있다면 내 데이터 스키마 내부에서는 직접보고 소비 할 수있을뿐만 아니라 기대할뿐만 아니라 기대합니다.

  • 관계형 디자인을 보호해야합니까? 정말 흥미 롭습니까? 숨어있을 가치가있는 것을 발명 했습니까? 나는 정말로 그렇게 생각하지 않습니다. 그리고 당신이 있다면 미리 사과드립니다.


편집 : 추가 의견 :

나는 내가 사용하는 제품에 대한 대부분의 데이터베이스 내부에 신경 쓰지 않습니다. 그것이 내가 그들 중 대부분이 그들을 보호하기 위해 어떤 조치도 취하지 않는다고 생각하는 또 다른 이유입니다. 그들 대부분은 그다지 흥미롭지 않습니다.

한편으로, 나는 사용자가 데이터베이스의 내부를 알거나 돌볼 필요가 없어야한다고 믿습니다. 그러나 같은 수준에서 개발자와 같은 수준에서 나는 그것이 그들을 보호하려고 노력할 가치가 없다고 생각합니다. 사용자로부터 숨기고 있습니다. 대부분의 경우 직접 액세스로부터 보호하십시오. 그리고 스키마를 보호하는 것이 잘못이라고 생각하기 때문이 아닙니다. 그것은 내가하기가 매우 어려운 일이라고 생각하기 때문입니다. 그리고 그것은 개발자로서 당신의 시간의 가치가 없습니다.

그러나 결국, 보안 관련 주제와 마찬가지로 유일한 정답은 위험 관련 대 소송 비용 보안 조치 구현

임베디드 또는 서버 스타일의 현재 데이터베이스 엔진은 데이터베이스의 스키마를 쉽게 숨기도록 설계되지 않았으므로 수행하는 개발 비용은 대부분의 사람들에게 관련된 위험보다 훨씬 큽니다.

그러나 귀하의 경우는 다를 수 있습니다.

어떤 문제를 해결하려고합니까? DBA*가 표준 데이터베이스에 원하는 모든 일을하는 것을 막을 수있는 것은 없으며, 다른 사람들이 지적했듯이 백업 및 데이터베이스 업그레이드와 같은 사이트 별 요구를 방해하는 것은 적극적으로 적대적입니다. 최대에는 데이터베이스의 내용을 암호화 할 수 있지만, 심지어 응용 프로그램이 실제로 실행되기 위해 암호 해독 키를 제공해야하며 동기 부여 및 적대적인 DBA가이를 전복시킬 수 있습니다.

군사 및 정보 공동체는 의심 할 여지없이 스키마조차도 고도로 분류되는 데이터베이스를 가지고 있지만 기술적 수단 또는 총이있는 큰 남성으로 보호되는지 모르겠습니다.

(*) DBA 또는 시스템 관리자는 pg_hba.conf와 같은 파일을 수정할 수 있습니다.

이 시나리오에서 대부분의 상업용 제품은 어떻게 스키마를 보호합니까?

나는 대부분의 상업용 제품이 스키마를 보호하기 위해 무엇이든하는 것을 믿지 않습니다.

내장 된 DBM 이이 DBMS가 실행중인 기계에 물리적으로 액세스 할 때 어떻게 스토리지 (이 교정되지 않은 하드웨어 컨텍스트의 파일)를 땜질 할 수있는 사람을 어떻게 막을 수 있습니까? 모호함을 통한 보안 위험한 제안입니다.

이 아이디어는 DRM과 같은 문제로 어려움을 겪을 것입니다. 당신은 결정된 사람들의 접근을 방해 할 수 없으며, 당신은 고객에게 일반적인 고통과 고통 만 유발할 것입니다. 그냥하지 마세요.

SQLITE는 전체 데이터베이스 형식을 단일 파일로 랩핑하여 현장에서 암호를 암호화하고 해독 할 수 있습니다. 물론 결함은 사용자가 지금 데이터베이스를 사용하기 위해 열쇠가 필요하다는 것입니다. 그리고 발생할 수있는 유일한 방법은 컴파일 타임 (모호한 보안)에서 하드 코딩하여 그들에게 제공하는 것입니다. 전화 재택 계획 (이것이 나쁜 아이디어 인 이유가 다릅니다). 또한 유용한 백업 시스템에 대한 시도를 방해하고 부팅하기 위해 끔찍한 성능을 얻었 기 때문에 이제 그들은 당신을 미워할 것입니다.

게다가 아무도 실제로 스키마에 관심이 없습니다. 당신에게 그것을 깨뜨리는 것을 싫어하지만, 스키마 디자인은 어려운 문제가 아니며, 합법적 인 경쟁 우위 (지식 표현 및 데이터웨어 하우징과 같은 몇 가지 특정 영역 이외의)는 결코 결코 결코 경쟁하지 않습니다. 스키마는 일반적으로 처음부터 보호 할 가치가 없습니다.

그것이 당신에게 정말로 중요하다면, 대신 호스팅 된 응용 프로그램을하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top