기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon에서 데이터 확인 QLDB
중요
지원 종료 알림: 기존 고객은 07/31/2025에 지원이 종료될 QLDB 때까지 Amazon을 사용할 수 있습니다. 자세한 내용은 Amazon QLDB Ledger를 Amazon Aurora Postgre로 마이그레이션을SQL
Amazon 를 사용하면 애플리케이션 데이터에 대한 변경 기록이 정확하다고 신뢰할 QLDB수 있습니다. QLDB 는 데이터 스토리지에 저널 로 알려진 변경 불가능한 트랜잭션 로그를 사용합니다. 저널은 커밋된 데이터의 모든 변경 내용을 추적하고 시간이 지나면서 완전하고 확인 가능한 시간대별 변경 기록을 유지합니다.
QLDB 는 Merkle 트리 기반 모델과 함께 SHA-256 해시 함수를 사용하여 다이제스트라고 하는 저널의 암호화 표현을 생성합니다. 다이제스트는 특정 시점을 기준으로 데이터의 전체 변경 기록에 대한 고유한 서명 역할을 합니다. 다이제스트를 사용하여 해당 서명과 관련된 문서 수정본의 무결성을 확인할 수 있습니다.
주제
에서 어떤 종류의 데이터를 확인할 수 있나요QLDB?
에서 QLDB각 원장에는 정확히 하나의 저널이 있습니다. 저널에는 저널의 파티션인 스트랜드가 여러 개 있을 수 있습니다.
참고
QLDB 는 현재 단일 스트랜드가 있는 저널만 지원합니다.
블록은 트랜잭션 중에 저널 스트랜드에 커밋되는 객체입니다. 이 블록에는 트랜잭션으로 인한 문서 수정본을 나타내는 항목 객체가 들어 있습니다. 에서 개별 개정 또는 전체 저널 블록을 확인할 수 있습니다QLDB.
다음 다이어그램은 이 저널 구조를 보여줍니다.
다이어그램은 트랜잭션이 문서 수정본 항목이 포함된 블록 형태로 저널에 커밋됨을 보여줍니다. 또한 각 블록은 후속 블록에 해시 체인으로 연결되며 스트랜드 내에서 해당 주소를 지정하는 시퀀스 번호가 있다는 것을 보여줍니다.
블록의 데이터 내용에 대해 자세히 알아보려면 아마존의 저널 콘텐츠 QLDB 섹션을 참조하세요.
데이터 무결성이란 무엇을 의미하나요?
의 데이터 무결성은 원장의 저널이 실제로 변경할 수 없음을 QLDB 의미합니다. 즉, 데이터(특히 각 문서 수정본)는 다음과 같은 상태에 있습니다.
-
처음 작성된 저널 내 동일한 위치에 있습니다.
-
작성된 이후로 어떤 식으로든 변경되지 않았습니다.
확인은 어떻게 작동하나요?
Amazon 에서 검증이 작동하는 방식을 이해하기 위해 개념을 네 가지 기본 구성 요소로 나눌 수 QLDB있습니다.
해싱
QLDB 는 SHA-256 암호화 해시 함수를 사용하여 256비트 해시 값을 생성합니다. 해시는 임의의 양의 입력 데이터에 대해 고정된 길이의 고유한 서명 역할을 합니다. 단일 문자나 비트라도 입력의 일부를 변경하면 출력 해시가 완전히 변경됩니다.
다음 다이어그램은 SHA-256 해시 함수가 한 자리만 다른 두 QLDB 문서에 대해 완전히 고유한 해시 값을 생성함을 보여줍니다.
SHA-256 해시 함수는 한 가지 방식입니다. 즉, 출력이 주어질 때 입력을 계산하는 것이 수학적으로 가능하지 않습니다. 다음 다이어그램은 출력 해시 값을 지정할 때 입력 QLDB 문서를 계산할 수 없음을 보여줍니다.
확인을 QLDB 위해 다음 데이터 입력이 해시됩니다.
-
문서 수정
-
PATIL 문
-
수정 항목
-
저널 블록
다이제스트
다이제스트는 특정 시점의 원장 전체 일지를 암호로 표현한 것입니다. 저널은 첨부만 가능하며 저널 블록은 블록체인과 유사하게 시퀀싱되고 해시 체인으로 연결됩니다.
언제든지 원장에 대한 다이제스트를 요청할 수 있습니다. QLDB 는 다이제스트를 생성하여 보안 출력 파일로 반환합니다. 그런 다음 해당 다이제스트를 사용하여 이전 시점에 커밋된 문서 수정본의 무결성을 확인합니다. 수정본으로 시작하여 다이제스트로 끝나는 방식으로 해시를 다시 계산하면 그 사이에 데이터가 변경되지 않았음을 증명할 수 있습니다.
Merkle 트리
원장 규모가 커질수록 확인을 위해 저널의 전체 해시 체인을 다시 계산하는 것은 점점 비효율적입니다. QLDB 는 Merkle 트리 모델을 사용하여 이 비효율성을 해결합니다.
Merkle 트리는 각 리프 노드가 데이터 블록의 해시를 나타내는 트리 데이터 구조입니다. 리프가 아닌 각 노드는 해당 하위 노드의 해시입니다. 블록체인에서 일반적으로 사용되는 Merkle 트리는 감사 증명 메커니즘을 통해 대규모 데이터 세트를 효율적으로 확인하는 데 도움이 됩니다. Merkle 트리에 대한 자세한 내용은 Merkle 트리 Wikipedia 페이지
Merkle 트리의 QLDB 구현은 저널의 전체 해시 체인으로 구성됩니다. 이 모델에서 리프 노드는 모든 개별 문서 수정본 해시의 집합입니다. 루트 노드는 특정 시점을 기준으로 한 전체 저널의 다이제스트를 나타냅니다.
Merkle 감사 증명을 사용하면 원장 수정 기록의 일부 하위 집합만 확인하여 수정 내역을 확인할 수 있습니다. 주어진 리프 노드(수정본)에서 루트(다이제스트)까지 트리를 순회하여 이러한 작업을 수행할 수 있습니다. 이 순회 경로를 따라 노드 시블링 쌍을 재귀적으로 해싱하여 다이제스트가 끝날 때까지 상위 해시를 계산합니다. 이 순회는 트리에 있는 log(n)
노드의 시간 복잡도를 초래합니다.
증명
증거는 지정된 다이제스트 및 문서 개정에 대해 QLDB 반환되는 노드 해시의 순서 목록입니다. 이는 Merkle 트리 모델이 주어진 리프 노드 해시(수정본)를 루트 해시(다이제스트)에 연결하는 데 필요한 해시로 구성됩니다.
수정본과 다이제스트 사이에 커밋된 데이터를 변경하면 저널의 해시 체인이 손상되어 증명을 생성할 수 없게 됩니다.
확인 예
다음 다이어그램은 Amazon QLDB해시 트리 모델을 보여줍니다. 최상위 루트 노드로 롤업되는 블록 해시 세트를 보여 주며, 이는 저널 스트랜드의 다이제스트를 나타냅니다. 단일 스트랜드 저널이 있는 원장에서 이 루트 노드는 전체 원장의 다이제스트이기도 합니다.
노드 A가 해시를 확인하고자 하는 문서 수정본 버전이 들어 있는 블록이라고 가정해 보겠습니다. 다음 노드는 가 증명에서 QLDB 제공하는 순서가 지정된 해시 목록을 나타냅니다. B , E , G . 이러한 해시는 해시 A 에서 다이제스트를 다시 계산하는 데 필요합니다.
다이제스트를 다시 계산하려면 다음을 수행합니다.
-
해시 A로 시작하여 해시 B와 연결합니다. 그런 다음 결과를 해싱하여 D를 계산합니다.
-
D와 E를 사용하여 F를 계산합니다.
-
F와 G를 사용하여 다이제스트를 계산합니다.
재계산된 다이제스트가 예상 값과 일치하면 확인이 성공한 것입니다. 수정 해시와 다이제스트를 고려하면 증명의 해시를 리버스 엔지니어링하는 것은 불가능합니다. 따라서 이 연습은 해당 수정본이 다이제스트를 기준으로 이 저널 위치에 실제로 작성되었음을 증명합니다.
데이터 수정은 확인에 어떤 영향을 미치나요?
Amazon 에서 DELETE
문QLDB은 삭제됨으로 표시된 새 개정을 생성하여 논리적으로만 문서를 삭제합니다. QLDB 는 테이블 기록에서 비활성 문서 개정을 영구적으로 삭제할 수 있는 데이터 수정 작업도 지원합니다.
수정 작업은 지정된 수정 버전의 사용자 데이터만 삭제하고 저널 시퀀스와 문서 메타데이터는 변경되지 않습니다. 수정이 수정된 후에는 수정본의 사용자 데이터(data
구조로 표시됨)는 새 dataHash
필드로 대체됩니다. 이 필드의 값은 제거된 data
구조의 Amazon Ion 해시입니다. 수정 작업에 대한 자세한 내용과 예제는 문서 개정본 수정하기을 참조하세요.
따라서 원장은 전반적인 데이터 무결성을 유지하고 기존 검증 API 작업을 통해 암호화 방식으로 검증할 수 있습니다. 이러한 API 작업을 예상대로 사용하여 다이제스트(GetDigest)를 요청하고, 증명(GetBlock 또는 GetRevision)을 요청한 다음, 반환된 객체를 사용하여 확인 알고리즘을 실행할 수 있습니다.
수정 해시 재계산
해시를 다시 계산하여 개별 문서 수정본을 확인하려는 경우, 조건부로 수정본이 수정되었는지 여부를 확인해야 합니다. 수정본이 수정된 경우 dataHash
필드에 제공된 해시 값을 사용할 수 있습니다. 수정되지 않은 경우 data
필드를 사용하여 해시를 다시 계산할 수 있습니다.
이 조건부 검사를 통해 수정된 수정 내용을 식별하고 적절한 조치를 취할 수 있습니다. 예를 들어 모니터링을 위해 데이터 조작 이벤트를 기록할 수 있습니다.
알림 시작하기
데이터를 확인하려면 먼저 원장에서 다이제스트를 요청하고 나중을 위해 저장해야 합니다. 다이제스트에서 다루는 최신 블록 이전에 커밋된 문서 수정본은 해당 다이제스트에 대한 확인을 받을 수 있습니다.
그런 다음 확인하려는 적격 개정에 QLDB 대한 증거를 Amazon에 요청합니다. 이 증명을 사용하면 클라이언트 측을 호출API하여 개정 해시부터 다이제스트를 다시 계산합니다. 이전에 저장한 다이제스트가 외부에서 알려지고 신뢰할 QLDB수 있는 한, 다시 계산된 다이제스트 해시가 저장된 다이제스트 해시와 일치하면 문서의 무결성이 입증됩니다.
중요
-
이 다이제스트를 저장한 시점과 확인을 실행한 시점 사이에 문서 수정본이 변경되지 않았다는 것을 구체적으로 증명해야 합니다. 나중에 확인하려는 수정본이 저널에 커밋되는 즉시 다이제스트를 요청하고 저장할 수 있습니다.
-
가장 좋은 방법은 다이제스트를 정기적으로 요청하여 원장과 떨어진 곳에 보관하는 것입니다. 원장의 수정본을 커밋하는 빈도에 따라 다이제스트 요청 빈도를 결정합니다.
실제 사용 사례의 맥락에서 암호화 검증의 가치를 설명하는 자세한 AWS 블로그 게시물은 Amazon 을 사용한 실제 암호화 검증QLDB
을 참조하세요.
원장에서 다이제스트를 요청한 다음 데이터를 확인하는 방법에 대한 지침은 step-by-step 다음을 참조하세요.