2

MySQL을 사용하여 개발중인 webapp에서 행 수준 보안을 에뮬레이트하려고합니다.Webapp : MySQL : 행 수준의 보안. 프로/죄수? 이 작업을 수행하는 더 좋은 방법은?

이 방법 사용 : 모든 사용자와 관련된 데이터가 테이블 열의 적절한 인덱싱과 함께 저장되는 필수 테이블이있는 데이터베이스를 만듭니다.

사용자 ID를 기반으로 특정 사용자에게 mysql '보기'를 생성합니다.

행 수준의 보안을 위해 모든 사용자에 대해 mysql 계정을 만들고보기에 '권한 부여'권한을 설정해야합니다.

웹 인터페이스의 경우 PHP 기반 MVC 프레임 워크가 사용됩니다.

하지만, 내 연구에 따르면 :

1] Having separate mysql account per user "make the webapp less secure".
2] Having separate mysql account per user "increases the disk I/O".

질문 :
1] How does creating mysql user per webapp user make the webapp less secure?
2] Does the disk I/O increase considerably?
3] Is there a better way to implement row-level-security in MySQL?
4] What are the pros/cons of implementing row-level-security by the above method?

왜 행 레벨 보안을 고려하고 있습니까?
I need row level security because there are rows which will be shared between multiple users & have 1 or 2 owners to it. Only these owners can delete/modify them.

+3

나를 조롱하는 대신, 내가 할 수있는 것을 제안하거나 읽을 수 있습니까? – ThinkingMonkey

+0

그것은 당신을 조롱하지 않지만, 그렇게 보이는다면 사과드립니다. 나는 왜 당신이 이런 식으로하려고하는지조차 궁금해하고 있습니다. 왜 "행 수준의 보안"이 필요합니까? 이런 식으로 진행하는 이유는 무엇이며, 그렇게함으로써 방지 할 수있는 것은 무엇입니까? 디스크 I/O에 관해서는 사용자,보기 등을 만드는 것이 디스크 I/O에 영향을 미칠 수있는 부분이 아닙니다. (예 : 수천 명의 새로운 사용자가없는 한, 디스크 I 뷰를 처리 할 때/O). –

+0

여러 개의 사용자가 공유 할 행이 있고 행의 소유자가 1 명 또는 2 명이 있으므로 행 수준의 보안이 필요합니다. 이러한 소유자 만 삭제하거나 수정할 수 있습니다. *** 더 나은 접근법에 대해 배울 수있는 곳이 있다면 // 제안하십시오. *** – ThinkingMonkey

답변

0

내 의견 :

1] How does creating mysql user per webapp user make the webapp less secure?

데이터베이스에 항목의 여러 지점이 있습니다. 그것은 사용자의 정보에 저장되어있는 users 테이블을 가진 다음 적절히 제한 MySQL의 계정을 사용하여 다른 사용자들은 (웹 응용 프로그램 구성 파일의 일부로서) 모두 사용

2] Does the disk I/O increase considerably?

확실하지 읽은 수있는 문서는 개발자/데이터베이스 관리자/등 directly 액세스 데이터베이스 ..

3] Is there a better way to implement row-level-security in MySQL? 모두 SQL 함수와

과 경쟁에 의해 사용되는 여러 SQL 계정에 대해했기 때문에 얼마나 제대로,이 답변을 ws를 MySQL 용으로 구현했는데 SQL 계정 수준이 아닌 테이블 데이터를 통한 사용자 액세스 권한을 제어하려고 시도 할 수 있습니까? 여러 계정을 갖는 결과이다

4] What are the pros/cons of implementing row-level-security by the above method?

한 가지 계정의 유지 보수입니다.

보기 및 함수와 저장 프로 시저를 사용하면 방문자가 볼 수있는 데이터의 양 또는 종류를 제어하는 ​​데 도움이되는 좋은 방법 중 하나이므로 프로입니다.

다시 말하면 이것은 내 의견입니다. 나는 약간의 부분을 오해했을 수도 있고 다른 사람들에게 잘못된 것일 수도 있습니다.: 질문 3

+0

답장을 보내 주셔서 감사합니다 : 독자가 읽었을 수있는 기사가 데이터베이스에 직접 액세스하는 개발자/데이터베이스 관리자/etc가 사용하는 여러 SQL 계정에 대한 것이기 때문에이 질문에 대한 답변을 잘 모르겠습니다. 감사합니다. 밖으로 .. 이 문서는 트리거 및 자동 로깅을 사용하기위한 것입니다. ThinkingMonkey

+0

[링크] (http://dba.stackexchange.com/a/3348) 트리거를 사용하면 디스크 입출력이 증가합니다. 첫 번째 및 세 번째 요점은 구현을위한 독창적 인 아이디어입니다. 내가 참조 할 수있는 참조 자료가 있습니까? P. 나는 우연히 shift 대신에 enter를 누르십시오. 이전에 – ThinkingMonkey

0

답변 :

훨씬 더 간단 aproach는 별도의 테이블을 사용 할 수 있습니다. 성능 측면에서 더 나을 수도 있습니다. 같은 테이블에 데이터를 보관해야하는 이유가 있습니까? 알다시피, 사용자간에 행이 공유되지 않습니다.

+0

을 입력하십시오. 사용자간에 행이 공유됩니다. 그것이 행 수준 보안을 찾는 이유입니다. 나는 이것을 더 일찍 언급해야했다. 그리고 더 .. 더 많은 테이블, 1] 더 많은 데이터베이스 테이블 크기입니다. 2] 더 많은 I/O. 3] 데이터베이스 덤프의 크기가 커졌습니다. – ThinkingMonkey