2012-04-13 2 views
0

제 질문은 오히려 간단합니다.GRANT 특정 테이블에 대한 사용 권한 및 보안 관행으로서의이 타당성?

데이터베이스 테이블에 대한 사용 권한을 부여 할 수 있습니까? 라인에 뭔가 :

  • 사용자 관리
  • 사용자 Colaborator가 권한이 테이블 프로젝트에 삽입,
  • 사용자 관리자를 선택 권한, 업데이트가 삽입 및 테이블 프로젝트에 삭제, 갱신을 선택 할 수있는 권한이 테이블에서 선택 프로젝트

그렇다면 위의 예제와 마찬가지로 내 응용 프로그램의 액세스 수준에 따라 데이터베이스 사용자를 만들 수있는 시스템을 설정할 수 있습니다.

응용 프로그램을 보호하기 위해 이것을 사용하는 것이 유효한 메커니즘입니까?
은 실제 응용 프로그램에서 가치가 있습니까?

필자는 Oracle과 MySQL에서 PHP를 사용해 왔지만 데이터베이스/언어에 의존하지 않는 대답을 찾고 있습니다. 그러나 모든 예제가 유용 할 것입니다.

내 행운을 빕니다. 기록 당 허가는 무엇인가요? 또한 테이블 스키마는 무엇보다 수용 가능한 테이블 기반 사용 권한입니까?

답변

1

당신이 아니라 당신의 DB 서버에 응용 프로그램 서버에서 연결에 대한 "서비스 사용자"를 사용 할 수있는 것보다 각 사용자에 대한 별도의 연결이 필요하다는 것입니다 데이터베이스 보안을 사용하여 주요 문제. 즉 "연결"해야하고 연결이 상대적으로 고가이기 때문에 매우 효율적이지 않습니다 모든 사용자 요청에 대한 데이터베이스에서 "분리"더 이상 데이터베이스 연결 풀링을 사용할 수 없게됨을 의미합니다.

DATA_USER (응용 프로그램 서버가 연결됨) 및 DATA_OWNER (모든 테이블을 소유하지만 DB 유지 관리에만 사용됨)와 같이 데이터베이스에서 별도의 사용자를 사용하는 데는 충분한 이유가 있습니다. DATA_USER에 필요한 권한을 부여하십시오. 조회 테이블에서만 선택하십시오. DATA_USER와 DATA_OWNER를 분리하면 응용 프로그램이 DDL 명령을 발행하지 않을 것이라는 추가적인 신뢰 수준을 추가 할 수 있습니다 (예 : 테이블 삭제).

1

파트 1에 대한 답변 : 응답을 올바르게 처리하는 한 예.

2 부 : 대부분의 응용 프로그램에서 솔루션의 유연성이 필요하기 때문에 응용 프로그램 계층에서 보안을 구현하는 것만 큼 좋지 않습니다 (사용자가 증가 된 권한을 얻고 싶거나 변경/거부를 ​​많이해야하는 경우/grant 스크립트)

3 부 : (순전히 MSSQL에서 말하기) 행 수준의 권한은 가능하지 않습니다. 이 목적을 위해 사용자 지정보기를 만듭니다.

+0

난, 더 나은 보안에 대한 필요성의 경우, 참조 당신이 좋은 트레이드 오프이라고 생각합니까? – Jonathan

+0

데이터베이스 보안은 응용 프로그램 수준보다 강력하지만 유지 관리 및 구현이 더 어렵다고 생각합니다. YMMV. – hkf