Ánh xạ nhiều thông tin đăng nhập máy chủ đến một người dùng cơ sở dữ liệu


11

Đây có vẻ là một câu hỏi ngu ngốc nhưng mặc dù có một số nghiên cứu tôi không thể tìm thấy bất kỳ thông tin nào chỉ liên quan đến vấn đề này (có thể do sử dụng thuật ngữ sai).

Có thể đăng nhập nhiều thông tin đăng nhập máy chủ (xác thực máy chủ sql) cho một người dùng cơ sở dữ liệu (có quyền được chỉ định bằng cách là thành viên của vai trò cơ sở dữ liệu) không?

Tôi có hàng tá thông tin đăng nhập sql (xác thực máy chủ sql) cần đọc một cài đặt từ cơ sở dữ liệu trung tâm và tôi muốn ánh xạ tất cả các thông tin đăng nhập này đến một người dùng DB trong cơ sở dữ liệu đích hơn là tạo một người dùng DB riêng cho mỗi lần đăng nhập.

Nếu có, cú pháp T-SQL chính xác là gì?


Khi bạn nói "đăng nhập máy chủ", bạn có nghĩa là tài khoản Windows hoặc tài khoản máy chủ SQL?
Phil Sumner

Tôi đang nói về tài khoản máy chủ SQL. Sẽ chỉnh sửa câu hỏi để làm rõ
leepfrog

Làm thế nào về bạn tạo một ROLEvà sau đó thêm người dùng vào vai trò. Bằng cách này bạn chỉ cấp quyền cho vai trò. Điều này sẽ giúp bạn quản lý bảo mật một cách tốt hơn. Ngoài ra, phiên bản máy chủ sql - 2008R2, 2012 là gì?
Kin Shah

Câu trả lời:


19

Đầu tiên để đảm bảo thuật ngữ. Đăng nhập là hiệu trưởng bảo mật mức cá thể ( sys.server_principals) và Người dùng là hiệu trưởng bảo mật cấp cơ sở dữ liệu ( sys.database_principals). Chúng được nối với nhau bằng SID (định danh bảo mật). Nếu bạn nhìn vào các chế độ xem hệ thống ở trên, bạn có thể thấy chúng được nối với nhau theo định dạng 1: 1 bằng SID. Đó là 1 Đăng nhập vào 1 Người dùng trong cơ sở dữ liệu. Đăng nhập có thể có nhiều Người dùng nhưng họ phải ở trong các cơ sở dữ liệu khác nhau.

Vì vậy, bạn sẽ cần tạo một Người dùng trong cơ sở dữ liệu của mình cho mỗi Đăng nhập mà bạn muốn có quyền truy cập vào nó. Đó là một lệnh đủ đơn giản.

CREATE USER [UserName] FROM LOGIN [LoginName]

Từ đó bạn có thể đặt tất cả người dùng của mình vào một Vai trò (hoặc nhiều). Vai trò là một thùng chứa có quyền và chia sẻ các quyền đó với mỗi Người dùng (đối với vai trò cơ sở dữ liệu) hoặc Đăng nhập (ví dụ vai trò). Có một vai trò cơ sở dữ liệu được xây dựng được gọi là db_datareadercho phép truy cập đọc vào mọi bảng và dạng xem trong cơ sở dữ liệu. Bạn có thể thêm tất cả người dùng của mình vào vai trò đó. Tuy nhiên, một ý tưởng tốt hơn sẽ là tạo ra một vai trò mới và thêm nó vào db_datareadervai trò đó. Sau đó thêm tất cả người dùng của bạn vào vai trò mới. Lợi ích ở đây là nếu bạn muốn thêm quyền cho nhóm, bạn có thể chỉ cần thay đổi quyền trên vai trò.

Tạo vai trò bằng cách:

CREATE ROLE RoleName

Thêm người dùng vào một vai trò (hoặc một vai trò khác)

EXEC sp_addrolemember 'RoleName','UserName'

hoặc nếu bạn ở trong năm 2012 trở lên

ALTER ROLE [RoleName] ADD MEMBER [UserName]

Cảm ơn bạn đã khám phá chi tiết và cung cấp thông tin cơ bản về Kenneth, điều mà tôi không rõ ràng là That's 1 Login to 1 User in a database.
leepfrog
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.