安全性概觀 (Integration Services)

適用於:SQL Server Azure Data Factory 中的 SSIS Integration Runtime

SQL Server Integration Services 中的安全性是由數個階層所組成,以提供豐富且具彈性的安全性環境。 這些安全性階層包括使用數位簽章、套件屬性、SQL Server 資料庫角色,以及作業系統權限。 這些安全性功能中,絕大部分都屬於識別與存取控制的類別。

威脅和弱點安全防護

雖然 Integration Services 包含各種安全性機制,但套件以及套件所建立或使用的檔案可能會遭到惡意使用者的惡意探索。

下表將描述這些風險,以及您可採取來降低風險的主動式步驟。

威脅或弱點 定義 降低
封裝來源 封裝的來源是指建立此封裝的個人或組織。 執行來自未知或不受信任來源的封裝可能會有風險。 使用數位簽章來識別封裝的來源,並且只執行來自已知且信任來源的封裝。 如需詳細資訊,請參閱 Identify the Source of Packages with Digital Signatures(使用數位簽章識別封裝來源)。
封裝內容 封裝內容包括封裝中的元素及其屬性。 這些屬性可能會包含機密資料,例如密碼或連接字串。 SQL 陳述式等封裝元素可能會顯示資料庫的結構。 進行下列步驟來控制封裝及內容的存取權:

1) 若要控制套件本身的存取,請將 SQL Server 安全性功能套用至儲存在 SQL Server 執行個體中 msdb 資料庫的套件。 對於儲存在檔案系統中的封裝,請套用檔案系統安全性功能,例如存取控制清單 (ACL)。

2) 若要控制封裝內容的存取權,請設定封裝的保護等級。

如需詳細資訊,請參閱安全性概觀 (Integration Services)套件中的敏感性資料存取控制
封裝輸出 當您將封裝設定成使用組態、檢查點和記錄時,此封裝就會在封裝外部儲存這項資訊。 儲存在封裝外部的資訊可能會包含機密資料。 若要保護套件儲存至 SQL Server 資料庫資料表的組態和記錄,請使用 SQL Server 安全性功能。

若要控制檔案的存取權,請使用檔案系統所提供的存取控制清單 (ACL)。

如需詳細資訊,請參閱 Access to Files Used by Packages

識別功能

您可以透過在封裝中實作識別功能,藉以達到下列目標:

確定您只會開啟和執行來自信任來源的封裝

為確保您只開啟和執行來自信任來源的封裝,您必須先識別封裝的來源。 您可以使用憑證簽署封裝,藉以識別來源。 接著,當您開啟或執行套件時,可以讓 Integration Services 檢查數位簽章是否存在及其有效性。 如需詳細資訊,請參閱 Identify the Source of Packages with Digital Signatures(使用數位簽章識別封裝來源)。

存取控制功能

您可以透過在封裝中實作識別功能,藉以達到下列目標:

確定只有授權的使用者會開啟和執行封裝

為確保只有授權的使用者會開啟和執行封裝,您必須控制下列資訊的存取:

  • 控制封裝內容的存取,特別是敏感性資料。

  • 控制儲存在 SQL Server 中之套件和封裝組態的存取。

  • 控制套件及相關檔案的存取,例如儲存在檔案系統中的組態、記錄和檢查點檔案。

  • 控制 Integration Services 服務及其顯示在 SQL Server Management Studio 中之套件相關資訊的存取。

控制封裝內容的存取

為協助限制封裝內容的存取,您可以設定封裝的 ProtectionLevel 屬性來加密封裝。 您可以將此屬性設定為封裝所需的保護等級。 例如,在小組開發環境中,您可以使用僅處理封裝之小組成員知道的密碼來加密封裝。

當您設定封裝的 ProtectionLevel 屬性時,Integration Services 會自動偵測敏感性屬性,並根據指定的套件保護層級處理這些屬性。 例如,將封裝的 ProtectionLevel 屬性設定為以密碼加密機密資訊的層級。 對於此套件,Integration Services 會自動加密所有敏感性屬性的值,而且如果沒有提供正確的密碼,將不會顯示對應的資料。

如果屬性包含密碼或連接字串之類的資訊,或者如果屬性對應到變數或工作產生的 XML 節點,Integration Services 通常會將這些屬性視為敏感性。 對於 Integration Services 是否將屬性視為敏感性,取決於 Integration Services 元件 (例如連線管理員或工作) 的開發人員是否將該屬性指定為敏感性。 使用者無法將屬性新增至視為敏感性的屬性清單,也無法從中移除屬性。如果撰寫自訂工作、連線管理員或資料流程元件,您可以指定 Integration Services 應該將哪些屬性視為敏感性。

如需詳細資訊,請參閱 Access Control for Sensitive Data in Packages

控制封裝的存取

您可以將 Integration Services 套件儲存至 SQL Server 執行個體中的 msdb 資料庫,或將其儲存為檔案系統中使用 .dtsx 副檔名的 XML 檔案。 如需詳細資訊,請參閱 Save Packages(儲存封裝)。

將封裝儲存到 msdb 資料庫

將封裝儲存至 msdb 資料庫有助於提供伺服器、資料庫和資料表層級的安全性。 在 msdb 資料庫中,Integration Services 套件是儲存在 sysssispackages 資料表中。 由於這些封裝會分別儲存到 msdb 資料庫中的 sysssispackages 和 sysdtspackages 資料表中,因此,當您備份 msdb 資料庫時,也會自動備份這些封裝。

儲存在 msdb 資料庫中的 SQL Server 套件也可以透過套用 Integration Services 資料庫層級角色來保護。 Integration Services 包含以下三個固定資料庫層級角色 db_ssisadmin、db_ssisltduser 和 db_ssisoperator,以控制套件的存取。 讀取器和寫入器角色可以與每個封裝相關聯。 您也可以定義要在 Integration Services 套件中使用的自訂資料庫層級角色。 這些角色只能在儲存至 SQL Server 執行個體中 msdb 資料庫的套件上實作。 如需詳細資訊,請參閱 Integration Services 角色 (SSIS 服務)

將封裝儲存至檔案系統

如果您將封裝儲存到檔案系統,而非 msdb 資料庫中,請務必保護封裝檔案和包含封裝檔案的資料夾。

控制封裝所使用之檔案的存取

已設定為使用組態、檢查點和記錄的封裝會產生儲存在封裝之外的資訊。 此資訊可能是機密資訊,應該對其進行保護。 檢查點檔案只能儲存至檔案系統,但組態和記錄可以儲存至檔案系統或 SQL Server 資料庫中的資料表。 儲存至 SQL Server 的組態和記錄受到 SQL Server 安全性保護,但寫入檔案系統的資訊需要額外的安全性。

如需詳細資訊,請參閱 對封裝使用之檔案的存取權

安全地儲存封裝組態

套件組態可以儲存至 SQL Server 資料庫中的資料表或儲存至檔案系統。

組態可以儲存至任何 SQL Server 資料庫,而不只是儲存至 msdb 資料庫。 因此,您可以指定哪些資料庫要當做封裝組態的儲存機制。 您也可以指定要包含組態的資料表名稱,Integration Services 會自動使用正確的結構建立資料表。 將組態儲存至資料表可以提供伺服器、資料庫和資料表層級的安全性。 另外,儲存至 SQL Server 的組態會在您備份資料庫時自動備份。

如果您將組態儲存在檔案系統,而非 SQL Server 中,請務必保護包含封裝組態檔的資料夾。

如需有關組態的詳細資訊,請參閱< Package Configurations>。

控制 Integration Services 服務的存取

SQL Server Management Studio 會使用 SQL Server 服務列出已儲存的封裝。 為防止未經授權的使用者檢視本機與遠端電腦上儲存之封裝的資訊,並藉以得知私人資訊,請限制對執行 SQL Server 服務之電腦的存取。

如需詳細資訊,請參閱 授予 Integration Services 服務的權限

對封裝使用之檔案的存取權

封裝保護等級不會保護儲存於封裝之外的檔案。 這些檔案包括下列各項:

  • 組態檔

  • 檢查點檔案

  • 記錄檔

您必須分開保護這些檔案,尤其是當檔案中包含機密資訊時。

組態檔

如果組態中含有敏感性資訊 (例如登入和密碼資訊),則應考慮將組態儲存至 SQL Server,或使用存取控制清單 (ACL) 來限制對儲存檔案之位置或資料夾的存取,並只允許存取特定帳戶。 通常,您可以將存取權授與您允許執行封裝的帳戶,以及負責管理和疑難排解封裝的帳戶,其工作可能包括檢閱組態、檢查點和記錄檔的內容。 由於 SQL Server 提供伺服器和資料庫層級的保護,因此可以提供更安全的儲存體。 若要將組態儲存至 SQL Server,請使用 SQL Server 組態類型。 若要儲存至檔案系統,則可以使用 XML 組態類型。

如需詳細資訊,請參閱 封裝組態建立封裝組態SQL Server 安裝的安全性考量

檢查點檔案

同樣地,如果封裝使用的檢查點檔案包含機密資訊,應使用存取控制清單 (ACL) 來保護儲存檔案之位置或資料夾的安全。 檢查點檔案儲存有關封裝進度和目前變數值的目前狀態資訊。 例如,封裝可能包括含有電話號碼的自訂變數。 如需詳細資訊,請參閱 使用檢查點來重新啟動封裝

記錄檔

寫入檔案系統的記錄項目也應使用存取控制清單 (ACL) 保護其安全。 記錄項目也可以儲存在 SQL Server 資料表中,並由 SQL Server 安全性進行保護。 記錄項目可能包含機密資訊,例如,如果封裝包含建構參考電話號碼之 SQL 陳述式的「執行 SQL」工作,SQL 陳述式的記錄項目便會包含電話號碼。 SQL 陳述式可能還顯示有關資料庫中資料表與資料行名稱的私用資訊。 如需詳細資訊,請參閱 Integration Services (SSIS) 記錄

對 Integration Services 服務的存取權

封裝保護等級可限制已獲允許編輯和執行封裝的人員。 您需要額外的保護措施來限制有誰能夠檢視目前在伺服器上執行的套件清單,以及有誰能夠停止目前在 SQL Server Management Studio 中執行的套件。

SQL Server Management Studio 會使用 SQL Server 服務列出執行中的套件。 Windows Administrators 群組的成員可以檢視和停止所有目前正在執行封裝。 非 Administrators 群組成員的使用者只能檢視和停止他們所啟動的封裝。

限制對執行 SQL Server 服務之電腦的存取很重要,特別是可列舉遠端資料夾的 SQL Server 服務。 任何已驗證的使用者都可以要求列舉封裝。 服務即使找不到該服務,仍會列舉資料夾。 這些資料夾名稱對惡意使用者可能很有用。 如果管理員已設定服務來列舉遠端電腦上的資料夾,則使用者還可查看他們通常無法看到的資料夾名稱。

下列清單所含的主題連結,將說明如何執行安全性相關特定工作。