업그레이드 후 객체 소유권 차이 해결 - Amazon Aurora

업그레이드 후 객체 소유권 차이 해결

Babelfish 버전 4.6 이상 및 5.2 이상에는 TDS 엔드포인트를 통한 객체 소유권 처리에 대한 변경 사항이 포함되어 있습니다. TDS 엔드포인트를 통해 새 객체를 생성하면 기존 사용자 대신 스키마 소유자가 이러한 객체를 소유합니다. 이 소유권 변경은 4.6 또는 5.2 이전 버전에서 업그레이드할 때 기존 객체와 비교하여 새 객체의 권한 동작에 영향을 미칠 수 있습니다.

이러한 소유권 차이를 해결하기 위해 Babelfish는 sys.generate_alter_ownership_statements() 함수를 제공합니다. 이 함수는 객체 소유권을 스키마 소유권과 일치시키는 SQL 문을 생성합니다.

객체 소유권을 처리할 때 다음 제한 사항에 유의하세요.

  • PostgreSQL 엔드포인트를 통해 CREATE 권한을 부여받은 사용자는 해당 스키마의 TDS 엔드포인트를 통해 객체를 생성할 수 없습니다.

  • PostgreSQL 엔드포인트를 통해 T-SQL 객체에 대한 권한을 수정하는 것은 권장되지 않으며 잘못된 T-SQL 동작을 유발할 수 있습니다.

  • 액세스 권한은 소유권 불일치로 인해 이전 객체와 새 객체 간에 다를 수 있습니다. 예를 들어 sch_own에서 소유한 스키마에 dbo에서 소유한 객체가 포함되어 있다고 생각해 봅시다. 이 경우 업그레이드 전에 생성된 dbo 소유 객체는 업그레이드 후 생성된 sch_own 소유 객체와 다른 액세스 권한을 가질 수 있습니다. 이는 SELECT 및 INSERT와 같은 작업에 영향을 미칠 수 있습니다.

DB 클러스터에 Babelfish 버전 4.6 또는 5.2 전에 생성된 객체가 포함된 경우 소유권을 조정하는 것이 좋습니다.

객체 소유권 차이를 해결하는 방법
  1. PostgreSQL 엔드포인트를 사용하여 DB 클러스터의 babelfish_db 데이터베이스에 연결합니다.

  2. 다음 명령을 실행합니다.

    SELECT * from sys.generate_alter_ownership_statements();

    이렇게 하면 객체 간의 소유권을 표준화하기 위한 SQL 문 목록이 생성됩니다.

  3. 먼저 테스트 환경에서 생성된 문을 실행하여 효과를 검증한 후 프로덕션 환경에 적용합니다.

데이터베이스 전체에서 일관된 객체 소유권 모델을 달성하려면 이러한 문을 실행하는 것이 좋습니다.