Trong Oracle database có 1 số thao tác mà ngay cả DBA cũng không thực hiện được cho user, chẳng hạn như tạo database link. Bình thường ta hay dùng trick đổi password tạm thời, vào xử lý rồi sau đó đổi lại. Tuy nhiên cách này có thể ảnh hưởng đến kết nối ứng dụng trong thời gian ta “mượn tạm” user. 

Oracle có 1 tính năng là tạo proxy user, dùng cho những trường hợp như thế này. Thế mà gần đây mới biết boring. Proxy user cho phép ta đăng nhập vào 1 user khác mà không cần biết password của user đó.

 

VD: ta có user quanpt, cần đăng nhập vào nhưng ông này đi nghỉ mát đâu đó rồi, không mượn được password

Ta tạo 1 user proxy và cấp quyền CONNECT THROUGH

 

Sau đó dùng user này để đăng nhập vào user quanpt, theo cú pháp: proxy_user[target_user]/proxy_user_password

 

 

Kết quả là ta đã có thể sử dụng user quanpt mà không cần đụng gì đến password của ông này. 

Ngoài việc hỗ trợ đăng nhập trực tiếp, ta còn có thể enable các role khác nhau trên từng proxy user để phân quyền. 

 

VD: user quanpt có 2 role:

  • resource
  • res2 (chỉ có quyền create view)

 

Với user pxuser ở trên, ta chỉ cấp quyền dùng role resource. Còn role res2 ta cấp cho 1 user proxy khác:

 

 

Kết quả, pxuser không tạo được view, còn pxuser2 có thể tạo view:

 

 

Để thu hồi quyền:

 

 

Kiểm tra thông tin