使用原生 XML Web Service 的最佳作法

未來的 Microsoft SQL Server 版本將移除這項功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

此主題提供在 SQL Server 中計畫和評估原生 XML Web 服務時,需考慮的一些最佳作法,以供商務方案使用。這些建議可透過下列方式協助您:

  • 當您使用原生 XML Web 服務時,可協助保護您的 SQL Server 安裝。

  • 提供使用指導方針,協助您改善 SQL Server 安裝的效能。這些指導方針可協助您決定使用原生 XML Web Service 時,是否能有效地服務應用程式。

安全性最佳作法

請在部署原生 XML Web Service 時,考慮下列安全性最佳作法建議事項:

  • 使用 Kerberos 驗證。

  • 將端點連接權限限制為特定的使用者或群組。

  • 使用安全通訊端層來交換機密資料。

  • 在防火牆後面使用 SQL Server。

  • 確認伺服器上的 Windows Guest 帳戶已停用。

  • 視需要控制和更新端點狀態。

  • 盡可能使用安全的端點預設值。

使用 Kerberos 驗證

當您使用 CREATE ENDPOINT (Transact-SQL) 來建立端點時,請選取 AUTHENTICATION=KERBEROS 或 AUTHENTICATION = INTEGRATED,以便在 Kerberos 之下啟用 Windows 整合式安全性,當做端點所使用的驗證類型。第一個選項將只允許 Kerberos 做為端點驗證的模式。第二個選項將允許端點支援 NTLM 與 Kerberos 驗證。

對於驗證而言,Kerberos 通訊協定會使用相互驗證等內建功能來改善安全性。這表示伺服器與用戶端的識別都會進行驗證。

當您使用 Kerberos 驗證時,SQL Server 必須將服務主要名稱 (SPN) 與它將執行的帳戶相關聯。如需詳細資訊,請參閱<使用 Http.sys 註冊 Kerberos 服務主要名稱>。

將端點連接權限限制為特定的使用者或群組

在建立部署所需的端點後,請使用 Transact-SQL 陳述式 (例如 GRANT CONNECT 與 ALTER ON ENDPOINT) 來設定端點連接權限,以保謢它們的安全。當您指派連接權限時,請務必明確且只將權限授與給有需要存取 SQL Server 端點的特定使用者或特定群組。

一般而言,您應該將權限限制成只允許個別使用者連接端點。不建議將存取權授與 public 角色。我們建議您對 SQL Server 的權限模型做充分的了解。您可以使用此模型來明智地控制端點的存取。

重要事項重要事項

public 角色是一個特別的資料庫角色,每個 SQL Server 使用者都屬於此角色。此角色包含任何可以存取資料庫之使用者的預設存取權限。因為此資料庫角色是 SQL Server 的內建預設角色,並可做為授與所有使用者的方式 (與 Windows 權限中的「任何人」或「已驗證的使用者」相似),所以當您在 SQL Server 中設定權限時,應該謹慎使用。

如需詳細資訊,請參閱<GRANT 端點權限 (Transact-SQL)>。

使用安全通訊端層來交換機密資料

安全通訊端層 (SSL) 通訊協定會透過安全的 TCP/IP 通訊端 (IP 位址與 TCP 通訊埠編號組合) 介面,支援資料的加密與解密。為了讓 SQL Server 端點提供 SSL 加密,您必須先設定憑證。

當您為預設的 SSL 通訊埠 443 註冊憑證時,請考慮其他的應用程式也可能共用相同的憑證。例如,Internet Information Services (IIS) 可以主控相同通訊埠上的 SSL 流量,在這樣的情況下,此組態可能會影響 IIS 使用者。由於共用 SSL 通訊埠及其憑證,可能會有安全性的隱憂。

如需詳細資訊,請參閱<設定 SSL 使用的憑證>。

在防火牆後面使用 SQL Server

為了獲得最佳的安全性,您應該只在防火牆後面使用原生 XML Web Service。請務必確定在設定端點時,為了提供 HTTP 存取所使用的任何 TCP 通訊埠編號,必須受到防火牆的保護。允許 SQL Server 的安裝可以直接由網際網路用戶端存取且不受防火牆的保護,並不是建議的網路組態。如需詳細資訊,請參閱<SQL Server 安裝的安全性考量>。

確認伺服器上的 Windows Guest 帳戶已停用

Guest 帳戶是大部分 Microsoft Windows 版本中所提供的內建使用者帳戶。在 Windows Server 2003 中,此帳戶預設是停用的。在 Windows 2000 Server 與 Windows NT Server 4.0 中,此帳戶預設是啟用的。

為了在使用端點時降低介面攻擊的風險,您應該確定執行 SQL Server 的伺服器上已停用 Guest 帳戶。如需詳細資訊,請參閱 Windows 說明中的<若要停用或啟用本機使用者帳戶>。

視需要控制和更新端點狀態

當您使用 CREATE ENDPOINT (Transact-SQL) 來建立端點時,除非指定 STATE = STARTED 來明確啟動狀態,否則會停止預設狀態。若要控制現有端點的狀態,請使用 ALTER ENDPOINT (Transact-SQL) 來指定 STOPPED、STARTED 或 DISABLED。

例如,請使用下列陳述式來啟動或停止先前建立的端點 sql_endpoint:

ALTER ENDPOINT sql_endpoint STATE=STARTED

ALTER ENDPOINT sql_endpoint STATE=STOPPED

您也應該停用端點或卸除某個或特定端點上的特定 Web 方法 (如果您目前不想再使用它們的話)。

下列範例會顯示如何停用端點:

ALTER ENDPOINT sql_endpoint STATE=DISABLED

[!附註]

停用端點之後,必須等到重新啟動 SQL Server 服務 (MSSQLServer) 才能重新啟動端點。

若要從端點卸除 Web 方法,您將使用與下列格式類似的陳述式:

ALTER ENDPOINT sql_endpoint

FOR SOAP

(

DROP WEBMETHOD 'SayHello'

)

若要卸除端點,請使用 DROP ENDPOINT

盡可能使用安全的端點預設值

當您使用 CREATE ENDPOINTALTER ENDPOINT 來建立或修改端點時,除非明確地設定其他的值,否則會套用下列選項的預設值:

  • BATCHES = DISABLED

    停用該端點的 Transact-SQL批次模式。

  • LOGIN_TYPE = WINDOWS

    端點使用者只允許 Windows 驗證。

除非您必須修改這些設定值,以支援應用程式部署中您想要和需要的存取權或功能,否則我們建議您盡可能使用這些選項的預設值。

如需有關選擇加密演算法的詳細資訊,請參閱<選擇加密演算法>。

效能最佳作法

請在部署原生 XML Web Service 時,考慮下列效能最佳作法建議事項:

  • 在適當的案例中部署。

  • 在計畫以 SOAP 為基礎的方案時其他伺服器資源的因素。

  • 針對您的需求設定適當的 WSDL 選項。

部署適當的案例

原生 XML Web Service 最適用於包含下列需求的案例:

  • 您的應用程式會傳回或使用 XML 資料。

  • 您的應用程式高度依賴商務邏輯的預存程序。

  • 在商務方案中,您想要將 SQL Server 主控的 Web 服務應用程式與其他的 Web 服務應用程式整合,以達成服務導向架構 (SOA) 的目標。

  • 您正在尋找 SQLXML 中層方案較好的執行替代方案,以便在相同的伺服器上將 Web 服務部署在一起。

  • 您想要為內部網路網站產生和發行靜態報告,該網站中豐富的功能集以及 SQL Server 2005 Reporting Services 或更新版本的其他負擔可能會超出您的需求。

同樣的,在包含下列需求的案例中,我們不建議使用原生 XML Web Service:

  • 您的應用程式是用以插入或擷取二進位大型物件 (BLOB) 的資料,例如大型 binaryimage 或 text 值。

  • 您的應用程式需要即時交易處理以及關鍵回應時間。

  • 您正在使用 SQL Server 並結合其他需要大量處理的應用程式,例如 TPC Benchmark C (TPC-C) 應用程式。

在計畫以 SOAP 為基礎的方案時其他伺服器資源的因素

基於容量計畫的目的,請注意不同於表格式資料流 (TDS) 通訊協定,SOAP 效能會依不同的應用程式而不同,而且可能需要額外的伺服器資源負擔。例如,SQL Server 產品小組所執行的 SQL Server 2005 測試,在傳回大量 XML 文件的狀況中,以 SOAP 為基礎的存取時間比以 TDS 為基礎的存取時間還要多出 20% 至 30%。

針對您的需求設定適當的 WSDL 選項

在部署原生 XML Web Service 之前,您應該決定適當的 WSDL 選項,以便在方案所需的所有支援的用戶端及作業系統中使用。

為了在異質環境 (即 Web 服務用戶端包含非 Windows 的作業系統) 中達到最大的互通性,請使用簡單 WSDL。針對以 Microsoft Visual Studio 2005 開發之只支援 Windows 的環境,您可以使用預設 WSDL 來存取 Visual Studio 2005 中所包含的豐富類型支援。

有時候,協力廠商 SOAP 用戶端可能需要自訂 WSDL 以利互通性。如需詳細資訊,請參閱<實作自訂 WSDL 支援>。