管理儲存體帳戶存取金鑰

您建立儲存體帳戶時,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 進行授權可提供更優越的安全性和易用性。 如需從應用程式使用 Microsoft Entra 授權的詳細資訊,請參閱如何使用 Azure 服務驗證 .NET 應用程式。 對於 SMB Azure 檔案共用,Microsoft 建議使用內部部署的 Active Directory 網域服務(AD DS)整合,或 Microsoft Entra Kerberos 驗證。

若要防止使用者使用共用金鑰,存取儲存體帳戶中的資料,您可以禁用儲存體帳戶的共用金鑰授權。 建議以所需的最低權限,對資料進行細微存取,這是安全性最佳做法。 Microsoft Entra ID 型授權應用於支援 OAuth 的情節。 Kerberos 或 SMTP 應該用於 SMB 上的 Azure 檔案儲存體。 REST 上的 Azure 檔案儲存體,可以使用 SAS 權杖。 如果不需要共用金鑰存取,應予以停用,以防誤用。 如需詳細資訊,請參閱防止 Azure 儲存體帳戶使用共用金鑰授權

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

如果您已停用共用金鑰存取,且在診斷記錄中看到報告的共用金鑰授權,這表示正在使用信任的存取權來存取儲存體。 如需詳細資訊,請參閱訂用帳戶中已註冊資源的信任存取權

檢視帳戶存取金鑰

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

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

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

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

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

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

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

    Screenshot showing how to view access keys in the Azure portal

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

若要檢視或讀取帳戶的存取金鑰,使用者必須是服務管理員,或獲指派的 Azure 角色必須包含 Microsoft.Storage/storageAccounts/listkeys/action。 包含此動作的 Azure 內建角色為擁有者參與者儲存體帳戶金鑰操作員服務角色。 如需服務管理員角色的詳細資訊,請參閱 Azure 角色、Microsoft Entra 角色和傳統訂用帳戶管理員角色。 如需 Azure 儲存體內建角色的詳細資訊,請參閱 Azure RBAC 的 Azure 內建角色中的儲存體一節。

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

Microsoft 建議使用 Azure Key Vault 來管理和輪替您的存取金鑰。 您的應用程式可以安全地存取 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 角色、Microsoft Entra 角色和傳統訂用帳戶管理員角色。 如需 Azure 儲存體的 Azure 內建角色的詳細資訊,請參閱 Azure RBAC 的 Azure 內建角色中的儲存體一節。

建立金鑰到期原則

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

注意

在您建立金鑰到期原則之前,您的每個帳戶存取金鑰可能需要至少輪替一次。

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

  1. Azure 入口網站中,移至您的儲存體帳戶。
  2. 在 [安全性 + 網路] 下選取 [存取金鑰]。 您的帳戶存取金鑰隨即出現,此外也會顯示每個金鑰的完整連接字串。
  3. 選取 [設定輪替提醒] 按鈕。 如果 [設定輪替提醒] 按鈕呈現灰色,您將需要輪替每個金鑰。 請遵循手動輪替存取金鑰中所述的步驟來輪替金鑰。
  4. 在 [設定輪替存取金鑰提醒] 中,選取 [啟用金鑰輪替提醒] 核取方塊,然後設定提醒的頻率。
  5. 選取 [儲存]。

Screenshot showing how to create a key expiration policy in the Azure portal

檢查金鑰到期原則違規

您可以使用 Azure 原則監視您的儲存體帳戶,以確保在建議的期間內輪替帳戶存取金鑰。 Azure 儲存體提供內建原則,以確保儲存體帳戶存取金鑰未過期。 如需內建原則的詳細資訊,請參閱內建原則定義的清單中的儲存體帳戶金鑰不應過期

指派資源範圍的內建原則

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

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

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

  3. 選擇 [指派原則]。

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

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

    Screenshot showing how to select the built-in policy to monitor key rotation intervals for your storage accounts

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

    Screenshot showing how to create the policy assignment

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

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

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

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

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

    Screenshot showing how to view the compliance report for the key expiration built-in policy

若要讓儲存體帳戶符合規範,請輪替帳戶存取金鑰。

下一步