Cloud SQL의 파라미터화된 보안 뷰

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 중 하나를 사용하여 호출되는 사용자 정의 함수에서 파라미터화된 뷰를 참조하면 오류가 발생합니다. 상위 쿼리에서 파라미터화된 뷰를 직접 참조해야 합니다.

다음 단계