設定共用存取簽章的到期原則

您可以使用共用存取簽章 (SAS),將存取權委派給 Azure 儲存體帳戶中的資源。 SAS 權杖包含目標資源、授與的權限,以及允取存取的間隔。 建議的最佳做法是限制 SAS 的間隔,以防止遭到入侵。 透過設定儲存體帳戶的 SAS 到期原則,您可以在使用者建立服務 SAS 或帳戶 SAS 時,提供建議的到期上限。

如需共用存取簽章的詳細資訊,請參閱使用共用存取簽章 (SAS) 授與 Azure 儲存體資源的有限存取權

關於 SAS 到期原則

您可以設定儲存體帳戶的 SAS 到期原則。 針對服務 SAS 或帳戶 SAS 上已簽署的到期欄位,SAS 到期原則會指定建議的上限。 建議的上限會指定作為日期/時間值,該值是天數、時數、分鐘數和秒數的合併數值。

SAS 有效間隔的計算方式為 [已簽署到期] 欄位的日期/時間值減去 [已簽署開始] 欄位的日期/時間值。 如果產生的值小於或等於建議的上限,則 SAS 符合 SAS 到期原則。

在您設定 SAS 到期原則之後,任何使用者若建立間隔超過建議上限的服務 SAS 或帳戶 SAS,則將會看到警告。

SAS 到期原則不會防止使用者建立到期超過原則所建議限制的 SAS。 當使用者建立違反原則的 SAS 時,其會看到警告以及建議的間隔上限。 如果您已使用 Azure 監視器設定記錄的診斷設定,則每當使用者「使用」建議間隔後到期的 SAS 時,Azure 儲存體就會將訊息寫入至記錄中的 SasExpiryStatus 屬性。 此訊息表示 SAS 的有效間隔超過建議的間隔。

當儲存體帳戶的 SAS 到期原則生效時,每個 SAS 皆需要已簽署開始欄位。 如果已簽署開始欄位未包含在 SAS 中,且您已使用 Azure 監視器設定記錄的診斷設定,則每當使用者「使用」沒有已簽署開始欄位值的 SAS 時,Azure 儲存體就會將訊息寫入至記錄中的 SasExpiryStatus 屬性。

設定 SAS 到期原則

當您設定儲存體帳戶的 SAS 到期原則時,此原則會套用至每個以帳戶金鑰簽署的 SAS 類型。 以帳戶金鑰簽署的共用存取簽章類型是服務 SAS 和帳戶 SAS。

我需要先輪替帳戶存取金鑰嗎?

在您設定 SAS 到期原則之前,您的每個帳戶存取金鑰可能需要至少輪替一次。 如果儲存體帳戶的 keyCreationTime 屬性具有任一帳戶存取金鑰 (key1 和 key2) 的 null 值,則必須輪替這些金鑰。 若要判斷 keyCreationTime 屬性是否為 null,請參閱取得儲存體帳戶存取金鑰的建立時間。 如果您嘗試設定 SAS 到期原則,且金鑰必須先進行輪替,則作業會失敗。

如何設定 SAS 到期原則

您可以使用 Azure 入口網站、PowerShell 或 Azure CLI,設定 SAS 到期原則。

若要在 Azure 入口網站中設定 SAS 到期原則,請遵循下列步驟:

  1. 瀏覽至您的儲存體帳戶。

  2. 在 [設定] 底下,選取 [設定]

  3. 找出 [允許共用存取簽章 (SAS) 到期間隔的建議上限] 設定,並將其設定為「已啟用」。

    注意

    如果設定呈現灰色,且您看到下圖中顯示的訊息,則您必須輪替這兩個帳戶存取金鑰,然後才能設定 SAS 到期間隔的建議上限值:

    Screenshot showing the option to configure a SAS expiration policy is grayed out in the Azure portal.

  4. 針對在此儲存體帳戶中資源上建立的任何新共用存取簽章,指定低於 SAS 到期間隔建議上限的時間值。

    Screenshot showing how to configure a SAS expiration policy in the Azure portal.

  5. 選取儲存以儲存變更。

原則違規的查詢記錄

若要記錄在 SAS 使用時有效間隔比 SAS 到期原則建議較長的情況,請先建立診斷設定以將記錄傳送至 Azure Log Analytics 工作區。 如需詳細資訊,請參閱將記錄傳送至 Azure Log Analytics

接著,使用 Azure 監視器記錄查詢來監視是否違反規則。 在您的 Log Analytics 工作區中建立新的查詢,新增下列查詢文字,然後按下 [執行]。

StorageBlobLogs 
| where SasExpiryStatus startswith "Policy violated"
| summarize count() by AccountName, SasExpiryStatus

使用內建原則來監視合規性

您可以使用 Azure 原則監視您的儲存體帳戶,確保訂用帳戶中的儲存體帳戶已設定 SAS 到期原則。 Azure 儲存體提供內建原則,用於確保帳戶已進行此設定。 如需內建原則的詳細資訊,請參閱內建原則定義清單中的儲存體帳戶應已設定共用存取簽章 (SAS) 原則 (Storage accounts should have shared access signature (SAS) policies configured)。

指派資源範圍的內建原則

請遵循下列步驟,在 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 validity intervals for shared access signatures for your storage accounts

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

    Screenshot showing how to create the policy assignment

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

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

  1. 在 Azure 原則儀表板上,找出您在原則指派中指定範圍適用的內建原則定義。 您可以在 [搜尋] 方塊中搜尋 Storage accounts should have shared access signature (SAS) policies configured,以篩選內建原則。

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

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

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

若要讓儲存體帳戶符合規範,請設定該帳戶的 SAS 到期原則,如設定 SAS 到期原則所述。

另請參閱