itsource

보기에서 CURRENT_ROLE 사용

mycopycode 2023. 9. 4. 19:47
반응형

보기에서 CURRENT_ROLE 사용

MariaDB를 사용하고 있으며 현재 설정된 역할을 기준으로 기존 사용자 테이블의 출력을 제한하는 것이 보관 대상입니다. (일반 사용자는 자신의 데이터만 보고, 팀 리더는 팀원의 데이터를 보고, 관리자는 모든 데이터를 볼 수 있습니다.)

SELECT * FROM USERS WHERE user = session_user() or current_role() = 'CEO'

이는 문으로는 잘 작동하지만 USER() 대 SESSION_USER()의 문제와 유사한 뷰 정의에서는 작동하지 않습니다.

이 문제를 해결할 방법이 있습니까?저는 또한 완전히 다른 접근법에도 개방적입니다.고마워.

information_schema.enabled_roles도 사용할 수 없습니다.

다음 단계를 통해 근본적인 문제를 재현할 수 있습니다. 역할 '최고경영자', 역할 '최고경영자를 설정합니다.

Current_ROLE();—> 'CEO'를 선택합니다.

CREATE VIEW 테스트 역할 AS SELECT Current_ROLE();

테스트 역할에서 *를 선택합니다.

--> NULL

완전히 부여된 권한을 가진 사용자에 의해 실행됩니다.

당신은 아주 오래된 버전을 사용하고 있는 것처럼 보입니다.이 문제는 오래 전에 해결되었습니다.

CREATE SQL SECURITY INVOKER VIEW test_view AS
  SELECT USER(), CURRENT_ROLE()

잘 작동합니다.

언급URL : https://stackoverflow.com/questions/75373630/usage-current-role-in-view

반응형