AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.

사용 중 암호화

사용 중 암호화라는 기능 세트를 사용하여 Node.js 드라이버로 특정 문서 필드를 암호화할 수 있습니다. 사용 중 암호화를 사용하면 애플리케이션에서 데이터를 MongoDB로 보내기 전에 암호화하고 암호화된 필드가 있는 문서를 쿼리할 수 있습니다.

경고

MongoDB 8.2 알려진 문제

mongocryptd 의 8.2.0 버전은 Windows 에서 실행 되지 않을 수 있습니다. 이 버그는 mongocryptd를 시작할 때 --logpath NUL 인수를 지정하는 경우 운전자 의 사용 중 암호화 영향을 줍니다.

이 문제와 해결 방법에 대해 자세히 학습하려면 MongoDB 8.2 의 알려진 문제 를 참조하세요. 릴리스 노트.

사용 중 암호화는 권한이 없는 사용자가 일반 텍스트 데이터가 MongoDB로 전송되거나 암호화된 데이터베이스에 있는 동안에는 볼 수 없도록 합니다. 애플리케이션에서 사용 중 암호화를 활성화하고 데이터 암호 해독 권한을 부여하려면 애플리케이션만 액세스할 수 있는 암호화 키를 만들어야 합니다. 암호화 키에 액세스할 수 있는 애플리케이션만 해독된 일반 텍스트 데이터에 액세스할 수 있습니다. 공격자가 데이터베이스에 액세스하는 경우 암호화 키에 대한 액세스 권한이 없기 때문에 암호화된 암호 텍스트 데이터만 볼 수 있습니다.

사용 중 암호화를 사용하여 다음과 같은 유형의 민감한 데이터가 포함된 MongoDB 문서의 필드를 암호화할 수 있습니다.

  • 신용 카드 번호

  • 주소

  • 건강 정보

  • 재무 정보

  • 기타 민감한 정보 또는 개인 식별 정보(PII)

MongoDB는 사용 중 암호화를 활성화하기 위해 다음과 같은 기능을 제공합니다.

Queryable Encryption(QE)은 사용 중 암호화 기능으로, 암호화된 필드 값에 대해 쿼리를 실행할 수 있습니다. MongoDB Server 7.0 이상에서는 QE 동등 쿼리를 지원합니다. MongoDB Server 8.0 이상에서는 QE 범위 쿼리도 지원합니다.

Queryable Encryption 에 학습 보려면 MongoDB Server 매뉴얼의 Queryable Encryption 을 참조하세요.

클라이언트 사이드 필드 레벨 암호화(CSFLE)는 MongoDB Server 버전 4.2에 도입되었으며, 암호화된 필드에 대한 동일성 검색을 지원합니다. CSFLE는 필드를 암호화하기 위해 결정론적 또는 무작위 암호화 알고리즘을 선택할 수 있다는 점에서 Queryable Encryption와 다릅니다. CSFLE를 사용하는 경우 결정론적 암호화 알고리즘을 사용하는 암호화된 필드만 쿼리할 수 있습니다. 무작위 암호화 알고리즘을 사용하여 CSFLE의 필드를 암호화하는 경우 해독할 수는 있지만 해당 필드에 대해 동일성 쿼리를 수행할 수는 없습니다. Queryable Encryption을 사용하면 암호화 알고리즘을 지정할 수 없지만 암호화된 모든 필드를 쿼리할 수 있습니다.

값을 결정론적으로 암호화하면 동일한 입력 값이 동일한 출력 값을 생성합니다. 결정론적 암호화를 사용하면 암호화된 필드에 대해 쿼리를 수행할 수 있지만 카디널리티가 낮은 암호화된 데이터는 빈도 분석으로 인한 코드 손상에 취약합니다.

팁

이러한 개념에 대해 자세히 알아보려면 다음 Wikipedia 항목을 참조하세요.

CSFLE에 대해 자세히 알아보려면 서버 매뉴얼에서 CSFLE를 참조하세요.

MongoDB Server 8.1부터는 사용 중 암호화 위해 구성된 클라이언트와 함께 $lookup 집계 단계를 사용할 수 있습니다. 이 기능 사용하려면 mongodb-client-encryption 패키지 버전 6.3.0 이상이 필요합니다.

$lookup 단계를 사용하면 애플리케이션 코드에서 수동으로 문서를 가져오고 결합할 필요 없이 암호화됨 컬렉션 전체에서 관련 데이터를 결합할 수 있습니다. 소스 컬렉션 과 from 컬렉션 모두 사용 중 암호화 사용하도록 구성해야 합니다. localField 및 foreignField 에 지정된 필드는 암호화됨 필드가 아니어야 합니다.

다음 예시 암호화됨 컬렉션 에 대한 $lookup 작업을 보여줍니다.

const pipeline = [
{
$lookup: {
from: "encryptedCollection",
localField: "userId",
foreignField: "_id",
as: "userDetails"
}
}
];
const results = await collection.aggregate(pipeline).toArray();