쿼리 ACL

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 09월 04일
  • 읽기2분
  • 쿼리 ACL을 사용하면 데이터를 쿼리할 수 있는 사용자를 명시적으로 정의하여 보다 세분화된 액세스 제어를 정의할 수 있습니다.

    쿼리 ACL이란?

    쿼리 ACL 의 작업은 query_range 또는 query_match로 설정되어 있습니다. 쿼리 ACL을 사용하면 사용자 쿼리를 보다 구체적으로 제어하여 설정에 따라 액세스를 제한하거나 활성화할 수 있습니다. 쿼리 ACL은 공격자가 값을 볼 수 없는 경우에도 데이터를 맹목적으로 쿼리하여 결과에서 정보를 추출하는 블라인드 쿼리 공격에 대한 강력한 도구입니다.

    쿼리 ACL을 사용하는 경우

    열에 중요한 값이 포함되어 있고 데이터에 대한 부분/조건부 액세스를 허용하는 경우 데이터의 민감도에 따라 필요에 따라 쿼리 ACL을 고려하고 구현해야 합니다. 테이블의 행과 해당 열에 대한 부분/조건부 액세스가 있는 경우, 특히 데이터 필터에 의해 액세스가 적용되지 않는 경우 데이터의 민감도에 따라 필요에 따라 쿼리 ACL을 구현해야 합니다.

    주:
    일부 사용자는 일부 행이나 열에는 액세스할 수 있고 다른 행이나 열에는 액세스할 수 없는 경우 쿼리 ACL을 고려하십시오.

    급여 쿼리 통제

    급여 테이블에서 내 급여와 함께 한 행을 볼 수 있지만 급여가 2 개 경계 내에 포함 된 사용자를 쿼리하기 위해 범위 쿼리를 실행할 이유가 없습니다. 급여에 대한 query_range ACL로 인해 해당 쿼리를 실행할 수 없습니다.

    HR 쿼리 통제

    모든 hr_profiles 볼 수 있지만 SSN은 나 자신만 볼 수 있습니다. 저는 SSN을 쿼리할 일이 없으며, 쿼리 ACL로 인해 SSN 매핑을 추출하기 위해 다른 HR 프로필의 SSN에 대해 쿼리를 실행할 수 없습니다.

    쿼리 ACL 동작

    쿼리 ACL은 안전하고 세분화된 테이블 쿼리 동작을 위해 query_matchquery_range 작업을 사용합니다. 그들의 행동은 아래에 설명되어 있습니다.
    query_match

    query_match 는 EQUALS, NOT_EQUALS, IN, NOT_IN, SAMEAS, NSAMEAS, ANYTHING, ISEMPTYSTRING, ISEMPTY, ISNOTEMPTY, ISNULL, ISNOTNULL로 구성됩니다. query_match 는 특정 레코드를 가져오기 위해 구축되었으며 다른 레코드를 반환하는 데 악용될 수 없다는 의미에서 "안전한 연산자"로 구성됩니다.

    평가 결과 결과
    성공 사용자가 일치 쿼리를 제출할 수 있습니다.
    실패 사용자는 다음 일치 쿼리를 제출할 수 없습니다.
    • 같음
    • NOT_EQUALS
    • IN
    • NOT_IN
    • 사메아스
    • 은사미아스
    • 아무것도
    • ISEMPTYSTRING
    • 비어 있음
    • ISNOTEMPTY
    • ISNULL
    • ISNOTNULL
    query_range

    query_range 는 다른 모든 항목(STARTS_WITH, CONTAINS, >=, <= 등)으로 구성되며, 사용자가 경계 값을 조정하여 더 많은 레코드를 쿼리할 수 있으므로 더 위험합니다.

    평가 결과 결과
    성공 사용자는 범위 쿼리를 제출할 수 있으며 정렬은 제한되지 않습니다.
    실패 사용자는 (STARTS_WITH, CONTAINS, >=, <= 등의 범위 쿼리를 제출할 수 없습니다. 열을 기준으로 정렬하는 것은 제한됩니다.
    중요사항:

    쿼리 ACL(query_match 및 query_range 모두)은 기본적으로 읽기 권한을 위임하는 star.star ACL로 설정됩니다. 즉, ACL이 쿼리에 적용되는 경우 쿼리 ACL이 생성되지 않은 경우 열에 대한 읽기 액세스가 평가됩니다. 쿼리 ACL이 정의된 경우 기본 동작이 재정의됩니다.