管理儲存體帳戶存取金鑰的生命週期

已完成

您建立儲存體帳戶時,Azure 會為該帳戶產生兩個 512 位元儲存體帳戶存取金鑰。 您可以透過共用金鑰授權,或透過共用金鑰簽署的 SAS 權杖,用這些金鑰授與儲存體帳戶資料的存取權。

Microsoft 建議您使用 Azure Key Vault 來管理存取金鑰,並定期輪替和重新產生金鑰。 使用 Azure Key Vault 可讓您輕鬆地輪替金鑰,而不會造成應用程式中斷。 您也可以手動輪替金鑰。

保護您的存取金鑰

儲存體帳戶存取金鑰提供儲存體帳戶設定以及資料的完整存取權。 請務必小心保護您的存取金鑰。 使用 Azure Key Vault,以安全的方式管理及輪替金鑰。 共用金鑰的存取權授與使用者對儲存體帳戶設定及其資料的完整存取權。 共用金鑰的存取權應謹慎地加以限制和監視。 在無法使用 Microsoft Entra ID 型授權的情況下,使用具有有限存取範圍的共用存取簽章 (SAS) 權杖。 避免將存取金鑰寫入程式碼,或將其以純文字儲存在他人可以存取的位置。 如果您認為金鑰可能已遭盜用,請輪替金鑰。

Microsoft 建議您盡可能使用 Microsoft Entra ID,授權對 Blob、佇列和資料表資料發出的要求,而不要使用帳戶金鑰 (共用金鑰授權)。 與共用金鑰授權相比,透過 Microsoft Entra ID 進行授權可提供更優越的安全性和易用性。 對於伺服器訊息區 (SMB) Azure 檔案共用,Microsoft 建議使用內部部署的 Active Directory Domain Services (AD DS) 整合或 Microsoft Entra Kerberos 驗證。

若要防止使用者使用共用金鑰存取儲存體帳戶中的資料,您可以禁止儲存體帳戶的共用金鑰授權。 作為安全性最佳做法,建議以最低許可權對資料進行細項存取。 Microsoft Entra ID 型授權應該用於支援 OAuth 的案例。 Kerberos 或 SMTP 應該用於透過 SMB 的 Azure 檔案儲存體。 針對透過 REST 的 Azure 檔案儲存體,可以使用 SAS 權杖。 如果不需要防止意外使用共用金鑰,則應停用共用金鑰存取。

若要使用 Microsoft Entra 條件式存取原則來保護 Azure 儲存體帳戶,您必須禁止儲存體帳戶的共用金鑰授權。

如果您已停用共用金鑰存取,而且您在診斷記錄中看到回報的共用金鑰授權,這表示信任的存取權正用來存取儲存體。

檢視帳戶存取金鑰

您可以使用 Azure 入口網站、PowerShell 或 Azure CLI 來檢視和複製帳戶存取金鑰。 Azure 入口網站也會提供儲存體帳戶的連接字串,方便您複製。

若要從 Azure 入口網站檢視並複製儲存體帳戶存取金鑰或連接字串:

  1. Azure 入口網站中,移至您的儲存體帳戶。

  2. 在 [安全性 + 網路] 下選取 [存取金鑰]。 您的帳戶存取金鑰隨即出現,此外也會顯示每個金鑰的完整連接字串。

  3. 選取 [顯示金鑰],以顯示您的存取金鑰和連接字串,並啟用按鈕來複製值。

  4. 在 [金鑰 1] 下方,尋找金鑰值。 選取 [複製] 按鈕以複製帳戶金鑰。

  5. 或者,您也可以複製整個連接字串。 在 key1下,尋找連接字串值。 選取 [複製] 按鈕以複製連接字串。

    顯示入口網站連接字串範例的螢幕擷取畫面。

您可以使用這兩個金鑰的其中之一來存取 Azure 儲存體,但一般而言,使用第一個金鑰並保留第二個金鑰以便在輪替時使用,這是適當的做法。

若要檢視或讀取帳戶的存取金鑰,使用者必須是服務管理員,或必須獲指派包含 Microsoft.Storage/storageAccounts/listkeys/action 的 Azure 角色。 包含此動作的部分 Azure 內建角色為擁有者參與者儲存體帳戶金鑰操作員服務角色。

使用 Azure Key Vault 來管理您的存取金鑰

Microsoft 建議使用 Azure Key Vault 來管理和輪替您的存取金鑰。 您的應用程式可以安全地存取 Key Vault 中的金鑰,所以您就不需要將金鑰儲存在應用程式的程式碼中。

手動輪替存取金鑰

Microsoft 建議您定期輪替存取金鑰,以協助保護您的儲存體帳戶安全無虞。 如果可以,請使用 Azure Key Vault 來管理您的存取金鑰。 如果您不是使用 Key Vault,則必須手動輪替金鑰。

由於指派兩個存取金鑰,因此您可以旋轉金鑰。 使用兩個金鑰可確保您的應用程式會在整個程序維持 Azure 儲存體的存取權。

重新產生存取金鑰會影響相依於儲存體帳戶金鑰的應用程式或 Azure 服務。 使用帳戶金鑰來存取儲存體帳戶的任何用戶端必須更新並使用新的金鑰,包括媒體服務、雲端、桌面和行動應用程式,以及 Azure 儲存體的圖形化使用者介面應用程式,例如 Azure 儲存體總管

此外變換或重新產生存取金鑰,會撤銷該金鑰產生的共用存取簽章(SAS)。 存取金鑰變換後,您必須重新產生帳戶和 服務 SAS 權杖,以免應用程式中斷。 請注意,使用者委派 SAS 權杖受 Microsoft Entra 認證保護,不會因金鑰變換而受到影響。

如果您打算手動輪替存取金鑰,Microsoft 建議您設定金鑰到期原則。

建立金鑰到期原則之後,您可以使用 Azure 原則來監視是否在建議的間隔內輪替儲存體帳戶的金鑰。

輪替您在 Azure 入口網站中的儲存體帳戶存取金鑰:

  1. 更新應用程式程式碼中的連接字串,以參考儲存體帳戶的次要存取金鑰。
  2. 在 Azure 入口網站中瀏覽至您的儲存體帳戶。
  3. 在 [安全性 + 網路] 下選取 [存取金鑰]
  4. 若要重新產生儲存體帳戶的主要存取金鑰,請選取主要存取金鑰旁的 [重新產生] 按鈕。
  5. 更新程式碼中的連接字串,以參考新的主要存取金鑰。
  6. 以同樣的方式重新產生次要存取金鑰。

警告

Microsoft 建議同一時間在您的所有應用程式中僅使用其中一個金鑰。 如果您在某些地方使用金鑰 1 並在其他地方使用金鑰 2,您就無法在沒有部分應用程式遺失存取的情況下輪換您的金鑰。

若要輪替帳戶的存取金鑰,使用者必須是服務管理員,或獲指派的 Azure 角色必須包含 Microsoft.Storage/storageAccounts/regeneratekey/action。 包含此動作的部分 Azure 內建角色為擁有者參與者儲存體帳戶金鑰操作員服務角色

建立金鑰到期原則

金鑰到期原則可讓您設定帳戶存取金鑰輪替提醒。 如果已達指定的間隔,而金鑰尚未輪替,則會顯示提醒。 建立金鑰到期原則之後,您可以監視儲存體帳戶的合規性,以確保帳戶存取金鑰會定期輪替。

若要在 Azure 入口網站中建立金鑰到期原則:

  1. Azure 入口網站中,移至您的儲存體帳戶。

  2. 在 [安全性 + 網路] 下選取 [存取金鑰]。 您的帳戶存取金鑰隨即出現,此外也會顯示每個金鑰的完整連接字串。

  3. 選取 [設定輪替提醒] 按鈕。 如果 [設定輪替提醒] 按鈕呈現灰色,您將需要輪替每個金鑰。 請遵循手動輪替存取金鑰中所述的步驟來輪替金鑰。

  4. 在 [設定提醒以輪替存取金鑰] 中,選取 [啟用金鑰輪替提醒] 核取方塊,並設定提醒的頻率。

  5. 選取 [儲存]。

    顯示如何設定輪替金鑰提醒的螢幕擷取畫面。

檢查金鑰到期原則違規

您可以使用 Azure 原則監視您的儲存體帳戶,以確保在建議的期間內輪替帳戶存取金鑰。 Azure 儲存體提供內建原則,以確保儲存體帳戶存取金鑰未過期。

指派資源範圍的內建原則

請遵循下列步驟,在 Azure 入口網站中將內建原則指派給適當範圍:

  1. 在 Azure 入口網站中,搜尋 [原則] 以顯示 Azure 原則儀表板。

  2. 在 [編寫] 區段中,選取 [指派]。

  3. 選擇 [指派原則]。

  4. 在 [指派原則] 頁面的 [基本] 索引標籤中,在 [範圍] 區段指定原則指派的範圍。 選取 [更多] 按鈕以選擇訂用帳戶和選用的資源群組。

  5. 在 [原則定義] 欄位中,選取 [更多] 按鈕,然後在 [搜尋] 欄位中輸入儲存體帳戶金鑰。 選取名為儲存體帳戶金鑰不應過期 (Storage account keys should not be expired) 的原則定義。

    螢幕擷取畫面顯示如何確保儲存體帳戶金鑰未過期的原則定義範例。

  6. 選取 [檢閱 + 建立],將原則定義指派給指定的範圍。

    顯示如何為資源範圍指派內建原則的螢幕擷取畫面。

使用金鑰到期原則監視合規性

若要監視您的儲存體帳戶是否符合金鑰到期原則,請遵循下列步驟:

  1. 在 Azure 原則儀表板上,找出您在原則指派中指定範圍適用的內建原則定義。 您可以在 [搜尋] 方塊中搜尋不應過期的儲存體帳戶金鑰,以篩選內建原則。

  2. 選取具有所需範圍的原則名稱。

  3. 在內建原則的 [原則指派] 頁面上,選取 [檢視合規性]。 指定訂用帳戶和資源群組中不符合原則需求的任何儲存體帳戶,都會顯示在合規性報告中。 若要讓儲存體帳戶符合規範,請輪替帳戶存取金鑰。

    顯示原則合規性報告入口網站的螢幕擷取畫面。