비컨 유형 선택 - AWS 데이터베이스 암호화 SDK

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

비컨 유형 선택

클라이언트 측 암호화 라이브러리는 AWS 데이터베이스 암호화 SDK로 이름이 변경되었습니다. 이 개발자 안내서는 여전히 DynamoDB Encryption Client에 대한 정보를 제공합니다.

검색 가능한 암호화를 사용하면 암호화된 필드의 일반 텍스트 값을 비컨으로 매핑하여 암호화된 레코드를 검색할 수 있습니다. 구성하는 비컨 유형에 따라 수행할 수 있는 쿼리 유형이 결정됩니다.

비컨을 구성하기 전에 수행해야 하는 쿼리 유형을 식별하고 계획하는 것이 좋습니다. 비컨을 구성한 후 암호화된 필드를 검색하려면 먼저 각 비컨에 대한 보조 인덱스를 구성해야 합니다. 자세한 정보는 비컨을 사용한 보조 인덱스 구성을 참조하세요.

비컨은 필드에 기록된 일반 텍스트 값과 데이터베이스에 실제로 저장된 암호화된 값 사이의 맵을 만듭니다. 두 표준 비컨에 동일한 기본 일반 텍스트가 포함되어 있더라도 두 표준 비컨의 값을 비교할 수는 없습니다. 두 개의 표준 비컨은 동일한 일반 텍스트 값에 대해 서로 다른 두 개의 HMAC 태그를 생성합니다. 따라서 표준 비컨은 다음 쿼리를 수행할 수 없습니다.

  • beacon1 = beacon2

  • beacon1 IN (beacon2)

  • value IN (beacon1, beacon2, ...)

  • CONTAINS(beacon1, beacon2)

복합 비컨의 서명된 부분을 비교하는 경우에만 위의 쿼리를 수행할 수 있습니다. 단, 복합 비컨과 함께 사용하여 조합된 비컨에 포함된 암호화되거나 서명된 필드의 전체 값을 식별할 수 있는 CONTAINS 연산자는 예외입니다. 서명된 부분을 비교할 때 선택적으로 암호화된 부분의 접두사를 포함할 수 있지만 필드의 암호화된 값은 포함할 수 없습니다. 표준 및 복합 비컨이 수행할 수 있는 쿼리 유형에 대한 자세한 내용은 비컨 쿼리를 참조하세요.

데이터베이스 액세스 패턴을 검토할 때 다음과 같은 검색 가능한 암호화 솔루션을 고려하세요. 다음 예제는 다양한 암호화 및 쿼리 요구 사항을 충족하도록 구성할 비컨을 정의합니다.

표준 비컨

표준 비컨은 평등 검색만 수행할 수 있습니다. 표준 비컨을 사용하여 다음 쿼리를 수행할 수 있습니다.

암호화된 단일 필드 쿼리

암호화된 필드의 특정 값이 포함된 레코드를 식별하려면 표준 비컨을 만드세요.

다음 예제에서는 프로덕션 시설에 대한 검사 데이터를 추적하는 UnitInspection라는 이름의 데이터베이스를 고려합니다. 데이터베이스의 각 레코드에는 work_id, inspection_date, inspector_id_last4, 및 unit라는 필드가 있습니다. 전체 검사기 ID는 0~99,999,999 사이의 숫자입니다. 하지만 데이터세트가 균일하게 분포되도록 하기 위해 inspector_id_last4에는 검사기 ID의 마지막 4자리만 저장됩니다. 데이터베이스의 각 필드는 프라이머리 키 work_id로 식별됩니다. inspector_id_last4unit 필드는 암호화 작업에서 ENCRYPT_AND_SIGN으로 표시됩니다.

다음은 UnitInspection 데이터베이스의 일반 텍스트 항목의 예입니다.

{ "work_id": "1c7fcff3-6e74-41a8-b7f7-925dc039830b", "inspection_date": 2023-06-07, "inspector_id_last4": 8744, "unit": 229304973450 }
레코드의 단일 암호화된 필드 쿼리

inspector_id_last4 필드를 암호화해야 하지만 정확히 일치하는지 쿼리해야 하는 경우 inspector_id_last4 필드에서 표준 비컨을 생성합니다. 그런 다음 표준 비컨을 사용하여 보조 인덱스를 만듭니다. 이 보조 인덱스를 사용하여 암호화된 inspector_id_last4 필드를 쿼리할 수 있습니다.

표준 비컨 구성에 대한 도움말은 표준 비컨 구성을 참조하세요.

가상 필드 쿼리

가상 필드는 하나 이상의 소스 필드로 구성된 개념적 필드입니다. 암호화된 필드의 특정 세그먼트에 대해 동등 검색을 수행하거나 여러 필드의 연결에 대해 동등 검색을 수행하려면 가상 필드에서 표준 비컨을 구성합니다. 모든 가상 필드는 하나 이상의 암호화된 소스 필드를 포함해야 합니다.

다음 예제는 Employees 데이터베이스의 가상 필드를 만듭니다. 다음은 Employees 데이터베이스의 일반 텍스트 레코드의 예제입니다.

{ "EmployeeID": 101, "SSN": 000-00-0000, "LastName": "Jones", "FirstName": "Mary", "Address": { "Street": "123 Main", "City": "Anytown", "State": "OH", "ZIPCode": 12345 } }
암호화된 필드의 세그먼트 쿼리

이 예제에서는 SSN 필드가 암호화됩니다.

사회보장번호의 마지막 4자리를 사용하여 SSN 필드를 쿼리하려면 쿼리하려는 세그먼트를 식별하는 가상 필드를 만드십시오.

Last4SSN로 구성된 가상 Suffix(4) 필드를 사용하면 Last4SSN=0000를 쿼리할 수 있습니다. 이 가상 필드를 사용하여 표준 비컨을 구성합니다. 그런 다음 표준 비컨을 사용하여 보조 인덱스를 만듭니다. 이 보조 인덱스를 사용하여 가상 필드를 쿼리할 수 있습니다. 이 쿼리는 지정한 마지막 4자리 숫자로 끝나는 SSN 값을 가진 모든 레코드를 반환합니다.

여러 필드의 연결 쿼리
참고

다음 예제는 가상 필드로 수행할 수 있는 변환 및 쿼리 유형을 보여줍니다. 애플리케이션에서 이 예제에 사용된 예제 필드는 비컨에 대한 배포상관 관계 고유성 권장 사항을 충족하지 않을 수 있습니다.

FirstNameLastName 필드 연결에 대해 동일 검색을 수행하려는 경우 FirstName 필드의 첫 번째 문자와 그 뒤에 오는 LastName 필드(모두 소문자)로 구성되는 가상 NameTag 필드를 생성할 수 있습니다. 이 가상 필드를 사용하여 표준 비컨을 구성합니다. 그런 다음 표준 비컨을 사용하여 보조 인덱스를 만듭니다. 이 보조 인덱스를 사용하여 가상 필드에 대한 NameTag=mjones를 쿼리할 수 있습니다.

원본 필드 중 하나 이상을 암호화해야 합니다. FirstName 또는 LastName 둘 중 하나를 암호화하거나 둘 다 암호화할 수 있습니다. 모든 일반 텍스트 소스 필드는 암호화 작업에서 또는 로 SIGN_ONLY 표시되어야 합니다. SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

가상 필드 및 가상 필드를 사용하는 비컨을 구성하는 데 도움이 필요하면 가상 필드 만들기를 참조하세요.

복합 비컨

복합 비컨은 기본적 일반 텍스트 문자열과 표준 비컨에서 인덱스를 생성하여 복잡한 데이터베이스 작업을 수행합니다. 복합 비컨을 사용하여 다음 쿼리를 수행할 수 있습니다.

단일 인덱스에서 암호화된 필드 조합 쿼리

단일 인덱스에서 암호화된 필드 조합을 쿼리해야 하는 경우, 암호화된 각 필드에 대해 구성된 개별 표준 비컨을 결합하여 단일 인덱스를 형성하는 복합 비컨을 만듭니다.

복합 비컨을 구성한 후에는 복합 비컨을 파티션 키로 지정하여 정확히 일치 쿼리를 수행하거나 정렬 키를 사용하여 더 복잡한 쿼리를 수행하는 보조 인덱스를 만들 수 있습니다. 복합 비컨을 정렬 키로 지정하는 보조 인덱스는 정확히 일치하는 쿼리와 보다 맞춤화된 복합 쿼리를 수행할 수 있습니다.

다음 예제에서는 프로덕션 시설에 대한 검사 데이터를 추적하는 UnitInspection라는 이름의 데이터베이스를 고려합니다. 데이터베이스의 각 레코드에는 work_id, inspection_date, inspector_id_last4, 및 unit라는 필드가 있습니다. 전체 검사기 ID는 0~99,999,999 사이의 숫자입니다. 하지만 데이터세트가 균일하게 분포되도록 하기 위해 inspector_id_last4에는 검사기 ID의 마지막 4자리만 저장됩니다. 데이터베이스의 각 필드는 프라이머리 키 work_id로 식별됩니다. inspector_id_last4unit 필드는 암호화 작업에서 ENCRYPT_AND_SIGN으로 표시됩니다.

다음은 UnitInspection 데이터베이스의 일반 텍스트 항목의 예입니다.

{ "work_id": "1c7fcff3-6e74-41a8-b7f7-925dc039830b", "inspection_date": 2023-06-07, "inspector_id_last4": 8744, "unit": 229304973450 }
암호화된 필드 조합에서 동등 검색 수행

inspector_id_last4.unit에서 정확히 일치하는 항목을 UnitInspection 데이터베이스에 쿼리하려면 먼저 inspector_id_last4unit 필드에 대해 고유한 표준 비컨을 만듭니다. 그런 다음 두 개의 표준 비컨으로 복합 비컨을 만듭니다.

복합 비컨을 구성한 후 복합 비컨을 파티션 키로 지정하는 보조 인덱스를 만듭니다. 이 보조 인덱스를 사용하여 inspector_id_last4.unit에 대해 정확히 일치하는 항목을 쿼리할 수 있습니다. 예를 들어, 이 비컨을 쿼리하여 검사기가 특정 단위에 대해 수행한 검사 목록을 찾을 수 있습니다.

암호화된 필드 조합에 대해 복잡한 쿼리 수행

inspector_id_last4inspector_id_last4.unit에서 UnitInspection 데이터베이스를 쿼리하려면 먼저 inspector_id_last4unit 필드에 대해 고유한 표준 비컨을 만듭니다. 그런 다음 두 개의 표준 비컨으로 복합 비컨을 만듭니다.

복합 비컨를 구성한 후 복합 비컨을 정렬 키로 지정하는 보조 인덱스를 만듭니다. 이 보조 인덱스를 사용하여 특정 검사기로 시작하는 항목을 UnitInspection 데이터베이스에 쿼리하거나 특정 검사기에서 검사한 특정 장치 ID 범위 내의 모든 장치 목록을 데이터베이스에 쿼리할 수 있습니다. inspector_id_last4.unit에서 정확히 일치하는 검색을 수행할 수도 있습니다.

복합 비컨 구성에 대한 도움말은 복합 비콘 구성을 참조하세요.

단일 인덱스에서 암호화된 필드와 일반 텍스트 필드의 조합 쿼리

단일 인덱스에서 암호화된 필드와 일반 텍스트 필드를 조합하여 쿼리해야 하는 경우 개별 표준 비컨과 일반 텍스트 필드를 결합하여 단일 인덱스를 형성하는 복합 비컨을 만듭니다. 복합 비콘을 구성하는 데 사용되는 일반 텍스트 필드는 반드시 SIGN_ONLY 표시되거나 암호화 작업에 포함되어야 합니다. SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

복합 비컨을 구성한 후에는 복합 비컨을 파티션 키로 지정하여 정확히 일치 쿼리를 수행하거나 정렬 키를 사용하여 더 복잡한 쿼리를 수행하는 보조 인덱스를 만들 수 있습니다. 복합 비컨을 정렬 키로 지정하는 보조 인덱스는 정확히 일치하는 쿼리와 보다 맞춤화된 복합 쿼리를 수행할 수 있습니다.

다음 예제에서는 프로덕션 시설에 대한 검사 데이터를 추적하는 UnitInspection라는 이름의 데이터베이스를 고려합니다. 데이터베이스의 각 레코드에는 work_id, inspection_date, inspector_id_last4, 및 unit라는 필드가 있습니다. 전체 검사기 ID는 0~99,999,999 사이의 숫자입니다. 하지만 데이터세트가 균일하게 분포되도록 하기 위해 inspector_id_last4에는 검사기 ID의 마지막 4자리만 저장됩니다. 데이터베이스의 각 필드는 프라이머리 키 work_id로 식별됩니다. inspector_id_last4unit 필드는 암호화 작업에서 ENCRYPT_AND_SIGN으로 표시됩니다.

다음은 UnitInspection 데이터베이스의 일반 텍스트 항목의 예입니다.

{ "work_id": "1c7fcff3-6e74-41a8-b7f7-925dc039830b", "inspection_date": 2023-06-07, "inspector_id_last4": 8744, "unit": 229304973450 }
필드 조합에서 동등 검색 수행

특정 검사관이 특정 날짜에 실시한 검사에 대해 UnitInspection 데이터베이스를 쿼리하려면 먼저 inspector_id_last4 필드에 대한 표준 비컨을 만듭니다. 이 inspector_id_last4 필드는 암호화 작업ENCRYPT_AND_SIGN로 표시됩니다. 암호화된 모든 부분에는 자체 표준 비컨이 필요합니다. inspection_date 필드는 SIGN_ONLY로 표시가 되어 있으며 표준 비컨이 필요하지 않습니다. 다음으로, inspection_date 필드와 inspector_id_last4 표준 비컨에서 복합 비컨을 만듭니다.

복합 비컨을 구성한 후 복합 비컨을 파티션 키로 지정하는 보조 인덱스를 만듭니다. 이 보조 인덱스를 사용하여 데이터베이스에서 특정 검사기 및 검사 날짜와 정확히 일치하는 레코드를 쿼리할 수 있습니다. 예를 들어, ID가 8744로 끝나는 검사기가 특정 날짜에 실시한 모든 검사 목록을 데이터베이스에 쿼리할 수 있습니다.

필드 조합에 대해 복잡한 쿼리 수행

inspection_date 범위 내에서 수행된 검사에 대해 데이터베이스를 쿼리하거나 inspector_id_last4 또는 inspector_id_last4.unit로 제한된 특정 inspection_date에서 수행된 검사에 대해 데이터베이스를 쿼리하려면 먼저 inspector_id_last4unit 필드에 대해 별도의 표준 비컨을 생성합니다. 그런 다음 일반 텍스트 inspection_date 필드와 두 개의 표준 비컨을 사용하여 복합 비컨을 만듭니다.

복합 비컨를 구성한 후 복합 비컨을 정렬 키로 지정하는 보조 인덱스를 만듭니다. 이 보조 인덱스를 사용하여 특정 검사기가 특정 날짜에 실시한 검사에 대한 쿼리를 수행할 수 있습니다. 예를 들어 같은 날짜에 검사한 모든 단위의 목록을 데이터베이스에 쿼리할 수 있습니다. 또는 지정된 검사 날짜 범위 사이에 특정 단위에 대해 수행된 모든 검사 목록을 데이터베이스에 쿼리할 수 있습니다.

복합 비컨 구성에 대한 도움말은 복합 비콘 구성을 참조하세요.