PostgreSQL용 AlloyDB 리소스의 강력한 보안 상황을 달성하려면 이 페이지에 제공된 권장사항을 따르세요.
검색 경로 하이재킹 방지
검색 경로 가로채기를 방지하려면 높은 권한이 있는 사용자에 대해 search_path 매개변수를 pg_catalog로 설정합니다. 이 구성은 public와 같은 신뢰할 수 없는 스키마가 우회되도록 검색 경로를 보호합니다.
사용자에 대해 이 매개변수를 영구적으로 설정하려면 다음 명령어를 실행합니다.
ALTER ROLE USER_NAME SET search_path = pg_catalog,pg_temp;
현재 세션에만 이 매개변수를 설정하려면 다음 명령어를 실행합니다.
SET search_path TO pg_catalog,pg_temp;
데이터베이스에 연결할 때 모든 사용자에 대해 이 매개변수를 설정하려면 다음 명령어를 실행합니다.
ALTER DATABASE DB_NAME SET search_path TO schema1, schema2, public;
public 스키마 보안에 대한 자세한 내용은 보안 스키마 사용에 대한 PostgreSQL 문서 및 CVE-2018-1058 가이드를 참조하세요.
외부 데이터 래퍼를 사용하여 BigQuery 데이터 액세스 보호
BigQuery 외부 데이터 래퍼 (FDW)를 사용하면 AlloyDB에서 BigQuery로의 모든 쿼리가 AlloyDB 클러스터의 서비스 계정을 사용하여 인증됩니다. 이 서비스 계정은 여러 민감한 BigQuery 데이터 세트에 액세스할 수 있으므로 일반 데이터베이스 사용자가 승인되지 않은 테이블을 매핑하지 못하도록 하는 것이 중요합니다.
최소 권한 액세스를 적용하려면 관리자가 아닌 사용자가 CREATE FOREIGN TABLE 문을 실행할 수 없도록 외부 서버에서 USAGE 권한을 제한합니다.
외부 서버에서
USAGE제한: 관리자가 아닌 역할에USAGE권한이 부여되지 않도록 하고 필요한 경우PUBLIC에서USAGE를 취소합니다.테이블 생성 중앙 집중화:
alloydbsuperuser역할이 있는 사용자와 같은 데이터베이스 관리자만 외부 테이블을 만들 수 있도록 허용합니다.선택적 액세스 권한 부여: 특정 외부 테이블에서
GRANT SELECT를 사용하여 읽기 액세스 권한을 관리합니다.
예시: 최소 권한 액세스 구성
다음 워크플로는 관리자가 일반 사용자 (bob)에게 임의의 데이터 세트를 매핑할 수 없도록 하면서 특정 BigQuery 테이블에 대한 액세스 권한을 안전하게 부여하는 방법을 보여줍니다.
관리자는 외래 서버를 만들고
PUBLIC에서USAGE권한을 취소하여 승인되지 않은 테이블 생성을 방지합니다.CREATE EXTENSION IF NOT EXISTS bigquery_fdw; CREATE SERVER bq_server FOREIGN DATA WRAPPER bigquery_fdw; -- Explicitly revoke USAGE from all users to prevent unauthorized table creation REVOKE ALL ON FOREIGN SERVER bq_server FROM PUBLIC;관리자는 일반 사용자의 사용자 매핑을 만듭니다.
CREATE USER MAPPING FOR bob SERVER bq_server;관리자로 외래 테이블을 만듭니다.
-- Because 'bob' does not have USAGE on bq_server, only the administrator can run this. CREATE FOREIGN TABLE example_table ( id INT, state VARCHAR ) SERVER bq_server OPTIONS ( project 'BIGQUERY_PROJECT_ID', dataset 'BIGQUERY_DATASET_NAME', table 'example_table' );관리자는 일반 사용자에게 특정 외부 테이블에 대한 선택적 읽기 액세스 권한을 부여합니다.
GRANT SELECT ON public.example_table TO bob;