타이페이, 대만 -2023 년 3 월 9 일
베타 버전의를 발표하게되어 기쁩니다.pg_anonymize.
pg_anonymize 데이터 토토 핫를위한 투명 인프라. 그것의 목표는 그것을 보장하는 것입니다 익명의 역할과 관련된 사람은 토토 핫 된 사람 만 볼 수 있습니다. 사용 된 클라이언트에 대한 제한이없는 데이터 버전 (PSQL 일 수 있습니다. PG_DUMP, 자신의 응용 프로그램 또는 PG_SAMPLE와 같은 기타 도구 ...) 또는 스키마 및 관계의 수.
토토 핫는 보안 레이블에 의존하여 선언적 접근법을 사용하여 수행됩니다. 각 열에 대한 표현을 선언하면됩니다. 토토 핫를 동적으로 수행하는 토토 핫. 유효한 올바른 유형을 산출하는 표현식을 사용할 수 있으므로 작성할 수 있습니다. 일반 SQL, PLPGSQL 또는 선택한 기타 절차 언어.
이 확장은 PostgreSQL 10 이상과 호환됩니다. 자세한 내용은 그것의 사용은를보십시오usage아래 섹션 또는Documentation.
자유롭게개방 문제당신이 문제가 발생하거나 새로운 기능을 요청하고 싶습니다.
pg_anonymize 다음 구성 옵션을 제공합니다.
pg_anonymize.enabled(bool) : 전 세계적으로 활성화 또는 비활성화 할 수 있습니다 pg_anonymize. 기본값은입니다.on.
pg_anonymize.check_labels(bool) : 정신 점검을 수행하십시오 (표현 정의 된 내용의 유효성, 읽기 전용, 반환 된 유형 및 SQL 주입 부족) 보안 레이블을 선언 할 때 표현. 기본값은입니다.on.
참고 : 경우에도pg_anonymize.check_labels비활성화, PG_ANYMIZE는 Will을 사용하지 않습니다 정의 된 표현식에 SQL 주입이 포함되어 있지 않은지 확인하십시오.
pg_anonymize를 사용하기 전에로드해야합니다. 여러 가지가 있습니다 그것을하는 방법. 일반적으로 몇 가지 역할 만 데이터 토토 핫가 필요합니다. 권장되는 방법은 그러한 역할에 대한 확장 만로드하는 것입니다. 을 위한 인스턴스, 역할을 가정Alice사용해야합니다 :
ALTER 역할 ALICE SET SESTION_PRELOAD_LIBRRIES = 'PG_ANYMINE';
참고 : Alice가 열린 세션 만이후이 명령이 있습니다 성공적으로 실행하면 pg_anonymize가로드됩니다.
예를 들어 :과 같은 대안으로 명시 적으로로드 할 수 있습니다.
로드 'pg_anonymize';
참고 :로드는 슈퍼 사용자 권한이 필요합니다.
그런 다음 토토 핫 된 데이터가 필요한 것으로 원하는 역할을 선언해야합니다. 이것 보안 레이블을 추가하여 완료토토 핫대상 역할에서. 을 위한 사례:
- PG_ANYMIDE 보안 레이블을 선언하기 전에로드해야합니다.
'pg_anonymize'로드;
역할에 대한 PG_ANYMIZE의 보안 레이블 Alice는 '토토 핫';
참고 : 역할에 대한 보안 레이블을 선언하려면 크리 테롤 특권이 필요합니다.
그런 다음 보안 레이블로 각 열을 토토 핫하는 방법을 선언 할 수 있습니다. 실제 내용을 대체하기위한 표현식 정의.
예를 들어 단순한 고객 테이블을 가정하면 :
`` Table Public.Customer (ID Integer, First_name 텍스트, last_name 텍스트, 생일 날짜, phone_number text);
customer 값 (1, 'nice', 'customer', '1970-03-04', '+886 1234 5678')에 삽입
Grant Grant Public.customer to Alice; ```
성, 생일 및 전화 번호를 토토 핫하자 :
column public.customer.last_name에서 pg_anonymize의 보안 레이블
$$ substr (last_name, 1, 1) ||입니다 '*****'$$;
PG_ANYMIZE의 보안 레이블 공개 공개 .customer.birthday
$$ date_trunc ( 'Year', Birthday) :: date $$;
public.customer.phone_number에서 pg_anonymize에 대한 보안 레이블
is $$ regexp_replace (phone_number, '\ d', 'x', 'g') $$;
참고 : 열에서 보안 레이블을 선언하려면 과잉 관계.
theAlice역할은 이제 토토 핫 된 데이터를 자동으로 볼 수 있습니다. 예를 들어:
`` - 현재 역할은 정상 데이터를 봅니다 =# public.customer에서 * 선택 *; id | First_name | Last_name | 생일 | 폰_number ----+-----------+------------------------------------- 1 | 좋은 | 고객 | 1970-03-04 | +886 1234 5678 (1 행)
- 그러나 Alice는 토토 핫 된 데이터를 볼 수 있습니다 =# \ c- 앨리스 당신은 이제 "rjuju"에 대한 데이터베이스에 연결되어 있습니다. "Alice".
= public.customer에서 선택 * 선택; id | First_name | Last_name | 생일 | 폰_number ----+-----------+------------------------------------- 1 | 좋은 | 기음*| 1970-01-01 | +xxx xxxx xxxx (1 행)
- PG_DUMP도 토토 핫 된 데이터를 볼 수 있습니다 $ pg_dump -u alice -t public.customer -a rjuju | Grep "Copy"-a2 stdin에서 public.customer (id, first_name, last_name, 생일, phone_number)를 복사합니다. 1 좋은 C*1970-01-01 +xxx xxxx xxxx . ```