이 문서에서는 PostgreSQL용 AlloyDB의 매개변수화된 보안 뷰를 설명합니다. 이 뷰는 SQL을 지원하는 동시에 애플리케이션 데이터 보안 및 행 액세스 제어를 제공합니다. 이러한 뷰는 열에서 특정 데이터를 검색하는 프로세스인 데이터 값 추출을 지원하며 프롬프트 삽입 공격을 방지하는 데 도움이 됩니다. 매개변수가 있는 보안 뷰를 사용하면 최종 사용자가 액세스해야 하는 데이터만 볼 수 있습니다.
매개변수화된 뷰는 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
플래그를 사용 설정하기 전에는 복제본에서 매개변수가 지정된 뷰를 쿼리할 수 없습니다. 이 제한은 대기 인스턴스에는 적용되지 않습니다.