예. 보기를 사용할 권한을 부여하는 것만으로는 충분하지 않습니다. 또한 사용자는 기본 테이블에 대한 권한도 가지고 있어야합니다.
제한된 사용자에게 액세스를 허용하는 한 가지 방법은 승인 된 권한입니다. 예를 들어 다음을 가정 해 봅시다.
사용자 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에서 새로 작성된 테이블을 제한하지 않아도되므로 지속적인 유지 보수가 쉬워집니다.