INSERT가 없는 상태에서 INSERT 허용
INSERT가 없는 상태에서 INSERT를 허용합니다.
새 관리자가 생성될 때마다 다음 코드 조각이 실행된다고 가정합니다(물론 데이터베이스와 사용자 계정의 이름은 매번 다릅니다).
#Executed as root
CREATE DATABASE `Manager1Section`;
CREATE TABLE Manager1Data(`SomeData` INT);
CREATE USER 'Manager1'@'localhost' IDENTIFIED BY 'Something';
GRANT SELECT, INSERT, UPDATE, DELETE ON `Manager1Section`.`Manager1Data` TO 'Manager1'@'localhost';
GRANT CREATE, DROP ON `Manager1Section`.* TO 'Manager1'@'localhost';
GRANT CREATE USER ON *.* TO 'Manager1Section'@'localhost' WITH GRANT OPTION;
그리고 새로운 인턴이 생성될 때마다 다음 코드가 실행됩니다(다시, 이름이 대체됨).
#Executed as manager
CREATE TABLE `Manager1Section`.`Intern1Data`(`Value` INT NOT NULL);
CREATE USER 'Intern1'@'localhost' IDENTIFIED BY 'Something';
GRANT SELECT, INSERT, UPDATE, DELETE ON `Manager1Section`.`Intern1Data` TO 'Intern1'@'localhost';
(이것은 계층 구조를 보여주기 위한 예시일 뿐입니다.저는 회사의 인사 구조를 실제로 모델링하는 것이 아닙니다.)
관리자는 단일 데이터베이스(Manager1)를 관리합니다.이 예제의 섹션) 및 작업할 표가 있습니다.관리자는 해당 테이블에 읽고 쓸 수 있을 뿐 테이블을 떨어뜨릴 수는 없습니다. (사실 신경 쓰지 마세요. 저는 관리자가 테이블을 떨어뜨릴 수 있다는 것을 방금 깨달았습니다.별 일 아닙니다.
또한 이 데이터베이스의 각 인턴은 작업할 테이블을 가지고 있으며, 이 테이블을 읽고 쓸 수 있을 뿐 삭제할 수는 없습니다.또한 인턴은 자신의 테이블에만 접근할 수 있고 관리자 테이블에는 접근할 수 없으며 다른 인턴 테이블에는 접근할 수 없습니다.
그리고 매우 중요한 것은:관리자는 인턴 테이블을 읽고 쓸 수 없습니다.
위의 코드는 이를 달성할 수 있지만 유효하지 않습니다.두 번째 토막글의 마지막 줄이 실패합니다.관리자는 인턴 테이블에 대한 SELECT, INSERT, UPDATE 및 DELETE 권한이 없으므로 인턴에게 이러한 권한을 부여할 수 없습니다.첫번째 스니펫의 두번째에서 마지막 줄로 변경(GRANT CREATE, DROP ON `Manager1Section`.* TO 'Manager1'@'localhost';
) 로GRANT CREATE, DROP, SELECT, INSERT, UPDATE, DELETE ON `Manager1Section`.* TO 'Manager1'@'localhost';
그것은 효과가 있지만 또한 관리자가 인턴 테이블에 읽고 쓸 수 있게 해주기 때문에 저는 피하고 싶습니다.
어떻게 하면 관리자가 인턴 테이블에 읽고 쓸 수 없게 만들고 인턴에게 읽고 쓸 수 있는 권한을 부여할 수 있습니까?
또는 다음과 같습니다.어떻게 하면 그 문제를 완전히 피할 수 있을까요?
사용자가 이미 가지고 있는 권한을 부여할 수 있도록 허용하는 것이 일반적으로 좋은 생각이며, 관리자가 스푸핑 인턴 계정을 만들고 실행함으로써 상황을 회피할 수 있기 때문에 의도된 해결책은 불가능하다는 것을 직감합니다.GRANT SELECT, INSERT, UPDATE, DELETE ON `Manager1Section`.`Intern1Data` TO 'SpoofIntern'@'localhost';
(일치하지 않는 사용자 이름에 유의) 그런 다음 해당 계정을 통해 데이터에 액세스합니다.하지만 제가 뭔가를 놓칠 수도 있어서 아이디어를 구하고 있습니다.
언급URL : https://stackoverflow.com/questions/43196622/grant-insert-without-having-it
'programing' 카테고리의 다른 글
mysql-connector-python, mysql-connector-python-rf 및 mysql-connector-repackaged의 차이점은 무엇입니까? (0) | 2023.09.26 |
---|---|
자바스크립트의 순열? (0) | 2023.09.26 |
C#의 @"string"과 같은 파워셸의 문자열을 탈출할 방법이 있습니까? (0) | 2023.09.26 |
엔티티 프레임워크에서 서명되지 않은 int/long 유형을 사용하는 방법은 무엇입니까? (0) | 2023.09.21 |
MySQL의 Aggregate 함수 - 목록(Oracle의 LISTAGG와 같이) (0) | 2023.09.21 |