태그 보관물: database-design

database-design

PL / SQL 작업을 수행하는 애플리케이션 개발자를위한 보안 일부는 프로그래머가 여러 로그인을 유지

Oracle의 스키마 수준 권한 부족을 어떻게 처리합니까? Oracle의 보안 아키텍처는 객체 수준 권한 만 필요한 응용 프로그램에 적합하며 제한이 거의없는 DBA에 적합합니다. 그러나, 다중 스키마에서 프론트 엔드 애플리케이션과 PL / SQL로 개발하는 프로그래머에게는 아키텍처에 큰 차이가있는 것 같습니다. 단점이있는 옵션 중 일부는 다음과 같습니다.

  1. 각 프로그래머가 자신의 스키마로 개발하도록하십시오. DBA는 필요한 프로그래머에게 오브젝트 레벨 권한을 부여합니다. 모든 패키지 개발은 DBA가 수행해야합니다. 주요 단점은 프로그래머가 데이터베이스 성능을 저하시키기 위해 비트 버킷처럼 데이터베이스를 사용한다는 것입니다. 프로그래머가 데이터베이스에서 개발하기를 원하지만이 방법은 데이터베이스를 크게 권장하지 않습니다.

  2. 각 프로그래머에게 개발에 필요한 12 가지 정도의 스키마에 대한 사용자 이름 / 비밀번호를 부여하십시오.이 응용 프로그램 스키마에 프로 시저, 테이블 등을 작성할 수있는 권한을 부여하십시오.이 방법의 단점 중 일부는 프로그래머가 여러 로그인을 유지 보수해야한다는 것입니다. 그들 자신으로 거의 로그인하지 않았습니다. 크로스 스키마 개발도 어렵습니다.

  3. 프로그래머에게 개발에 필요한 각 스키마에 대한 프록시 인증 권한을 부여하십시오. 이렇게하면 프록시 권한 이외의 권한을 부여 할 필요없이 스스로 로그인 상태를 유지할 수 있습니다. 단점은 프록시를 위해 각 스키마에 대해 별도의 연결을 유지해야하는 프로그래머, 연결이 지속적으로 변경되어야하므로 크로스 스키마 개발이 더 번거롭고 인증이 통과 된 공용 데이터베이스 링크를 사용하는 패키지는 프록시 연결 내부에서 컴파일되지 않습니다.

  4. 각 프로그래머에게 DBA 권한을 부여하십시오. – 단점은 보안입니다. 스키마 프로그래머를 스키마에서 제외시킬 수 없으며 프로그래머는 다른 프로그래머 (DBA)를 가장 할 수 있습니다.

각 프로그래머에게 SELECT / INSERT / CREATE / etc를 부여하는 옵션이없는 것 같습니다. 개발에 필요한 스키마에 대한 권한. 하나의 연결을 사용하여 작업을 수행하기 위해 스스로 로그인합니다. 액세스 할 수있는 스키마의 새 개체를 즉시 사용할 수 있습니다.

뭔가 빠졌습니까? PL / SQL 개발을 수행하는 응용 프로그램 프로그래머를 어떻게 처리합니까?



답변

내가 오라클 샵에서 일하던 시절에는 특정 ‘dev'(개발) 서버가 있었는데 ‘prod'(생산) 서버와는 다른 보안 제한이있었습니다. 개발자는 필요한 모든 작업을 수행 한 다음 프로덕션 서버에 적용하기 위해 필요한 스크립트를 DBA에 전달했습니다.

중요한 시스템 (SCT 배너, 수업 및 학생 추적, Oracle Financials)의 경우 ‘테스트’및 ‘시드’서버도있었습니다. 테스트는 제품이 개발자에서 제품으로 마이그레이션되기 전에 사용자 승인 테스트를위한 것입니다. ‘seed’는 소프트웨어의 재고 설치이므로 버그를 발견하면 SCT 또는 Oracle의 소프트웨어에서 소개되었거나 버그인지 확인할 수 있습니다.


답변

역할을 사용하여 개체 컬렉션을 연결 한 다음 역할에 대한 액세스 권한을 부여합니다

GRANT의 문은 DBA에 수 있습니다 :

사용자, 역할 및 PUBLIC에 대한 특정 개체에 대한 개체 권한. 표 18-2에는 개체 권한 및 권한이 부여 된 작업이 나와 있습니다.

역할에 개체 권한을 부여 할 수 있으므로 스키마의 모든 테이블에 역할 액세스 권한을 부여하는 것이 상대적으로 쉽습니다.

sql> 스풀 privs.sql
sql> select 'scott의 부여 선택.'|| table_name || ' role_select; ' dba_tables에서 owner = 'SCOTT';
sql> @ privs.sql
sql> john, sam, peter에게 role_select 부여

이는 GRANT CREATE TABLE적절한 스키마 사용자 가 발행 한 역할 과 결합하여 개발자가 테이블을 선택하고 작성할 수 있음을 의미합니다. 그것은 아니에요 완벽하게 작성된 테이블이 다시 실행되는 스크립트를 필요로하지만 같이 WITH GRANT OPTION각 개발자는 그 때 적절한 역할에 만든 테이블에 대한 액세스 권한을 부여 할 수 있음을 시사한다.

따라서 적절한 권한 부여 프로세스를 실행할 수있는 DDL 수준 트리거를 만들 수 있지만 상당한 양의 테스트가 필요하지만 create table 문이 자동으로 적절한 역할에 적절한 권한을 부여 할 수 있어야합니다.

편집하다 —

에 따르면 GRANTCREATE TABLE특권 :

피부 여자의 스키마에 테이블을 만듭니다.

따라서 올바른 사용자 로부터 테이블 작성, 테이블 변경 등 을 제공하면 해당 사용자의 스키마를 해당 사용자 인 것처럼 액세스 할 수 있어야합니다.


답변