Kami memiliki Sistem IBM yang menjalankan IBM i OS v6r1. Pada sistem ini, saya telah membuat beberapa tampilan basis data. Apa yang ingin saya lakukan adalah memberikan akses kelompok pengguna tertentu untuk HANYA pandangan ini dan tidak ada yang lain di perpustakaan di mana pandangan berada. Apakah ini mungkin? Saya memiliki grup pengguna yang hanya membaca izin untuk semua tabel dan tampilan di perpustakaan di mana pandangan saya berada, dan akses berfungsi ketika pengguna berada di bawah grup pengguna ini. Saya mencoba menyalin grup pengguna, dan kemudian menetapkan izin untuk hanya menyertakan pandangan yang saya buat, dan akses ditolak. Apakah pengguna atau grup pengguna juga harus memiliki izin di atas meja dari mana tampilan berasal untuk mengakses tampilan?
sumber
Jawaban:
Iya. Tidaklah cukup memberikan otoritas untuk menggunakan pandangan. Pengguna juga harus memiliki otoritas ke tabel yang mendasarinya.
Salah satu cara untuk memungkinkan akses ke pengguna terbatas adalah menggunakan otoritas. Sebagai contoh, mari kita asumsikan yang berikut:
Pengguna RESTRICTED tidak memiliki akses ke tabel apa pun. Semua perpustakaan dapat berupa AUT (* EXCLUDE) -atau- pengguna RESTRICTED memiliki * EXCLUDE otoritas untuk semua perpustakaan. PENGGUNA MENGIZINKAN dapat mengakses (atau memiliki) tabel dan perpustakaan. DATA Perpustakaan memiliki tabel. PROGRAM Perpustakaan memiliki program dan prosedur tersimpan.
Telah IZIN membuat prosedur tersimpan RPG di PROGRAM perpustakaan. Pastikan program telah menentukan USRPRF (* PEMILIK). Ini berarti bahwa ketika program dijalankan akan menggunakan otoritas pemilik (DIIZINKAN) alih-alih otoritas profil yang menjalankannya (DIBATASI).
Berikan pengguna IZIN * MENGGUNAKAN otoritas ke objek program RPG -atau- GRANT via SQL. Juga, beri pengguna RESTRICTED * GUNAKAN akses ke PROGRAM perpustakaan. Ini akan memungkinkan RESTRICTED untuk menjalankan prosedur / program yang tersimpan.
Perhatikan bahwa pengguna RESTRICTED tidak memiliki hak untuk mengakses tabel dalam DATA dan Anda ingin membiarkannya seperti itu.
Sekarang minta pengguna DIBATASI menggunakan SQL untuk CALL prosedur tersimpan. Dia memiliki wewenang untuk menjalankan program karena dia memiliki * hak GUNAKAN untuk perpustakaan PROGRAM serta objek program yang dikompilasi. Prosedur tersimpan berjalan di bawah otoritas pemilik, DIIZINKAN dan karena DIIZINKAN memiliki akses penuh ke perpustakaan DATA dan tabel di dalamnya, prosedur tersimpan dapat mengakses / memperbarui tabel tersebut. SQL mentah apa pun yang DIRESTIKASI untuk digunakan akan gagal karena otoritas yang tidak mencukupi - satu-satunya hal yang dapat dia lakukan adalah memanggil prosedur tersimpan yang dibuat untuknya.
Jika program Anda disimpan di perpustakaan yang sama dengan data Anda, Anda perlu memberikan otoritas * PENGGUNAAN DIBATASI untuk perpustakaan dan secara spesifik membatasi dirinya (melalui * TIDAK TERMASUK) atas semua tabel di perpustakaan itu. Mungkin lebih mudah untuk membuat perpustakaan DIBATASI yang hanya menyimpan prosedur yang tersimpan dan mengizinkannya ke perpustakaan itu. Hal ini membuat pemeliharaan berkelanjutan lebih mudah karena Anda tidak perlu mencoba mengingat untuk tetap membatasi dia dari tabel yang baru dibuat di DATA.
sumber