PostgreSQL용 Cloud SQL의 파라미터화된 보안 뷰는 SQL을 지원하면서 애플리케이션에 데이터 보안 및 행 액세스 제어를 제공합니다. 이러한 뷰는 데이터 값 추출(열에서 특정 데이터 부분을 가져오는 프로세스)을 지원하며 프롬프트 인젝션 공격으로부터 보호하는 데 도움이 됩니다. 파라미터화된 보안 뷰를 사용하면 최종 사용자가 액세스해야 하는 데이터만 보도록 하는 데 도움이 됩니다.
파라미터화된 뷰는 PostgreSQL 뷰의 확장 프로그램으로, 뷰 정의에서 애플리케이션별 명명된 뷰 파라미터를 사용할 수 있습니다. 이 기능은 쿼리와 명명된 파라미터의 값을 사용하는 인터페이스를 제공합니다. 뷰는 쿼리 실행 전반에 사용되는 이러한 값으로 쿼리를 실행합니다.
다음은 파라미터화된 보안 뷰의 예입니다.
CREATE VIEW user_specific_items WITH (security_barrier) AS
SELECT item_id, item_name, description
FROM items t
WHERE owner_id = $@app_user_id;
execute_parameterized_query 함수를 사용하거나 EXECUTE .. WITH VIEW PARAMETERS 문을 실행하여 뷰를 쿼리할 수 있습니다.
사용 사례
파라미터화된 보안 뷰는 자연어 쿼리에서 변환된 쿼리와 같이 신뢰할 수 없는 소스의 임시 쿼리에 대한 데이터베이스 수준의 데이터 보안을 제공합니다. 예를 들어 파라미터화된 보안 뷰를 사용하여 사용자가 '내 주문 표시'와 같은 자연어로 쿼리를 실행할 수 있는 애플리케이션에 데이터 보안을 제공할 수 있습니다.
파라미터화된 보안 뷰를 사용하여 PostgreSQL용 Cloud SQL이 이 쿼리를 실행하는 방식에 다음 요구사항을 적용할 수 있습니다.
- 쿼리는 데이터베이스 파라미터화된 보안 뷰에 나열된 데이터베이스 객체와 열만 읽습니다.
- 쿼리는 쿼리를 제출한 사용자와 연결된 데이터베이스 행만 읽습니다. 반환된 행은 사용자의 테이블 행과 데이터 관계가 있습니다.
보안 및 액세스 제어 구성에 대한 자세한 내용은 파라미터화된 보안 뷰를 사용하여 애플리케이션 데이터 보안 관리를 참조하세요.
파라미터화된 보안 뷰는 최종 사용자가 데이터베이스 테이블에서 자연어 쿼리와 같은 신뢰할 수 없는 쿼리를 실행할 수 있을 때 발생하는 보안 위험을 완화하는 데 도움이 됩니다. 보안 위험에는 다음이 포함됩니다.
- 사용자가 프롬프트 인젝션 공격을 제출하고 기본 모델을 조작하여 애플리케이션이 액세스할 수 있는 모든 데이터를 표시하려고 시도할 수 있습니다.
- 자연어-SQL (NL2SQL) 모델은 데이터 보안상의 이유로 적절한 범위보다 더 넓은 SQL 쿼리를 생성할 수 있습니다. 이 보안 위험으로 인해 선의로 작성된 사용자 쿼리에 대한 응답에서 민감한 정보가 노출될 수 있습니다.
파라미터화된 보안 뷰를 사용하면 신뢰할 수 없는 쿼리가 데이터를 가져올 수 있는 테이블과 열을 정의할 수 있습니다. 이러한 뷰를 사용하면 개별 애플리케이션 사용자에게 제공되는 행 범위를 제한할 수 있습니다. 이러한 제한을 통해 사용자가 쿼리를 어떻게 작성하든 애플리케이션 사용자가 자연어 쿼리를 통해 볼 수 있는 데이터를 엄격하게 제어할 수도 있습니다.
데이터 보안
파라미터화된 보안 뷰는 다음 방법을 사용하여 애플리케이션 개발자에게 데이터 보안 및 행 액세스 제어를 제공합니다.
-
WITH (security barrier)절을 사용하여 만든 뷰는 악의적으로 선택된 함수와 연산자가 뷰가 작업을 완료할 때까지 행에서 값을 전달받지 못하도록 하여 행 수준 보안을 제공합니다.WITH (security barrier)절에 관한 자세한 내용은 규칙 및 권한을 참조하세요. - 명명된 뷰 파라미터를 사용하면 값으로 파라미터화된 데이터베이스의 제한된 뷰를 사용할 수 있습니다. 값은 최종 사용자 인증과 같은 애플리케이션 수준 보안을 기반으로 애플리케이션에서 제공됩니다.
- 파라미터화된 뷰에 액세스하는 쿼리에 대한 추가 제한사항을 적용하여 지정된 파라미터 값을 기반으로 뷰에서 검사를 이스케이프하는 공격을 방지합니다. 자세한 내용은 쿼리에 적용되는 제한사항을 참조하세요.
제한사항
파라미터화된 보안 뷰를 사용하려면 Cloud SQL 인스턴스에
cloudsql.enable_parameterized_views데이터베이스 플래그를 사용 설정해야 합니다. 이렇게 하려면 데이터베이스를 다시 시작해야 합니다.파라미터화된 보안 뷰를 만들려는 각 데이터베이스에서
parameterized_views확장 프로그램을 만들어야 합니다.파라미터화된 보안 뷰에 사용되는 API 중 하나를 사용하여 호출되는 사용자 정의 함수에서 파라미터화된 뷰를 참조하면 오류가 발생합니다. 상위 쿼리에서 파라미터화된 뷰를 직접 참조해야 합니다.