IBM i OS v6r1을 실행하는 IBM System i가 있습니다. 이 시스템에서 일부 데이터베이스 뷰를 작성했습니다. 내가하고 싶은 것은 특정 사용자 그룹 에게이보기에만 액세스 할 수있게하고보기가있는 라이브러리 내의 다른 것에는 액세스하지 않는 것입니다. 이것이 가능한가? 내 뷰가있는 라이브러리의 모든 테이블 및 뷰에 대한 읽기 권한 만 가진 사용자 그룹이 있었고 사용자가이 사용자 그룹 아래에 있으면 액세스가 작동합니다. 사용자 그룹을 복사 한 다음 내가 만든보기 만 포함하도록 권한을 할당하려고했으나 액세스가 거부되었습니다. 사용자 나 사용자 그룹에게도 뷰에 액세스하기 위해 뷰가 시작된 테이블에 대한 권한이 있어야합니까?
답변
예. 보기를 사용할 권한을 부여하는 것만으로는 충분하지 않습니다. 또한 사용자는 기본 테이블에 대한 권한도 가지고 있어야합니다.
제한된 사용자에게 액세스를 허용하는 한 가지 방법은 승인 된 권한입니다. 예를 들어 다음을 가정 해 봅시다.
사용자 RESTRICTED는 테이블에 액세스 할 수 없습니다. 모든 라이브러리는 AUT (* EXCLUDE)이거나 사용자 RESTRICTED는 모든 라이브러리에 대한 * EXCLUDE 권한을 갖습니다. USER PERMITTED는 테이블과 라이브러리에 액세스하거나 소유 할 수 있습니다. 라이브러리 DATA에는 테이블이 있습니다. 라이브러리 프로그램에는 프로그램과 저장 프로 시저가 있습니다.
라이브러리 프로그램에서 RPG 스토어드 프로 시저를 작성하도록 허용하십시오. 프로그램에 USRPRF (* OWNER)가 지정되어 있는지 확인하십시오. 이것은 프로그램이 실행될 때 프로그램을 실행하는 프로파일의 권한 (RESTRICTED)이 아닌 소유자의 권한 (PERMITTED)을 사용한다는 것을 의미합니다.
RPG 프로그램 오브젝트에 사용자 PERMITTED * USE 권한을 부여하십시오 (또는 SQL을 통해 GRANT). 또한 사용자에게 라이브러리 PROGRAMS에 대한 RESTRICTED * USE 액세스 권한을 부여하십시오. 이것은 RESTRICTED가 저장 프로 시저 / 프로그램을 실행할 수있게합니다.
RESTRICTED 사용자에게는 DATA의 테이블에 액세스 할 수있는 권한이 없으므로 그대로두기를 원합니다.
이제 RESTRICTED 사용자가 SQL을 사용하여 스토어드 프로 시저를 호출하도록하십시오. 라이브러리 프로그램 및 컴파일 된 프로그램 오브젝트에 대한 * USE 권한이 있으므로 프로그램을 실행할 권한이 있습니다. 스토어드 프로시 저는 소유자 PERMITTED의 권한으로 실행되며 PERMITTED는 라이브러리 DATA 및 그 테이블에 대한 전체 액세스 권한을 가지므로 스토어드 프로시 저는 해당 테이블에 액세스 / 업데이트 할 수 있습니다. RESTRICTED가 사용하려고 시도하는 원시 SQL은 권한이 충분하지 않아 실패합니다. 수행 할 수있는 유일한 작업은 작성된 저장 프로 시저를 호출하는 것입니다.
프로그램이 데이터와 동일한 라이브러리에 저장된 경우 라이브러리에 RESTRICTED * USE 권한을 부여하고 특히 해당 라이브러리의 모든 테이블에 대해 (EXCLUDE를 통해) 제한해야합니다. 저장 프로 시저 만 보유하고 해당 라이브러리에 대한 권한을 부여하는 RESTRICTED 라이브러리를 작성하는 것이 더 쉬울 수 있습니다. 따라서 DATA에서 새로 작성된 테이블을 제한하지 않아도되므로 지속적인 유지 보수가 쉬워집니다.