2013-03-20 31 views
5

Có somhow có thể thiết lập các ProtectionLevel của gói SSIS để DontSaveSensitivechuỗi kết nối sử dụng với mật khẩu từ tập tin cấu hình trong phát triển gói trong Visual Studio?Làm thế nào để sử dụng DontSaveSensitive và file cấu hình xml trong phát triển gói SSIS

Tôi có gói, ví dụ: Gói 1 với ProtectionLevel = DontSaveSensitive. Gói này đang sử dụng kết nối từ trình quản lý kết nối, ví dụ: Connection1.

Gói 1 có bật cấu hình sử dụng tệp cấu hình file1.dtsConfig với chuỗi kết nối được chỉ định. chuỗi kết nối này có mật khẩu trong nó:

<DTSConfiguration> 
    <DTSConfigurationHeading> 
     <DTSConfigurationFileInfo GeneratedBy="..." GeneratedFromPackageName="..." GeneratedFromPackageID="..." GeneratedDate="20.3.2013 12:08:27"/> 
    </DTSConfigurationHeading> 
    <Configuration ConfiguredType="Property" Path="\Package.Connections[Destination].Properties[ConnectionString]" ValueType="String"> 
     <ConfiguredValue>Data Source=.;Password=Password123;User ID=MyUser;Initial Catalog=Catalog;Provider=SQLNCLI10.1;Persist Security Info=True;Auto Translate=False;</ConfiguredValue> 
    </Configuration> 
</DTSConfiguration> 

Bây giờ khi mở kết nối từ quản lý kết nối trong Visual Studio, trường văn bản cho mật khẩu được để trống và gói doen't thực thi. Tại sao không được sử dụng mật khẩu được chỉ định trong chuỗi kết nối trong tệp cấu hình file1.dtsConfig?

enter image description here

Trả lời

4

Cuối cùng chúng tôi đã tìm ra cách làm thế nào để làm điều đó:

  • Thay đổi ProtectionLevel để DontSaveSensitive
  • Tạo tập tin configuraton với chuỗi kết nối
  • thủ chỉnh sửa tập tin cấu hình này: thêm mật khẩu để chuỗi kết nối trong trường hợp bạn kết nối với xác thực SQL Server

Sau đó gói SSIS sẽ tải mật khẩu bao gồm chuỗi kết nối từ tệp cấu hình ngay cả trong Visual Studio. Trong hộp thoại kết nối quản lý kết nối, mật khẩu sẽ không được hiển thị, nhưng gói chạy bằng chuỗi kết nối từ cấu hình.

+0

Sự cố khi sử dụng 'EncryptSensitiveWithUserKey' là khi bạn chia sẻ gói của mình với gói khác hoặc một số người dùng khác cố chạy gói của bạn, quá trình thực thi sẽ 'không thành công'. Tùy chọn này nên được sử dụng khi bạn không có kế hoạch triển khai gói của bạn hoặc tích hợp gói của bạn với nhóm của bạn hoặc cho phép người dùng khác chạy gói của bạn khi bạn triển khai nó trong máy chủ sql hoặc hệ thống tệp – praveen

+0

Nhưng tôi đang sử dụng gói cretaed bởi người dùng khác trên máy tính khác với các thiết lập EncryptSensitiveWithUserKey trên máy tính của tôi ngay bây giờ. Khi tôi chỉ định tệp cấu hình, thì chuỗi kết nối bây giờ được đọc từ cấu hình (không phải từ gói) và gói chạy ok ngay cả mức bảo vệ được đặt thành EncryptSensitiveWithUserKey và tôi không phải là tác giả của gói. – dee

+0

Điều đó có vẻ lạ. hãy xem bài viết này http://www.mssqltips.com/sqlservertip/2091/securing-your-ssis-packages-using-package-protection-level/ – praveen

0

SSIS sẽ lấy chuỗi kết nối từ Config File chỉ trong runtime .Even nếu bạn đánh dấu vào hộp kiểm Save my Password, SSIS sẽ không lưu các mật khẩu tùy chọn value.This được VALD chỉ trong BIDS session. Vì vậy, lần sau khi bạn mở gói bằng cách sử dụng BIDS, một lần nữa bạn cần phải nhập thông tin đăng nhập trong Visual Studio khác gói sẽ không compile, nhưng gói sẽ luôn luôn thực hiện đúng trong run time nếu bạn đã chỉ định connection string trong config file.

Theo MSDN nó rõ ràng rằng

Không lưu nhạy cảm: ngăn chặn các thuộc tính được đánh dấu nhạy cảm khỏi bị lưu với các gói và do đó làm cho dữ liệu nhạy cảm không có sẵn cho người dùng khác.

0

Đây cũng là trường hợp khi gói được đặt lúc đầu để sử dụng EncryptSensitiveWithUserKey, sau đó được thay đổi thành cấp độ bảo vệ DontSaveSensitive. Bạn phải chỉnh sửa thủ công tệp .conmgr và xóa DTS: Phần tử mật khẩu và đặt mật khẩu vào chuỗi kết nối, vì người dùng dee đã được viết một cách khôn ngoan ở trên.

Các vấn đề liên quan