2010-02-24 3 views
3

우리는 우리의 인프라에 Memcached를 통합하려고하지만 보안 문제가 있습니다. 우리는 ASP.NET과 ColdFusion을 포함한 여러 플랫폼을 운영하며 많은 플랫폼 개발자들이 다양한 플랫폼에서 많은 작은 응용 프로그램을 사용하게합니다. 문제는 다음과 같습니다.다중 응용 프로그램 서버 환경 및 Memcached 보안

App A는 항목 "dog"를 캐시에 저장합니다. 일명 "도난"

이런 일이 발생하면, 인앱을하거나 잘못된 정보를 검색하거나, 이미 정보를 조회했다 :

응용 프로그램 B는 항목에 "개"를 읽고 (응용 프로그램 B 업데이트 항목 "개"또는 악화) . 우리가하고 싶은 것은 각 앱이 자체 샌드 박스와 만 상호 작용할 수 있도록하고 다른 애플리케이션의 데이터를 방해하거나 읽을 수 없도록 만드는 것입니다.

이것이 가능합니까? 감사.

+2

특정 앱이 캐시에 액세스 할 때 애플리케이션에서 사용하려는 식별자 앞에 애플리케이션 별 식별자를 추가하십시오. –

+0

memcached는 부분 식별자로 작동합니까? 예를 들어, dog_Name 및 dog_SSN 키가 있으면 "d *"를 쿼리하여 "d"로 시작하는 모든 키를 얻을 수 있습니까? 또는 키가 정확히 일치해야합니까? – jocull

+0

Memcached는 매우 간단하며 정규 표현식을 지원하지 않으며 범용 데이터베이스가 아닙니다. 분산 사전입니다. 검색 할 정확한 키를 요청합니다. –

답변

1

인프라에서 여러 개의 memcached 인스턴스를 만들고 각 인스턴스에 다른 포트를 지정하십시오. 이렇게하면 자신을 격리 할 수 ​​있습니다. 그러나 이것은 원하는 방식이 아니므로 사용 가능한 메모리 리소스를 분할해야합니다.


Anon의 제안을 사용하여 "규칙"을 사용할 수 있어야합니다.

나의 조언은 : 보호해야 할 모든 것은 memcached 인스턴스에 있어서는 안됩니다. anon의 조언과 최선의 방법으로 생각하는 것을 사용하십시오.

+0

나는이 아이디어도 가지고 있으며, 우리 서버 관리자가 우리를 싫어할지도 모른다 고 생각했습니다. 그래도 비슷한 아이디어를 듣는 것이 좋습니다. 감사. – jocull

0

memcached는 퍼포먼스의 이름으로 퍼지기 (액세스 제어리스트 없음, 캐시 내용 변조 방지, 트래픽 프라이버시 없음 등)로부터 보안을 제거하고 있습니다. 액세스 제어 (SASL)는 선택적으로 memcached로 컴파일 될 수 있지만 대부분의 시간은 생략됩니다.

캐시에있는 항목의 내용이나 개인 정보를 변조해야하는 경우 앱에 구현해야합니다 (즉, 캐시 된 콘텐츠를 업로드하기 전에 서명 또는 암호화해야 함)하지만 서명/각 캐시 액세스로 서명을 암호화 및/또는 암호화/해독 할 수 있으며 이러한 작업을 수행하는 데 필요한 키를 프로비저닝하는 데 상당히 복잡한 문제가 있습니다.

0

신뢰할 수없는 환경에서 승인되지 않은 액세스를 방지하기 위해 SASL auth와 함께 제공되는 마지막 몇 가지 버전입니다.

개발 트리에서는 플러그 가능한 스토리지 엔진을 지원하므로 앱간에 캐시를 분리하는 것과 같은 재미있는 작업을 수행 할 수 있습니다. 예를 들어 서로의 데이터를 볼 수없는 많은 사용자가있는 배포 된 인스턴스가 있습니다. User1은 dog을 캐시 할 수 있고 User2는 dog을 캐시 할 수 있으며 간섭하지 않습니다.

관련 문제