分割合併安全性設定

適用於:Azure SQL 資料庫

欲使用分割/合併服務,您必須正確設定安全性。 此服務是 Azure SQL 資料庫彈性擴增功能的一部分。 如需其他詳細資訊,請參閱彈性擴增分割和合併服務教學課程

設定證書

證書會以兩種方式進行設定。

  1. 欲設定 TLS/SSL 憑證
  2. 欲設定用戶端憑證

欲取得證書

可以從公開憑證授權單位 (CA)或 Windows 憑證服務取得憑證。 這些是取得證書的首選方法。

若這些不可用,自我簽署憑證會產生。

產生憑證的工具

執行工具

欲設定 TLS/SSL 憑證

需要 TLS/SSL 憑證,才能加密通訊並驗證伺服器。 選擇下列三種案例中最適用者,並執行其所有步驟:

建立新的自我簽署憑證

  1. 建立自我簽署憑證
  2. 建立自我簽署 TLS/SSL 憑證的 PFX 檔案
  3. 將 TLS/SSL 憑證上傳至雲端服務
  4. 更新服務組態檔中的 TLS/SSL 憑證
  5. 匯入 TLS/SSL 憑證授權單位

欲使用憑證存放區中的現有憑證

  1. 從憑證存放區匯出 TLS/SSL 憑證
  2. 將 TLS/SSL 憑證上傳至雲端服務
  3. 更新服務組態檔中的 TLS/SSL 憑證

欲在 PFX 檔案中使用現有憑證

  1. 將 TLS/SSL 憑證上傳至雲端服務
  2. 更新服務組態檔中的 TLS/SSL 憑證

欲設定用戶端憑證

需要用戶端憑證,才能驗證服務的要求。 選擇下列三種案例中最適用者,並執行其所有步驟:

關閉用戶端憑證

  1. 關閉用戶端憑證式驗證

發行新的自我簽署用戶端憑證

  1. 建立自我簽署憑證授權單位
  2. 將 CA 憑證上傳至雲端服務
  3. 更新服務組態檔的 CA 憑證
  4. 發行用戶端憑證
  5. 建立用戶端憑證的 PFX 檔案
  6. 匯入用戶端憑證
  7. 複製用戶端憑證指紋
  8. 在服務組態檔中設定允許的用戶端

使用現有的用戶端憑證

  1. 尋找 CA 公開金鑰
  2. 將 CA 憑證上傳至雲端服務
  3. 更新服務組態檔的 CA 憑證
  4. 複製用戶端憑證指紋
  5. 在服務組態檔中設定允許的用戶端
  6. 設定用戶端憑證撤銷檢查

允許的 IP 位址

對服務端點的存取可以限制在特定 IP 位址範圍。

欲設定儲存的加密

必須有憑證,才能加密儲存在中繼資料存放區的認證。 選擇下列三種案例中最適用者,並執行其所有步驟:

使用新的自我簽署憑證

  1. 建立自我簽署憑證
  2. 建立自我簽署加密憑證的 PFX 檔案
  3. 將加密憑證上傳至雲端服務
  4. 更新服務組態檔的加密憑證

使用憑證存放區中的現有憑證

  1. 從憑證存放區匯出加密憑證
  2. 將加密憑證上傳至雲端服務
  3. 更新服務組態檔的加密憑證

在 PFX 檔案中使用現有的憑證

  1. 將加密憑證上傳至雲端服務
  2. 更新服務組態檔的加密憑證

預設設定

預設設定會拒絕所有對 HTTP 端點的存取。 這是建議的設定,因為對這些端點的要求可能會帶有敏感性資訊,例如資料庫認證。 預設設定會允許所有對 HTTP 端點的存取。 此設定可能會有進一步限制。

變更設定

<服務組態檔EndpointAcls> 區段中的適用存取控制規則群組和設定端點。

<EndpointAcls>
    <EndpointAcl role="SplitMergeWeb" endPoint="HttpIn" accessControl="DenyAll" />
    <EndpointAcl role="SplitMergeWeb" endPoint="HttpsIn" accessControl="AllowAll" />
</EndpointAcls>

存取控制群組中的規則是在服務組態檔的 <AccessControl name=""> 區段中設定。

網路存取控制 清單文件中會說明格式。 例如,欲僅允許範圍 100.100.0.0 到 100.100.255.255 的 IP 來存取 HTTPS 端點,規則看起來會像這樣:

<AccessControl name="Retricted">
    <Rule action="permit" description="Some" order="1" remoteSubnet="100.100.0.0/16"/>
    <Rule action="deny" description="None" order="2" remoteSubnet="0.0.0.0/0" />
</AccessControl>
<EndpointAcls>
    <EndpointAcl role="SplitMergeWeb" endPoint="HttpsIn" accessControl="Restricted" />
</EndpointAcls>

拒絕服務的預防

支援兩種不同機制來偵測並預防拒絕服務的攻擊:

  • 限制每個遠端主機的並行要求數(預設為關閉)
  • 限制每個遠端主機的存取率(預設為開啟)

這些是基於 IIS 中動態 IP 安全性中進一步記載的功能。 變更此設定時,請注意下列因素:

  • Proxy 和網路位址轉譯裝置透過遠端主機資訊的行為
  • Web 角色中任何資源的每項要求都會被列入考慮因素(例如,載入指令、影像等)

限制並行存取數

設定此行為的設定如下:

<Setting name="DynamicIpRestrictionDenyByConcurrentRequests" value="false" />
<Setting name="DynamicIpRestrictionMaxConcurrentRequests" value="20" />

將 DynamicIpRestrictionDenyByConcurrentRequests 變更為 true 以啟用此保護。

限制存取率

設定此行為的設定如下:

<Setting name="DynamicIpRestrictionDenyByRequestRate" value="true" />
<Setting name="DynamicIpRestrictionMaxRequests" value="100" />
<Setting name="DynamicIpRestrictionRequestIntervalInMilliseconds" value="2000" />

設定拒絕要求的回覆

下列設定會設定拒絕要求的回覆:

<Setting name="DynamicIpRestrictionDenyAction" value="AbortRequest" />

有關其他支援的值,請參閱 IIS 中動態 IP 安全性的文件。

設定服務憑證的操作

本主題僅供參考。 請遵循下列設定步驟:

  • 設定 TLS/SSL 憑證
  • 設定用戶端憑證

建立自我簽署憑證

執行:

makecert ^
  -n "CN=myservice.cloudapp.net" ^
  -e MM/DD/YYYY ^
  -r -cy end -sky exchange -eku "1.3.6.1.5.5.7.3.1" ^
  -a sha256 -len 2048 ^
  -sv MySSL.pvk MySSL.cer

欲自訂:

  • -n 具服務 URL。 支援萬用字元 ("CN=*.cloudapp.net") 和替代名稱 ("CN=myservice1.cloudapp.net, CN=myservice2.cloudapp.net")。
  • -e 具認證期間屆滿日 建立強密碼,並在出現提示時進行指定。

建立自我簽署 TLS/SSL 憑證的 PFX 檔案

執行:

pvk2pfx -pvk MySSL.pvk -spc MySSL.cer

輸入密碼,然後使用下列選項匯出憑證:

  • 是的,匯出私密金鑰
  • 匯出所有擴充屬性

從憑證存放區匯出 TLS/SSL 憑證

  • 尋找憑證
  • 點選 [動作]->所有工作->匯出…
  • 匯出憑證至具有下列選項的 PFX 檔案:
    • 是的,匯出私密金鑰
    • 請盡可能包括憑證路徑中的所有憑證 *匯出所有擴充屬性

將 TLS/SSL 憑證上傳至雲端服務

使用現有或產生的 .PFX 檔案和 TLS 金鑰組上傳憑證:

  • 輸入密碼保護保護私密金鑰

更新服務組態檔中的 TLS/SSL 憑證

使用上傳至雲端服務的憑證指紋,更新服務組態檔中下列設定的指紋值:

<Certificate name="SSL" thumbprint="" thumbprintAlgorithm="sha1" />

匯入 TLS/SSL 憑證授權單位

請遵循將與服務通訊的所有帳戶/機器中的下列步驟:

  • 在 Windows 檔案總管中按兩下 .CER 檔案
  • 在 [憑證] 對話方塊中,按一下 [安裝憑證]…
  • 將憑證匯入 [可信任的根憑證授權單位] 存放區

關閉用戶端憑證式驗證

僅支援用戶端憑證式驗證,以及將其停用會允許服務端點的公用存取,除非具備其他機制(例如 Microsoft Azure 虛擬網路)。

在服務組態檔中將這些設定變更為 false,以關閉此功能:

<Setting name="SetupWebAppForClientCertificates" value="false" />
<Setting name="SetupWebserverForClientCertificates" value="false" />

然後,複製與 CA 憑證設定中的 TLS/SSL 憑證相同的指紋:

<Certificate name="CA" thumbprint="" thumbprintAlgorithm="sha1" />

建立自我簽署憑證授權單位

執行下列步驟來建立自我簽署憑證,作為憑證授權單位:

makecert ^
-n "CN=MyCA" ^
-e MM/DD/YYYY ^
 -r -cy authority -h 1 ^
 -a sha256 -len 2048 ^
  -sr localmachine -ss my ^
  MyCA.cer

欲自訂

  • -e 具認證期間屆滿日

尋找 CA 公開金鑰

用戶端憑證必須由服務的受信任憑證授權單位發行。 尋找憑證授權單位的公開金鑰,該憑證授權單位發行的用戶端憑證將用於驗證,以便將其上傳至雲端服務。

如果無法使用具有公開金鑰的檔案,請從憑證存放區匯出:

  • 尋找憑證
    • 搜尋相同憑證授權單位所發行的用戶端憑證
  • 按兩下憑證。
  • 在 [憑證] 對話方塊中選取 [憑證路徑] 索引標籤。
  • 按兩下路徑中的 CA 項目。
  • 記下憑證屬性。
  • 關閉 [憑證] 對話方塊。
  • 尋找憑證
    • 搜尋上述的 CA。
  • 點選 [動作]->所有工作->匯出…
  • 將憑證匯出至具有下列選項的 .CER:
    • 否,請勿匯出私密金鑰
    • 請盡可能包括憑證路徑中的所有憑證。
    • 匯出所有擴充屬性。

將 CA 憑證上傳至雲端服務

使用現有或產生的 .PFX 檔案和 TLS 金鑰組上傳憑證。

更新服務組態檔的 CA 憑證

使用上傳至雲端服務的憑證指紋,更新服務組態檔中下列設定的指紋值:

<Certificate name="CA" thumbprint="" thumbprintAlgorithm="sha1" />

使用相同的指紋更新下列設定的值:

<Setting name="AdditionalTrustedRootCertificationAuthorities" value="" />

發行用戶端憑證

每個獲授權存取服務的個人都應有針對其獨佔用途發行的用戶端憑證,並應選擇自己的強式密碼來保護其私密金鑰。

下列步驟必須在產生並儲存自我簽署 CA 憑證的相同機器中執行:

makecert ^
  -n "CN=My ID" ^
  -e MM/DD/YYYY ^
  -cy end -sky exchange -eku "1.3.6.1.5.5.7.3.2" ^
  -a sha256 -len 2048 ^
  -in "MyCA" -ir localmachine -is my ^
  -sv MyID.pvk MyID.cer

自訂:

  • -n 具有將使用此憑證授權之用戶端的 ID
  • -e 具認證期間屆滿日
  • 此用戶端憑證具有唯一檔名的 MyID.pvk 和 MyID.cer

此命令會提示建立密碼,然後再使用一次。 請使用強式密碼。

建立用戶端憑證的 PFX 檔案

針對每個產生的用戶端憑證,執行:

pvk2pfx -pvk MyID.pvk -spc MyID.cer

自訂:

MyID.pvk and MyID.cer with the filename for the client certificate

輸入密碼,然後使用下列選項匯出憑證:

  • 是的,匯出私密金鑰
  • 匯出所有擴充屬性
  • 發行此憑證的個人應選擇匯出密碼

匯入用戶端憑證

每個發行用戶端憑證的個人,都應在將用來與服務通訊的機器中匯入金鑰組:

  • 在 Windows 檔案總管中按兩下 .PFX 檔案
  • 至少使用此選項將憑證匯入個人存放區:
    • 包括所有已確認的擴充屬性

複製用戶端憑證指紋

每個發行用戶端憑證的個人都必須遵循下列步驟,才能取得其憑證的指紋,這將會新增至服務組態檔:

  • 執行 certmgr.exe
  • 選取 [個人資料] 索引標籤
  • 按兩下用戶端憑證以用於驗證
  • 在開啟的 [憑證] 對話方塊中,選取 [詳細資料] 索引標籤
  • 確定 [顯示] 為全部顯示
  • 在清單中選取名為 [指紋] 的欄位
  • 複製指紋的值
    • 刪除第一個數字前不可見的 Unicode 字元
    • 刪除所有空格

在服務組態檔中設定允許的用戶端

使用允許存取服務的用戶端憑證,其以逗號分隔的指紋清單,來更新服務組態檔中以下設定的值:

<Setting name="AllowedClientCertificateThumbprints" value="" />

設定用戶端憑證撤銷檢查

預設設定不會向憑證授權單位檢查用戶端憑證撤銷狀態。 欲開啟檢查,如果憑證授權單位發行用戶端憑證支援此類檢查,請使用 X509RevocationMode 列舉中定義的其中一個值來變更下列設定:

<Setting name="ClientCertificateRevocationCheck" value="NoCheck" />

建立自我簽署加密憑證的 PFX 檔案

針對加密憑證,請執行:

pvk2pfx -pvk MyID.pvk -spc MyID.cer

自訂:

MyID.pvk and MyID.cer with the filename for the encryption certificate

輸入密碼,然後使用下列選項匯出憑證:

  • 是的,匯出私密金鑰
  • 匯出所有擴充屬性
  • 將憑證上傳至雲端服務時,您將需要密碼。

從憑證存放區匯出加密憑證

  • 尋找憑證
  • 點選 [動作]->所有工作->匯出…
  • 匯出憑證至具有下列選項的 PFX 檔案:
    • 是的,匯出私密金鑰
    • 如果可能的話,包含認證路徑中的所有憑證
  • 匯出所有擴充屬性

將加密憑證上傳至雲端服務

使用現有或產生的 .PFX 檔案和加密金鑰組上傳憑證:

  • 輸入密碼保護保護私密金鑰

更新服務組態檔的加密憑證

使用上傳至雲端服務的憑證指紋,更新服務組態檔中下列設定的指紋值:

<Certificate name="DataEncryptionPrimary" thumbprint="" thumbprintAlgorithm="sha1" />

常見憑證操作

  • 設定 TLS/SSL 憑證
  • 設定用戶端憑證

尋找憑證

執行下列步驟:

  1. 執行 mmc.exe。
  2. 檔案 -> 新增/移除嵌入式管理單元…
  3. 選取 [憑證]
  4. 按一下新增
  5. 選擇憑證存放區位置。
  6. 按一下完成
  7. 按一下 [確定]
  8. 展開 [憑證]
  9. 展開憑證存放區節點。
  10. 展開 [憑證子節點]。
  11. 選取清單中的憑證。

匯出憑證

在 [憑證匯出精靈]

  1. 按一下 [下一步] 。
  2. 選取 [是的],然後[匯出私密金鑰]
  3. 按一下 [下一步] 。
  4. 選取所需的輸出檔案格式。
  5. 檢查所需的選項。
  6. 檢查 密碼
  7. 輸入強式密碼並確認。
  8. 按一下 [下一步] 。
  9. 輸入或瀏覽要儲存憑證的檔案名稱(使用 .PFX 延伸項目)。
  10. 按一下 [下一步] 。
  11. 按一下 [完成] 。
  12. 按一下 [確定]

匯入憑證

在憑證匯入精靈:

  1. 選取儲存位置。

    • 如果只有目前使用者下執行的程序會存取服務,請選取 [目前使用者]
    • 如果這部電腦中的其他程序會存取服務,請選取 [本機機器]
  2. 按一下 [下一步] 。

  3. 如果從檔案匯入,請確認檔案路徑。

  4. 如果匯入 .PFX 檔案:

    1. 輸入密碼保護私密金鑰
    2. 選取匯入選項
  5. 選取下列存放區中的 [放入] 憑證

  6. 按一下 [瀏覽]

  7. 選取所需的存放區。

  8. 按一下完成

    • 如果選擇了受信任的根憑證授權單位存放區,請點擊 [是]
  9. 請點擊所有對話方塊視窗上的 [確定]。

上傳憑證

Azure 入口網站

  1. 選取 [雲端服務]
  2. 選取雲端服務。
  3. 在頂端功能表上,點擊 [憑證]
  4. 在末端列上,點擊 [上傳]
  5. 選取憑證檔案。
  6. 如果是 .PFX 檔案,請輸入私密金鑰的密碼。
  7. 完成後,請從清單中的新項目複製憑證指紋。

其他安全性考量

本文件中所述的 TLS 設定會在使用 HTTPS 端點時,對服務與其用戶端之間的通訊進行加密。 這很重要,因通訊中含有資料庫存取的認證和潛在的其他敏感性資訊。 但請注意,服務會在 Azure SQL 資料庫的資料庫(您為 Microsoft Azure 訂用帳戶的中繼資料儲存體所提供)的內部資料表中保存內部狀態(包括認證)。 此資料庫被定義為服務組態檔(.CSCFG 檔案)中下列設定的一部分:

<Setting name="ElasticScaleMetadata" value="Server=…" />

儲存在此資料庫中的認證會進行加密。 不過,最佳做法是確保服務部署的網頁和背景工作角色都會保持最新且安全,因為它們都能夠存取中繼資料資料庫,以及用於加密和解密儲存認證的憑證。

其他資源

尚未使用彈性資料庫工具? 請參閱使用者入門指南。 如有疑問,請在 SQL Database 的 Microsoft Q&A 問題頁面上與我們連絡。如有功能要求,請在 SQL Database 意見反應論壇中新增想法或投票支持現有的想法。