Cấp quyền tạo trên một lược đồ cụ thể trong Oracle 11g


7

Tôi có hai người dùng A và B. Tôi muốn cấp cho B quyền tạo, thả, v.v. tất cả các bảng trong lược đồ của A. Theo như tôi có thể thấy, tôi có thể cấp cho B quyền truy cập đầy đủ vào tất cả các lược đồ không phải là một lược đồ cụ thể. Điều này có đúng không?

Câu trả lời:


11

Bạn đúng rằng không có cách nào để cấp quyền cho người dùng tạo / thả / etc trên toàn bộ lược đồ. Tôi đề nghị bạn xem xét xác thực proxy . Điều này về cơ bản liên quan đến việc thay đổi người dùng A để cho phép người dùng B ủy quyền dưới dạng A:

ALTER USER A GRANT CONNECT THROUGH B;

Sau đó, kết nối sử dụng xác thực của người dùng B, nhưng được sự cho phép của người dùng A.

connect B[A]/Password@Database

Câu hỏi này phần nào được bao phủ bởi câu hỏi cụ thể hơn của tôi ở đây .


Lưu ý về Vai trò: Vai trò hoạt động tốt khi cung cấp Đặc quyền đối tượng cho người dùng khác vì các đặc quyền được gắn với một đối tượng cụ thể. Mặc dù Vai trò có thể cấp Đặc quyền hệ thống , nhưng chúng áp dụng cho lược đồ riêng của người dùng hoặc cho toàn bộ cơ sở dữ liệu và do đó không thể áp dụng cho lược đồ khác. Ví dụ, người dùng B có thể được cấp CREATE TABLEcho phép nó tạo các bảng trong lược đồ riêng của mình hoặc CREATE ANY TABLEcho phép nó tạo các bảng trong bất kỳ lược đồ nào. Các quyền này có thể được cấp trực tiếp hoặc thông qua vai trò, nhưng trước đây sẽ không cho phép tạo đặc quyền trong lược đồ A. Cái sau sẽ, nhưng cũng sẽ cho phép tạo các đặc quyền trong bất kỳ lược đồ nào, kể cả sys, đây sẽ là một vấn đề bảo mật.


Cảm ơn câu trả lời. Đây là một điều đáng tiếc tất nhiên. Về cơ bản, tôi không hiểu tại sao một tính năng đơn giản như vậy không có sẵn trong Oracle.
Michael-O

2
Chỉ cần tìm thấy tính năng này trong danh sách mong muốn 12c: Dadbm.com/2012/03/oracle-database-12c-wish-list
Leigh Riffel

1
Tôi rất muốn tách người dùng khỏi các lược đồ. Giống như trong MySQL.
Michael-O

Sự cho phép sẽ phải tồn tại để việc tách rời hoạt động, vì vậy có lẽ đó sẽ là bước đầu tiên theo hướng đó.
Leigh Riffel

0

Chỉ cần tạo một thủ tục trên lược đồ đích bao gồm EXECUTE_IMMEDIATE để tạo các bảng (kiểm tra các DDL khác !!). Sau đó cấp đặc quyền lược đồ nguồn để thực thi trên thủ tục. Điều này nên làm các thủ thuật mà không có mối quan tâm an ninh.


-1

Bạn chỉ có thể tạo một vai trò với các quyền đó và cấp vai trò cho bất cứ ai cần khả năng đó.


Làm thế nào là phải làm việc? Leigh nói rằng tôi không thể cấp cho toàn bộ lược đồ cụ thể.
Michael-O

1
Vai trò chỉ có thể bao gồm các quyền có thể được cấp trực tiếp. Người dùng B có thể được cấp CREATE TABLEcho phép nó tạo các bảng trong lược đồ riêng của mình hoặc CREATE ANY TABLEcho phép nó tạo các bảng trong bất kỳ lược đồ nào. Các quyền này có thể được cấp trực tiếp hoặc thông qua vai trò, nhưng quyền thứ nhất quá hẹp và thứ hai quá rộng.
Leigh Riffel

Leigh, chính xác, không phù hợp.
Michael-O
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.