sourcecode

다른 사용자의 스키마에 부여된 권한을 확인하는 방법

codebag 2023. 6. 27. 22:10
반응형

다른 사용자의 스키마에 부여된 권한을 확인하는 방법

예를 들어, 데이터베이스에는 두 명의 사용자 A와 B와 해당 스키마가 있습니다.

나는 어떻게 정보를 얻을 수 있는지 알고 싶습니다: 스키마 B에 있는 사용자 A에 대한 권한.

예를 들어, 두 명의 사용자와 그와 연관된 스키마가 있습니다.사용자 A와 사용자 B가 있습니다.A에서는 TB1 TB2, B에서는 TBa, TBb라고 합니다.이제 사용자 A가 스키마 B에 대해 어떤 권한을 가지고 있는지 어떻게 찾을 수 있는지 알고 싶습니다.

예: 사용자 A가 다음을 쓰고 있습니다.select * from B.TBb이것은 사용자 A가 사용자 B의 테이블에 액세스하고 있다는 것을 의미하므로, 사용자 B가 SELECT 권한을 가지고 있음을 나타냅니다.나는 사용자 A가 스키마 B에 대한 모든 권한을 가지고 있는지 알고 싶습니다.

사용자 A가 스키마 B에 대해 가지고 있는 권한 목록을 가져오려면 실행해야 하는 쿼리입니다.

다음 쿼리를 사용할 수 있습니다.

select * from all_tab_privs;
select * from dba_sys_privs;
select * from dba_role_privs;

각 테이블에는 다음이 있습니다.grantee열에서 다음 기준으로 필터링할 수 있습니다.

where grantee = 'A'

먼저 제안하는 다른 스키마의 개체(예: 테이블)에 대한 권한을 쿼리합니다.all_tab_privs그것은 또한 가지고 있습니다.table_schema기둥.

권한을 쿼리할 동일한 사용자로 로그인한 경우user_tab_privs,user_sys_privs,user_role_privs일반적인 비 dba 사용자가 쿼리할 수 있습니다.

실라기 도나트의 게시물에서 예시를 사용합니다.

두 개의 쿼리를 사용합니다. 하나는 연결 허가를 제외하고 어떤 역할이 있는지 확인합니다.

SELECT * FROM USER_ROLE_PRIVS WHERE GRANTED_ROLE != 'CONNECT'; -- Roles of the actual Oracle Schema

스키마/사용자가 어떤 권한/역할을 가지고 있는지 알고 싶습니다. 예를 들어 ROLE_VIEW_PAYMENTS & ROLE_OPS_CUSTMER 역할이 있습니다.그러나 사용한 특정 역할의 테이블/객체를 찾으려면:

SELECT * FROM ALL_TAB_PRIVS WHERE GRANTEE='ROLE_OPS_CUSTOMERS'; -- Objects granted at role.

이 예제의 소유자 스키마는 PRD_CUSTERMS_OWNER(또는 역할/스키마 자체)일 수 있습니다.

안부 전해요.

데이터베이스에 로그인합니다.그런 다음 아래 쿼리를 실행합니다.

dba_role_privs에서 *를 선택합니다. 여기서 grantee = 'SCHEMA_NAME';

스키마에 부여된 모든 역할이 나열됩니다.

실라기 도나트의 답변에 감사드립니다.이것은 조항이 추가된 바로 그 장소에서 가져온 것입니다.

언급URL : https://stackoverflow.com/questions/14604576/how-to-see-what-privileges-are-granted-to-schema-of-another-user

반응형