문제

사용자가 패키지와 트리거를 만들기 위해 자신의 스키마를 통해 권한이 필요한 이유는 무엇입니까?

도움이 되었습니까?

해결책

사용자가 자신의 스키마에서 특정 유형의 객체를 생성하기 위해 특정 특권이 필요한 이유 (예 : 테이블 생성, 절차 등)가 필요한 이유를 묻고 있습니까?

그렇다면 자연스럽게 대답은 좋은 보안이 최소한의 특권의 원칙으로 시작한다는 것입니다. 즉, 사용자는 진정으로 자신의 업무를 수행 해야하는 특권 만 있어야합니다. DBA는 종종 프로덕션 데이터베이스에서 사용자를위한 읽기 전용 계정을 만들려고합니다 (예 : 비즈니스 분석가는 종종 다른 종류의 임시보고를 수행해야하며 개발자는 특정 유형의 문제를 해결하기 위해 액세스 할 필요가있을 수 있습니다). 사용자가 항상 자신의 스키마에서 객체를 만들 수있는 경우, 해당 읽기 전용 사용자는 갑자기 변경 제어를 거치거나 반드시 테스트하지 않고 프로덕션 데이터베이스에 코드를 배포 할 수 있습니다. 그리고 이는 일반적으로 코드가 기본적으로 동일한 일을하는 코드의 확산으로 이어집니다 (즉, 12 명의 분석가는 각자 자체 스키마에서 판매 세를 계산하는 절차가 있지만 각각 고유 한 서명, 논리, 요구 사항, 가정 등이 있습니다. 그리고 천국은 DBA가 자연스럽게 자신의 계정을 삭제할 것이기 때문에 그 분석가들 중 한 명이 해고되는 것을 금지하고, 일부 중요한 보고서는 해당 분석가의 스키마에만 존재하는 코드에 의존한다는 것을 알기 위해서만 금지했다.

다른 팁

나는 당신에게 "공식적인"답변을 줄 수는 없지만, 그것이 작동하는 방식의 추론을 찌를 수 있습니다. 내가 작업하는 프로젝트에서 Oracle Developers는 트리거 및 패키지를 데이터베이스 스키마에 배치하는 것입니다. 그러나 우리는 다른 Java 개발자와 테스터 등의 팀이 있습니다. 스키마가 테스트와 생산 환경으로 마이그레이션되면 테스터 나 최종 사용자 애플리케이션이 관련 트리거 및 패키지를 임의로 수정할 수 있기를 원하지 않습니다. 그 스키마는 그들이 수행하는 테스트의 무결성을 무효화 할 수 있으므로 (또는 생산 시스템에서 더 나쁜 문제를 일으킨다).

따라서 테스트/프로덕션 환경 내에서 테스터, Java 개발자 및 최종 사용자 애플리케이션이 스키마에 데이터를 읽고 쓸 수 있지만 기준 코드를 포함하는 트리거 및 패키지를 수정하지 않기를 원합니다.

사용자가 자신의 스키마에 대한 권한이 필요한 이유는 그렇지 않은 패키지와 트리거를 생성해야합니다.

그들 자신의 스키마는 username에 의해 정의 된 소유권 (또는 네임 스페이스)을 암시합니다. Object 사용자가 자신의 스키마에서 트리거를 생성하는 데 필요한 모든 사용자는 다음과 같습니다. 자체 스키마의 테이블 트리거 권한 생성

모든 사용자는 자신의 스키마에서 패키지를 생성해야합니다. 패키지 만들기 권한 만들기

사용자가 다른 스키마에서 객체를 만들거나 다른 객체를 참조하거나 테이블 스페이스에 저장 해야하는 경우 해당 외부 객체에 대한 권한이 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top