변경 내역에 대해 세분화된 액세스 제어

이 페이지에서는 세분화된 액세스 제어가 Spanner 변경 내역에 작동하는 방식을 설명합니다.

세분화된 액세스 제어 사용자의 경우 다음 권한을 사용하여 변경 내역 데이터에 대한 읽기 액세스를 허용합니다. 두 권한 모두 필요합니다.

  • 변경 내역에 SELECT를 부여합니다.

    GoogleSQL

    GRANT SELECT ON CHANGE STREAM CHANGE_STREAM_NAME TO ROLE ROLE_NAME;
    

    PostgreSQL

    GRANT SELECT ON CHANGE STREAM CHANGE_STREAM_NAME TO ROLE_NAME;
    
  • 변경 내역에 자동으로 생성된 읽기 함수에 대한 EXECUTE를 부여합니다. 읽기 함수를 사용하여 변경 내역 레코드를 읽습니다.

    GoogleSQL

    GRANT EXECUTE ON TABLE FUNCTION READ_FUNCTION_NAME TO ROLE ROLE_NAME;
    

    PostgreSQL

    GRANT EXECUTE ON FUNCTION READ_FUNCTION_NAME TO ROLE_NAME;
    

    변경 내역 읽기 함수의 이름 지정 규칙 및 반환되는 정보의 형식 지정에 대한 자세한 내용은 다음 주제를 참조하세요.

변경 내역에 대한 INFORMATION_SCHEMA

다음 뷰는 변경 내역에 대한 데이터베이스 역할 및 권한 정보를 보여줍니다.

이 뷰의 행은 변경 내역에 대한 현재 데이터베이스 역할의 권한을 기준으로 필터링됩니다. 이렇게 하면 주 구성원이 액세스 권한이 있는 역할, 권한, 변경 내역만 볼 수 있습니다.

행 필터링은 다음 변경 내역 관련 뷰에도 적용됩니다.

GoogleSQL

시스템 역할 spanner_info_reader 및 해당 구성원은 항상 필터링되지 않은 INFORMATION_SCHEMA를 확인합니다.

PostgreSQL

시스템 역할 spanner_info_reader 및 해당 구성원은 필터링되지 않은 information_schema를 확인합니다.

행 필터링은 변경 내역 읽기 함수에 대한 다음 메타데이터 뷰에도 적용됩니다.

주의사항

  • 변경 내역은 메타데이터 데이터베이스를 사용하여 내부 상태를 유지합니다. 메타데이터 데이터베이스는 애플리케이션 데이터베이스와 동일하거나 다를 수 있습니다. 다른 데이터베이스를 사용하는 것이 좋습니다. 하지만 세분화된 액세스 제어 사용자의 경우 메타데이터 데이터베이스는 애플리케이션 데이터베이스와 동일할 수 없습니다. 이는 Dataflow 작업을 실행하는 IAM 주 구성원에게 메타데이터 데이터베이스의 데이터베이스 수준에서 읽기/쓰기 액세스 권한이 필요하기 때문입니다. 이렇게 하면 애플리케이션 데이터베이스에 대해 구성된 세분화된 액세스 제어 권한이 재정의됩니다.

    자세한 내용은 별도의 메타데이터 데이터베이스 고려를 참조하세요.

  • 변경 내역에는 추적되는 테이블 및 열의 데이터 사본이 별도로 포함되어 있으므로 사용자에게 변경 내역에 대한 액세스 권한을 부여할 때는 주의해야 합니다. 변경 내역의 리더는 테이블 및 열에 대한 SELECT 권한이 없는 경우에도 추적된 테이블과 열의 데이터 변경사항을 볼 수 있습니다. 변경 내역과 추적된 테이블 및 열에 별도의 제어를 설정하는 것이 더 유연할 수 있지만 그에 따라 잠재적 위험이 있으므로 데이터베이스 역할 및 권한을 구조화해야 합니다. 예를 들어 역할에서 테이블에 대한 SELECT 권한을 취소할 때 변경 내역에서 SELECT를 취소하고 관련 읽기 함수에서 EXECUTE을 취소할지 여부를 고려합니다.

  • 모든 테이블을 추적하는 변경 내역에 SELECT를 부여하면 부여받는 사람은 향후에 추가되는 모든 테이블의 데이터 변경사항을 볼 수 있습니다.

추가 정보