CỘNG ĐỒNG CÔNG NGHỆ THÔNG TIN VIỆT NAM

Cấu hình ứng dụng ASP.NET 2.0 để làm việc với Microsoft SQL Server 2000

0 Thành viên và 1 Khách đang xem chủ đề.

Ngủ rồi Admin

  • Administrator
  • Hero Member
  • *****
    • Bài viết: 724
    • Số Lần: +95/-0
    • Giới tính:Nam
    • http://vietnetwork.vn
Giới thiệu

Cấu hình một ứng dụng ASP.NET 2 để hoạt động với SQL Server không phải là một công việc dễ dàng. Bạn cần lưu ý một số khái niệm liên quan đến bảo mật trong lĩnh vực SQL Server, IIS và ASP.NET 2.0.
Số lượng các tùy chọn khác nhau mà bạn đã làm cho vấn đề thậm chí còn phức tạp hơn. Trong bài viết này, tôi mô tả một số tình huống phổ biến mà bạn có thể gặp phải khi làm việc với các trang SQL Server và ASP.NET. Tôi sẽ sử dụng SQL Server 2005 trong tất cả các ví dụ của mình, nhưng hầu hết các khái niệm cũng áp dụng cho SQL Server 2000. Lưu ý rằng hầu hết các nguyên tắc được mô tả trong bài viết này cũng có thể được sử dụng trong các ứng dụng ASP.NET 1.x.


Nhiều cuốn sách về ASP.NET 2.0 (bao gồm cả của tôi (2)), sử dụng Microsoft SQL Server 2005 Express Edition. Lý do đằng sau sự lựa chọn này là Express Edition rất dễ sử dụng và cấu hình. Trong nhiều trường hợp, sử dụng cơ sở dữ liệu SQL Server Express dễ dàng như thêm cơ sở dữ liệu vào dự án của bạn (hoặc một trong các điều khiển Đăng nhập mới), sau đó nhấn F5 để chạy ứng dụng. Điều này làm cho Express Edition trở nên tuyệt vời cho sự phát triển cục bộ và các ứng dụng nhanh và bẩn. Tuy nhiên, trong môi trường sản xuất, Express Edition đã thắng được. Thay vào đó, bạn sẽ cần một trong những người anh em lớn hơn của nó như SQL Server 2005 Standard Edition. Nhưng ngay khi bạn cố gắng chuyển sang một trong các phiên bản SQL Server này, bạn có thể gặp phải một số vấn đề về cấu hình liên quan đến bảo mật. Bài viết này xem xét một số vấn đề phổ biến mà bạn cần lưu ý khi bạn cố gắng sử dụng SQL Server 2005 trong các ứng dụng của mình.

Bài viết bắt đầu với việc làm quen với thuật ngữ mà bạn sẽ gặp phải khi định cấu hình hệ thống. Phần thứ hai sau đó xem xét một số tình huống khác nhau để định cấu hình ứng dụng ASP.NET 2.0 với SQL Server 2005. Bạn sẽ thấy cách sử dụng cơ sở dữ liệu SQL Server tùy chỉnh trong ứng dụng của riêng bạn và cách định cấu hình cả SQL Server và ứng dụng của bạn .

Bài viết này không liên quan đến việc cấu hình cơ sở dữ liệu của bạn cho các tính năng mới của nhà cung cấp ASP.NET 2.0, như Tư cách thành viên và Trình quản lý vai trò. Tuy nhiên, có một bài viết tuyệt vời của Scott Guthrie có tên là Định cấu hình Dịch vụ ứng dụng ASP.NET 2.0 để sử dụng SQL Server 2000 hoặc SQL Server 2005 (3). 2005 để làm việc độc đáo với các tính năng nhà cung cấp mới. Bài viết đó, cùng với bài viết này, sẽ cung cấp cho bạn đủ chi tiết để thiết lập hệ thống của bạn để nó có thể hoạt động với cơ sở dữ liệu SQL Server 2000 hoặc 2005.

Thuật ngữ và khái niệm

Khi bạn muốn kết nối với cơ sở dữ liệu SQL Server, bạn phải tự xác thực, để cơ sở dữ liệu biết người dùng nào đang cố gắng truy cập. Microsoft SQL Server hỗ trợ hai cơ chế xác thực khác nhau: Xác thực máy chủ SQL và Xác thực Windows (thường được gọi là Bảo mật tích hợp).

Xác thực máy chủ SQL

Với Xác thực Máy chủ SQL, SQL Server đảm nhiệm việc quản lý người dùng. Điều này có nghĩa là người dùng và mật khẩu của họ được quản lý bởi SQL Server. Bạn có thể truy cập chức năng quản lý người dùng trong SQL Server thông qua SQL Server Management Studio (đối với SQL Server 2005) hoặc Trình quản lý doanh nghiệp (đối với SQL Server 2000). Bạn sẽ thấy nhiều hơn về điều này sau.

Để kết nối với phiên bản SQL Server sử dụng xác thực Máy chủ SQL, bạn cần chuyển tên người dùng và mật khẩu trong chuỗi kết nối của ứng dụng. Một chuỗi kết nối điển hình trông như thế này:

Data Source=YourServer;Initial Catalog=YourDatabase;
User Id=UserName;Password=Password;

Xác thực Windows

Với Windows xác thực, hệ điều hành Windows đảm nhiệm việc quản lý người dùng. Tất cả các tương tác với cơ sở dữ liệu được thực hiện trong ngữ cảnh của người dùng đang gọi (nhiều hơn về sau) để cơ sở dữ liệu biết ai truy cập hệ thống, mà không có tên người dùng và mật khẩu rõ ràng được truyền trong chuỗi kết nối. Bạn vẫn cần ánh xạ tài khoản Windows sang tài khoản SQL Server để SQL Server có thể xác định liệu tài khoản đó có đủ quyền hay không. Tôi sẽ chỉ cho bạn cách làm điều này sau.

Một chuỗi kết nối thông thường sử dụng Windows xác thực có thể trông như thế này:

Data Source=YourServer;Initial Catalog=YourDatabase;
Integrated Security=SSPI;

Thay vì Tích hợp bảo mật = SSPI, bạn cũng có thể sử dụng Trusted_Connection = True có tác dụng tương tự.
Xác thực máy chủ Windows hay SQL?

Nói chung, nó khuyến nghị sử dụng xác thực Windows. Thực tế là bạn không cần sử dụng mật khẩu trong chuỗi kết nối, có nghĩa là ứng dụng của bạn sẽ an toàn hơn một chút. Bạn không cần phải gửi mật khẩu qua dây, và ở đó, không cần lưu trữ nó trong một tệp cấu hình cho ứng dụng của bạn, nơi mọi người có quyền truy cập vào tệp đó có thể xem được.

Tuy nhiên, Xác thực Máy chủ SQL dễ sử dụng hơn một chút. Vì bạn chỉ định tên người dùng và mật khẩu của riêng mình, bạn không cần phải biết tài khoản người dùng cuối cùng mà ứng dụng của bạn chạy theo.

Lưu ý rằng SQL Server có thể vô hiệu hóa Xác thực Máy chủ SQL (nhưng không phải Xác thực Windows). Bạn có thể định cấu hình cài đặt này thông qua hộp thoại Thuộc tính máy chủ trong Studio quản lý hoặc Trình quản lý doanh nghiệp. Ảnh chụp màn hình sau đây cho thấy hộp thoại cài đặt cho SQL Server 2005:

Hình 1: Hộp thoại Thuộc tính Máy chủ SQL Server 2005

Bạn có thể thấy từ ảnh chụp màn hình này, phiên bản SQL Server này được cấu hình để cho phép cả hai cơ chế xác thực.
Tài khoản người dùng

Một lĩnh vực khác bạn cần biết thêm một chút là tài khoản người dùng. Khi bạn sử dụng Xác thực Máy chủ SQL, mọi thứ rất đơn giản. Tài khoản được sử dụng là tài khoản bạn chỉ định trong chuỗi kết nối. Nhưng khi bạn có kết nối với SQL Server với Windows xác thực, kết nối đó sẽ chạy theo thông tin đăng nhập của một tài khoản người dùng cụ thể. Tài khoản đó là gì, phụ thuộc vào ứng dụng và cấu hình của nó. Câu hỏi thường gặp sau đây giải thích cách bạn có thể tìm ra tài khoản người dùng khi bạn đang sử dụng Dịch vụ thông tin Internet (IIS) làm máy chủ web: Hồi Làm cách nào để xác định tài khoản bảo mật mà IIS sử dụng để chạy trang web của tôi? (4)". Đối với hầu hết các kịch bản, Câu hỏi thường gặp này sẽ là đủ; tuy nhiên, khi bạn đang chạy một trang web từ bên trong Visual Studio 2005 bằng máy chủ web phát triển tích hợp Cassini, tài khoản thực được sử dụng bởi quy trình máy chủ web là tài khoản của chính bạn mà bạn sử dụng để đăng nhập vào máy Windows của mình. Vì vậy, hãy ghi nhớ điều đó khi bạn có một trang web trong Visual Web Developer và chạy nó với máy chủ web phát triển.

Bây giờ bạn đã quen thuộc với thuật ngữ quan trọng, đã đến lúc xem xét một số tình huống khác nhau. Trong phần tiếp theo, I mông sẽ chỉ cho bạn cách định cấu hình ứng dụng và SQL Server của bạn theo 3 kịch bản khác nhau. Đối với các kịch bản này, I triệt sẽ sử dụng một máy có tên là Development giữ trang web và cài đặt SQL Server có tên là Development \ Sql2005. Trong ví dụ của tôi, tôi đang sử dụng một cơ sở dữ liệu có tên BugBase, được lấy từ cuốn sách mới nhất ASP.NET 2.0 Instant results (5).
Đính kèm cơ sở dữ liệu vào SQL Server

Trước khi tôi chỉ cho bạn ba tình huống khác nhau, hãy để xem xét việc đính kèm cơ sở dữ liệu vào bản cài đặt SQL Server của bạn. Không giống như các cơ sở dữ liệu dựa trên tệp như Microsoft Access, cơ sở dữ liệu SQL Server cần được đính kèm với phiên bản đang chạy của SQL Server. Khi bạn đã đính kèm cơ sở dữ liệu, nó vẫn được đính kèm cho đến khi bạn xóa hoặc tách nó ra. Điều này hoạt động hơi khác một chút đối với cơ sở dữ liệu chạy dưới SQL Server Express. Để biết thêm chi tiết về điều này, hãy xem Làm việc với Trường hợp Người dùng (6) trên trang web MSDN.

1. Để đính kèm cơ sở dữ liệu, hãy mở SQL Server Management Studio từ mục menu bắt đầu Microsoft SQL Server 2005. Sau khi bạn đăng nhập, bạn sẽ thấy màn hình sau:
Hình 2 - Studio quản lý máy chủ Microsoft SQL
2. Nhấp chuột phải vào nút Cơ sở dữ liệu và chọn Đính kèm. Trong hộp thoại tiếp theo, nhấp vào nút Thêm, duyệt tìm tệp .mdf của bạn và nhấp OK hai lần để đính kèm cơ sở dữ liệu.
3. Khi bạn đã thêm cơ sở dữ liệu, bạn có thể cần đổi tên nó. Theo mặc định, cơ sở dữ liệu được đặt tên theo đường dẫn đầy đủ đến .mdfF2 và nhập tên mới. Trong trường hợp của tôi, tôi đã đổi tên cơ sở dữ liệu thành BugBase. tập tin. Để đổi tên cơ sở dữ liệu, bấm vào nó một lần, nhấn

Ở giai đoạn này, theo mặc định, chỉ các tài khoản quản trị (quản trị viên Windows hoặc tài khoản SQL Server SA) có quyền truy cập vào cơ sở dữ liệu. Với cơ sở dữ liệu của bạn được đính kèm với phiên bản SQL Server của bạn, đã đến lúc xem xét cấu hình cơ sở dữ liệu và ứng dụng.
Kịch bản 1 - Sử dụng xác thực máy chủ SQL

Từ quan điểm cấu hình, đây có lẽ là kịch bản dễ cấu hình nhất: tất cả những gì bạn cần làm là tạo người dùng trong SQL Server, gán mật khẩu và sau đó sử dụng tài khoản đó trong chuỗi kết nối. Hành động đầu tiên trong quá trình này là thêm tài khoản người dùng. Để làm điều này, hãy làm theo các bước sau:

1. Mở nút Bảo mật mà bạn có thể thấy trong Hình 2, sau đó nhấp chuột phải vào Đăng nhập và chọn Đăng nhập mới.
2. Chọn tùy chọn xác thực Máy chủ SQL, sau đó nhập tên người dùng và mật khẩu. Trong ví dụ của tôi, tôi đang sử dụng MyWebsiteUser làm tên người dùng và Pa $$ w0rD làm mật khẩu.
3. Cuối cùng, nhấp vào nút OK.

Bước cuối cùng là cung cấp cho tài khoản mới này các quyền phù hợp với cơ sở dữ liệu của bạn:

1. Quay trở lại cơ sở dữ liệu bạn đã đính kèm trước đó, mở rộng cơ sở dữ liệu, sau đó mở rộng Bảo mật và cuối cùng là mở rộng Người dùng. Bạn sẽ thấy một cái gì đó tương tự như thế này: 3bugbasingatabase.gif
Hình 3 - Khung nhìn mở rộng của cơ sở dữ liệu BugBase
2. Nhấp chuột phải vào nút Người dùng và chọn Người dùng mới.
3. Trong hộp văn bản Tên người dùng, nhập MyWebsiteUser.
4. Trong hộp văn bản Tên đăng nhập, nhập MyWebsiteUser. Ngoài ra, bạn có thể nhấp vào nút nhỏ với ba hình elip và duyệt tìm tên người dùng.
5. Ở nửa dưới màn hình, bạn thấy một hộp có nhãn thành viên cơ sở dữ liệu. Trong hộp này, bạn có thể chọn một số vai trò mà bạn muốn cấp cho người dùng mới của mình. Quy tắc ở đây là: cung cấp cho người dùng càng ít quyền càng tốt. Một lựa chọn tốt là db_datareader và db_datawriter cho phép tài khoản vừa đọc và ghi vào bảng trong cơ sở dữ liệu.
Hình 4: Danh sách thành viên vai trò cơ sở dữ liệu.

Kiểm tra SQL Server từ sách trực tuyến để biết thêm thông tin về các vai trò khác nhau.
6. Có một cơ hội công bằng rằng chỉ đọc và viết vào bảng là không đủ. Chẳng hạn, bạn có thể có một số thủ tục được lưu trữ mà tài khoản người dùng cũng phải có khả năng thực hiện. Để cấp quyền thực thi tài khoản cho các thủ tục của bạn, nhấp Bảo mật trong khung bên trái và nhấp vào nút Thêm. Trong hộp thoại tiếp theo, chọn Tất cả các đối tượng của các loại và sau đó bấm OK. Sau đó kiểm tra Thủ tục lưu trữ và bấm OK. Danh sách với Securables sẽ được lấp đầy với một số thủ tục được lưu trữ, bao gồm cả thủ tục của riêng bạn. Xác định vị trí thủ tục được lưu trữ của bạn và sau đó đảm bảo ít nhất Execute được chọn trong cột Grant của hộp Cấp phép rõ ràng. 5permissionsdialog.gif
Hình 5 - Hộp thoại quyền cho một thủ tục được lưu trữ

Lặp lại bước này cho mọi thủ tục lưu trữ tùy chỉnh trong cơ sở dữ liệu của bạn.
7. Cuối cùng, khi tất cả các quyền đã được đặt, hãy nhấp vào nút OK để áp dụng tất cả các thay đổi cho tài khoản người dùng mới.

Pfew, rất nhiều công việc, phải không? May mắn thay, hầu hết các công việc hiện đã được thực hiện. Bước tiếp theo là thử nghiệm nó. Trong phần sau, tôi sẽ hướng dẫn bạn cách tạo một trang web đơn giản hiển thị dữ liệu từ cơ sở dữ liệu BugBase với tài khoản người dùng được tạo và định cấu hình trong các bước trước.

1. Khởi động Visual Web Developer hoặc Visual Studio 2005 và tạo một trang web mới. Nó không quan trọng cho dù bạn chọn C # hay Visual Basic làm ngôn ngữ cho trang web.
2. Mở tệp Web.Config và thêm chuỗi kết nối trông như thế này:

Trích dẫn
<connectionStrings>
<add name=”BugBase”
connectionString=”Data Source=.SQL2005;
Initial Catalog=BugBase;
User ID=MyWebsiteUser;password=Pa$w0rD”
providerName=”System.Data.SqlClient” />
</connectionStrings>

Đừng quên thay thế các mục được tô sáng trong chuỗi kết nối này.

3. Từ đây, bạn có thể sử dụng chuỗi kết nối trong các trang ASPX. Cách bạn thực hiện việc này tùy thuộc vào yêu cầu của bạn, nhưng ví dụ bạn có thể sử dụng chuỗi kết nối này trong điều khiển SqlDataSource được sử dụng làm nguồn dữ liệu cho GridView. Đoạn mã sau đây hiển thị SqlDataSource và GridView hiển thị hai cột từ bảng Bug trong cơ sở dữ liệu BugBase:

Trích dẫn
<asp:SqlDataSource ID=”SqlDataSource1″ runat=”server”
ConnectionString=”<%$ ConnectionStrings:BugBase %>”
SelectCommand=”SELECT [Id], [Title] FROM [Bug]“>
</asp:SqlDataSource>

<asp:GridView ID=”GridView1″ runat=”server”
AutoGenerateColumns=”True” DataKeyNames=”Id”
DataSourceID=”SqlDataSource1″>
</asp:GridView>

4. Khi bạn tạo một trang có thể hiển thị dữ liệu, bạn có thể xem nó trong trình duyệt của mình. Nếu tất cả đều hoạt động như mong đợi, bạn sẽ thấy dữ liệu từ cơ sở dữ liệu được hiển thị. Nếu bạn gặp lỗi, hãy đảm bảo rằng bạn đã sử dụng đúng tài khoản và mật khẩu trong chuỗi kết nối và SQL Server được cấu hình cho Xác thực máy chủ SQL.

Kịch bản 2 - Sử dụng Windows xác thực với IIS và cơ sở dữ liệu trên cùng một máy

Đây là một tình huống phổ biến, đặc biệt là khi bạn đang phát triển trang web của mình trên máy cục bộ. Cả máy chủ web (IIS hoặc máy chủ web phát triển tích hợp) và SQL Server đều chạy trên cùng một máy vật lý. Kịch bản này giúp dễ dàng sử dụng Bảo mật tích hợp vì cả máy chủ web và SQL Server đều có thể sử dụng cùng một tài khoản Windows. Để định cấu hình máy chủ của bạn cho kịch bản này, hãy làm theo các bước sau:

1. Bắt đầu bằng cách xác định tài khoản được sử dụng bởi máy chủ web của bạn. Kiểm tra Câu hỏi thường gặp này để biết thêm chi tiết: Cách tôi xác định tài khoản bảo mật mà IIS sử dụng để chạy trang web của tôi? (9). Trong phần còn lại của phần này, tôi sẽ sử dụng tài khoản ASPNET trên máy của mình có tên là Phát triển.
2. Tiếp theo, bạn cần ánh xạ tài khoản Windows này sang tài khoản SQL Server. Để thực hiện việc này, hãy mở Microsoft SQL Server Management Studio và đăng nhập vào phiên bản SQL Server của bạn. Mở rộng nút Bảo mật (mà bạn có thể thấy trong Hình 2) và sau đó bấm chuột phải vào Đăng nhập Đăng nhập Mới. Nhập MachineName \ ASPNET trong hộp Tên đăng nhập, trong đó MachineName là tên của máy Windows của bạn, Phát triển trong trường hợp của tôi. Đảm bảo rằng xác thực Windows được chọn: và select6newuserdialog.gif
Hình 6 - Một phần của hộp thoại đăng nhập mới
3. Với tài khoản Windows được ánh xạ tới SQL Server, bước tiếp theo là gán cho đăng nhập này các quyền thích hợp trong cơ sở dữ liệu của bạn. Để làm điều này, mở rộng nút Cơ sở dữ liệu (hiển thị trong Hình 2) và sau đó mở rộng Bảo mật. Nhấp chuột phải vào nút Người dùng và chọn Người dùng mới. Trong hộp Tên người dùng, nhập ASPNET và trong tên Đăng nhập loại MachineName \ ASPNET. Hoặc, nhấp vào nút có dấu chấm lửng, sau đó Duyệt để chọn tài khoản từ danh sách Đối tượng phù hợp. Bạn nên kết thúc với một cái gì đó như thế này:
Hình 7 - Hộp thoại người dùng mới

4. Ở nửa dưới màn hình, bạn thấy một hộp có nhãn thành viên cơ sở dữ liệu. Trong hộp này, bạn có thể chọn một số vai trò mà bạn muốn cấp cho người dùng mới của mình. Trong ví dụ này, chọn db_datareader và db_datawriter. Để biết thêm chi tiết về cách định cấu hình vai trò và quyền cho các đối tượng khác như các thủ tục được lưu trữ, hãy xem bước 5 và 6 (10) của kịch bản 1 trước đó trong bài viết này.
5. Cuối cùng, khi tất cả các quyền đã được đặt, hãy nhấp vào nút OK để áp dụng tất cả các thay đổi cho tài khoản người dùng mới.

Bước tiếp theo là thử nghiệm các cài đặt này. Trong phần sau, tôi sẽ hướng dẫn bạn cách tạo một trang web đơn giản hiển thị dữ liệu từ cơ sở dữ liệu BugBase với tài khoản người dùng được tạo và định cấu hình trong các bước trước. Lưu ý rằng các bước này tương tự như các bước trong kịch bản 1 trước đó trong bài viết này. Tuy nhiên, bạn sẽ cần phải sử dụng một kết nối khác và cấu hình IIS cho trang web của bạn.

1. Khởi động Visual Web Developer hoặc Visual Studio 2005 và tạo một trang web mới. Nó không quan trọng cho dù bạn chọn C # hay Visual Basic làm ngôn ngữ cho trang web. Lưu trang web trong một thư mục như C: \ TestWebsite.
2. Mở tệp Web.Config và thêm chuỗi kết nối trông như thế này:

Trích dẫn
<connectionStrings>
<add name=”BugBase”
connectionString=”Data Source=.SQL2005;Initial Catalog=BugBase;
Integrated Security=SSPI;” providerName=”System.Data.SqlClient” />
</connectionStrings>

Đừng quên thay thế các mục được tô sáng trong chuỗi kết nối này thành các giá trị áp dụng cho tình huống của bạn.

3. Từ đây, bạn có thể sử dụng chuỗi kết nối trong các trang ASPX. Cách bạn thực hiện việc này tùy thuộc vào yêu cầu của bạn, nhưng ví dụ bạn có thể sử dụng chuỗi kết nối này trong điều khiển SqlDataSource được sử dụng làm nguồn dữ liệu cho GridView. Đoạn mã sau đây hiển thị SqlDataSource và GridView hiển thị hai cột từ bảng Bug trong cơ sở dữ liệu BugBase:

Trích dẫn
<asp:SqlDataSource ID=”SqlDataSource1″ runat=”server”
ConnectionString=”<%$ ConnectionStrings:BugBase %>”
SelectCommand=”SELECT [Id], [Title] FROM [Bug]“>
</asp:SqlDataSource>

<asp:GridView ID=”GridView1″ runat=”server”
AutoGenerateColumns=”True” DataKeyNames=”Id”
DataSourceID=”SqlDataSource1″>
</asp:GridView>

4. Khi bạn đã tạo trang có thể hiển thị dữ liệu, bạn nên định cấu hình IIS để nó trỏ đến thư mục gốc của trang web của bạn. Để thực hiện việc này, hãy mở Trình quản lý dịch vụ thông tin Internet và định vị trang web của bạn (rất có thể, trang web này được gọi là Trang web mặc định). Nhấp chuột phải vào nó và chọn Thuộc tính. Trên tab Thư mục chính, hãy nhập C: \ TestWebsite (hoặc vị trí bạn đã tạo trang web ở bước 1) trong hộp Đường dẫn cục bộ. Tiếp theo, chuyển sang tab ASP.NET và đảm bảo rằng trang web chạy với phiên bản 2.0 của khung.
5. Cuối cùng, duyệt đến http: // localhost trong trình duyệt web của bạn. Nếu tất cả đều hoạt động như mong đợi, bạn sẽ thấy dữ liệu từ cơ sở dữ liệu được hiển thị. Nếu bạn gặp lỗi, hãy đảm bảo rằng bạn đã sử dụng đúng tài khoản và mật khẩu trong chuỗi kết nối và SQL Server được cấu hình cho Xác thực máy chủ SQL.

Kịch bản 3 - Sử dụng Windows xác thực với IIS và cơ sở dữ liệu trên các máy khác nhau

Đây là một kịch bản phổ biến khác và một kịch bản mà bạn có thể gặp phải trong môi trường sản xuất. Trang web (hoặc trang web) chạy trên máy chủ web chuyên dụng, trong khi dữ liệu đến từ máy SQL Server chuyên dụng. Thông thường, cơ chế xác thực trong kịch bản này là xác thực Máy chủ SQL. Lý do đằng sau điều này là vì nó dễ cài đặt. Bạn không cần phải biết máy chủ web sử dụng tài khoản nào, vì bạn rõ ràng gửi tên người dùng và mật khẩu trong chuỗi kết nối tới cơ sở dữ liệu. Tuy nhiên, bạn không phải sử dụng cơ chế bảo mật này; Nó hoàn toàn có thể sử dụng Windows xác thực cũng như hai máy nằm trên cùng một mạng.

Khi sử dụng kịch bản này, có hai tùy chọn mà bạn cần lưu ý: cả hai máy thuộc cùng một miền Windows hoặc cả hai máy có thể được xem là máy độc lập, độc lập. Trong cả hai cấu hình, các hành động bạn cần thực hiện rất giống với các kịch bản 2. Tuy nhiên, nó lại là tài khoản người dùng chính xác khác nhau. Hai phần tiếp theo mô tả điều này chi tiết hơn.
Chia sẻ cùng tên miền Windows

Khi cả hai máy là một phần của cùng một Miền Windows, bạn có thể định cấu hình IIS để chạy trang web trong một tài khoản miền cụ thể, như YourDomain \ AnonIIS. Để biết thêm chi tiết về cách định cấu hình IIS, hãy xem Câu hỏi thường gặp này: Tôi làm cách nào để thiết lập IIS để cho phép nó sử dụng tài nguyên mạng? (11) Có một cảnh báo mà bạn cần biết trong các trang ASP.NET: ngay cả khi bạn chỉ định tài khoản miền trong IIS, trang web ASP.NET vẫn sẽ chạy trong MachineName \ ASPNET hoặc MachineName \ Network Service.

Tuy nhiên, bạn có thể thay đổi hành vi này bằng cách sửa đổi tệp Web.Config cho ứng dụng. Để thực hiện thay đổi, bạn có thể thêm một phần tử <nhận dạng cá nhân = sự thật đúng hướng /> (12) vào phần <system.web>. Nếu bạn thêm phần tử, IIS sẽ mạo danh người dùng hiện tại và sử dụng tài khoản đó thay vì tài khoản ASPNET. Trong trường hợp này, người dùng hiện tại của người dùng, có nghĩa là tài khoản bạn đã đặt trong hộp truy cập Ẩn danh khi bạn sử dụng quyền truy cập ẩn danh. Mặt khác, người dùng hiện tại có nghĩa là một khách truy cập được xác thực.

Khi bạn đã cấu hình IIS để chạy trong tài khoản miền và định cấu hình ứng dụng để sử dụng mạo danh, bước cuối cùng là thêm tài khoản miền với tư cách là người dùng vào SQL Server và cơ sở dữ liệu của bạn. Điều này hoạt động gần giống như được mô tả trong kịch bản 2 (13). Sự khác biệt duy nhất là tài khoản bạn cần thêm theo mô hình của Domain \ AccountName chứ không phải MachineName \ AccountName.
Máy đứng một mình

Một lần nữa, kịch bản này tương tự như kịch bản 2 về mặt cấu hình SQL Server. Tuy nhiên, vì cả hai máy đều có tên khác nhau và do đó tài khoản người dùng khác nhau, nên dường như không thể thêm tài khoản được IIS sử dụng trên một máy vào máy chủ SQL khác. Thủ thuật trong kịch bản này là sử dụng các tài khoản được nhân đôi trên thành phố. Bạn tạo tài khoản với tên và mật khẩu giống hệt nhau trên cả hai máy, ví dụ MyWebsiteAccount. Trên máy chạy IIS, bạn sử dụng tài khoản này trong hộp thoại Truy cập ẩn danh cho IIS và thêm phần tử <nhận dạng impersonate =, true true /> (14) vào tệp cấu hình ứng dụng của bạn. Để biết thêm chi tiết, hãy xem phần trước Chia sẻ cùng tên miền Windows Windows. Sau đó, trên máy chủ cơ sở dữ liệu, bạn thêm tài khoản MachineName \ MyWebsiteAccount vào SQL Server và cơ sở dữ liệu của bạn. Điều này hoạt động trong thời gian chạy, bởi vì đại diện bên trong của tài khoản Windows sẽ giống nhau, bất kể máy được tạo tài khoản ở đâu.

Để biết thêm thông tin về việc phản chiếu các tài khoản, hãy xem phần Đồng bộ hóa tài khoản IUSR của Câu hỏi thường gặp này (15). Mặc dù Câu hỏi thường gặp nói về việc đồng bộ hóa tài khoản IUSR trong kịch bản ASP cổ điển, các nguyên tắc tương tự được áp dụng cho ASP.NET.
Các vấn đề khác

Khi làm việc với SQL Server 2005, bạn cũng có thể nhận được lỗi sau: Lỗi Một lỗi đã xảy ra trong khi thiết lập kết nối với máy chủ. Khi kết nối với SQL Server 2005, lỗi này có thể do thực tế là trong cài đặt mặc định, SQL Server không cho phép kết nối từ xa.

Trong cài đặt mặc định, SQL Server chỉ cho phép các ứng dụng cục bộ kết nối. Để giải quyết vấn đề này và cũng cấp cho các hệ thống từ xa quyền truy cập vào cơ sở dữ liệu, hãy làm theo các bước sau:

1. Mở Trình quản lý cấu hình máy chủ SQL từ mục menu bắt đầu Microsoft SQL Server 2005. Tùy thuộc vào phiên bản SQL Server mà bạn sử dụng, mục này có thể được đặt trong menu phụ Công cụ cấu hình.
2. Trong cửa sổ xuất hiện, định vị phiên bản SQL Server của bạn trong mục Cấu hình mạng SQL Server 2005 và nhấp vào nó.
3. Trong danh sách có các giao thức ở bên phải, nhấp chuột phải vào Named Faucet và chọn Bật nếu trạng thái của nó hiện được đặt thành Vô hiệu hóa.
4. Lặp lại bước trước nhưng lần này cấu hình TCIP / IP.

Bạn cần phải khởi động lại SQL Server để các thay đổi có hiệu lực. Bạn có thể thực hiện việc này trong nút Dịch vụ SQL Server 2005 trong cùng hộp thoại hoặc thông qua bảng Dịch vụ của Công cụ quản trị của Windows.

Tóm lược

Như bạn đã thấy, bảo mật các ứng dụng SQL Server và ASP.NET là một nhiệm vụ khó khăn. Trong nhiều tình huống, bạn nên để lại điều này cho quản trị viên hệ thống hoặc cơ sở dữ liệu của bạn. Tuy nhiên, nếu bạn không có chuyên gia bảo mật hoặc bạn là quản trị viên hệ thống hoặc cơ sở dữ liệu, bài viết này hy vọng đã cung cấp cho bạn một cái nhìn sâu sắc có giá trị trong việc bảo mật SQL Server và ứng dụng của bạn.

Xin lưu ý rằng vì chủ đề bảo mật này rất rộng, tôi đã có thể mô tả từng kịch bản, bước hoặc khái niệm rất chi tiết. Nếu bạn cảm thấy thiếu thứ gì đó quan trọng, vui lòng liên hệ với tôi (16), mô tả những gì bạn thiếu và tôi sẽ cập nhật bài viết.
Tải tập tin

Mã nguồn cho Điều này (17)
Bản tải xuống này chứa một trang ASP.NET mặc định với GridView đơn giản và SqlDataSource để bạn có thể kiểm tra mọi thứ. Nó cũng chứa một tệp Web.Config mẫu có hai chuỗi kết nối: một chuỗi sử dụng Xác thực Máy chủ SQL và một chuỗi sử dụng Xác thực Windows. Đừng quên cập nhật cả chuỗi kết nối và câu lệnh CHỌN trong trang ASPX khi bạn sử dụng mẫu này. Ngoài ra, vì tệp Web.Config chứa hai chuỗi kết nối có cùng tên, bạn cần đảm bảo rằng bạn nhận xét ra chuỗi mà bạn không cần.
Tài liệu tham khảo

* Làm việc với Trường hợp người dùng (18)
* Định cấu hình Dịch vụ Ứng dụng ASP.NET 2.0 để sử dụng SQL Server 2000 hoặc SQL Server 2005