【Scenario】
Oracle上有三個Schema, AAA, BBB與CCC。

AAA下有個tblMyData,BBB下打算建一個View vw2ndHandData: SELECT * FROM tblMyData WHERE Col1 = 'A',所以要Grant SELECT on AAA.tblMyData to BBB,有了tblMyData的查詢權限BBB才能順利將View建立起來。

此時我們要開放vw2ndHand供CCC查詢,於是用BBB身份下了Grant SELECT on vw2ndHand to CCC,會得到以下錯誤:

ORA-01720: grant option does not exist for 'AAA.tblMyData'

即便由AAA執行Grant SELECT on tblMyData to CCC也是一樣的結果。

【說明】
這是授權資料轉手的議題,原則上AAA把讀取權限放給BBB,不代表BBB可以將AAA資料再授權給其他人讀取! 當BBB試圖Grant SELECT vw2ndHandData to CCC,等於會讓CCC看到AAA.tblMyData,就會違反了資料不得轉賣的限制。
要解決這個問題,BBB要獲得"可轉賣"的授權,寫法是在grant時多加上with grant option:

Grant SELECT on tblMyData to BBB with grant option

醬就可以嚕!


Comments

Be the first to post a comment

Post a comment