매개변수가 있는 보안 뷰 개요

이 문서에서는 SQL을 지원하면서 애플리케이션 데이터 보안 및 행 수준 액세스 제어를 제공하는 PostgreSQL용 AlloyDB의 매개변수화된 보안 뷰에 대해 설명합니다. 이러한 뷰는 데이터 값 추출(열에서 특정 데이터 부분을 검색하는 프로세스)을 지원하며 프롬프트 인젝션 공격을 방지하는 데 도움이 됩니다. 매개변수화된 보안 뷰를 사용하면 최종 사용자가 액세스해야 하는 데이터만 볼 수 있습니다.

매개변수화된 뷰는 PostgreSQL 뷰의 확장 프로그램으로, 뷰 정의에서 애플리케이션별 명명된 뷰 매개변수를 사용할 수 있습니다. 이 기능은 명명된 매개변수의 쿼리와 값을 사용하는 인터페이스를 제공합니다. 뷰는 이러한 값으로 쿼리를 실행하며, 이 값은 해당 쿼리의 실행 전반에 걸쳐 사용됩니다.

다음은 매개변수화된 보안 뷰의 예입니다.

CREATE VIEW secure_checked_items WITH (security_barrier) AS
       SELECT bag_id, timestamp, location
       FROM checked_items t
       WHERE customer_id = $@app_end_userid;

execute_parameterized_query 저장 프로시저를 사용하거나 EXECUTE .. WITH VIEW PARAMETERS 문을 실행하여 뷰를 쿼리할 수 있습니다.

사용 사례

매개변수화된 보안 뷰는 자연어 쿼리에서 변환된 쿼리와 같이 신뢰할 수 없는 소스의 임시 쿼리에 대한 데이터 보안 관리에 적합합니다. 예를 들어 여행하는 고객의 체크인된 수하물을 추적하는 데이터베이스가 있는 애플리케이션을 생각해 보세요. 이러한 고객은 애플리케이션에 쿼리를 실행할 수 있습니다. 예를 들어 애플리케이션 사용자 ID가 12345인 고객은 애플리케이션에 '내 가방은 어디에 있어?'와 같은 질문을 입력할 수 있습니다.

매개변수화된 보안 뷰를 사용하여 AlloyDB가 이 쿼리를 실행하는 방식에 다음 요구사항을 적용할 수 있습니다.

  • 쿼리는 데이터베이스 매개변수화된 보안 뷰에 나열된 데이터베이스 객체와 열만 읽을 수 있습니다.
  • 쿼리는 쿼리를 제출한 사용자와 연결된 데이터베이스 행만 읽을 수 있습니다. 반환된 행은 ID 열 값이 12345인 사용자의 표 행과 데이터 관계가 있습니다.

보안 및 액세스 제어 구성에 대한 자세한 내용은 매개변수화된 보안 뷰를 사용하여 애플리케이션 데이터에 대한 액세스 보안 및 제어를 참고하세요.

파라미터화된 보안 뷰는 최종 사용자가 데이터베이스 테이블에서 자연어 쿼리와 같은 신뢰할 수 없는 쿼리를 실행할 수 있을 때 발생하는 보안 위험을 완화하는 데 도움이 됩니다. 보안 위험에는 다음이 포함됩니다.

  • 사용자는 프롬프트 삽입 공격을 제출하고 기본 모델을 조작하여 애플리케이션이 액세스할 수 있는 모든 데이터를 표시하려고 시도할 수 있습니다.
  • LLM이 데이터 보안상의 이유로 적절한 것보다 범위가 넓은 SQL 쿼리를 생성할 수 있습니다. 이 보안 위험으로 인해 선의로 작성된 사용자 질문에 대한 응답에서도 민감한 정보가 노출될 수 있습니다.

매개변수화된 보안 뷰를 사용하면 신뢰할 수 없는 쿼리가 데이터를 가져올 수 있는 테이블과 열을 정의할 수 있습니다. 이러한 뷰를 사용하면 개별 애플리케이션 사용자가 사용할 수 있는 행의 범위를 제한할 수 있습니다. 이러한 제한을 통해 사용자가 쿼리를 어떻게 표현하든 애플리케이션 사용자가 자연어 쿼리를 통해 볼 수 있는 데이터를 엄격하게 제어할 수도 있습니다.

보안 메커니즘

매개변수화된 보안 뷰는 다음 방법을 사용하여 애플리케이션 개발자에게 데이터 보안 및 행 액세스 제어를 제공합니다.

  • WITH (security barrier) 옵션을 사용하여 만든 뷰는 뷰가 작업을 완료할 때까지 악의적으로 선택된 함수와 연산자가 행의 값을 전달받지 못하도록 하여 행 수준 보안을 제공합니다. WITH (security barrier)절에 대한 자세한 내용은 규칙 및 권한을 참고하세요.
  • 명명된 뷰 매개변수를 사용한 매개변수화는 최종 사용자 인증과 같은 애플리케이션 수준 보안을 기반으로 애플리케이션에서 제공한 값으로 매개변수화된 데이터베이스의 제한된 뷰를 허용합니다.
  • 지정된 매개변수 값을 기반으로 뷰에서 검사를 이스케이프하는 공격을 방지하는 매개변수화된 뷰에 액세스하는 쿼리에 대한 추가 제한사항의 시행 자세한 내용은 쿼리에 적용되는 제한사항을 참고하세요.

제한사항

  • 매개변수화된 보안 뷰에 사용되는 API 중 하나를 사용하여 호출되는 사용자 정의 함수에서 매개변수화된 뷰를 참조하면 오류가 발생합니다. 상위 쿼리에서 매개변수화된 뷰를 직접 참조해야 합니다.

  • AlloyDB의 모든 인스턴스에서 매개변수화된 뷰 플래그를 별도로 사용 설정해야 합니다. 기본 인스턴스에서 생성된 매개변수화된 뷰 객체는 읽기 전용 복제본과 리전 간 복제본에 전파됩니다. 하지만 parameterized_views.enabled 플래그 설정은 자동으로 복제되지 않으며 각 인스턴스에서 수동으로 복제해야 합니다. 자세한 내용은 시작하기 전에를 참고하세요. 각 복제본 인스턴스에서 parameterized_views.enabled 플래그를 사용 설정하기 전에는 복제본에서 매개변수화된 뷰를 쿼리할 수 없습니다. 이 제한은 대기 인스턴스에는 적용되지 않습니다.

다음 단계