使用預先簽署 URLs - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用預先簽署 URLs

您可以使用預先簽署URLs授與 Amazon S3 中物件的限時存取權,而無需更新儲存貯體政策。預先簽署URL可以在瀏覽器中輸入,也可以由程式用來下載物件。預先簽署所使用的認證URL是產生的使用 AWS 者的認證。URL

您也可以使用預先簽署URLs來允許某人將特定物件上傳到您的 Amazon S3 儲存貯體。這允許上傳,而不需要另一方擁有 AWS 安全認證或權限。如果具有相同金鑰的物件已存在於預先簽署中指定的儲存貯體中URL,Amazon S3 會以上傳的物件取代現有物件。

您可以URL多次使用預先簽署,直到到期日期和時間為止。

建立預先簽署時URL,您必須提供安全認證,然後指定下列項目:

  • Amazon S3 儲存貯體

  • 物件金鑰 (如果下載,則此物件將位於 Amazon S3 儲存貯體中,如果上傳,則這是要上傳的檔案名稱)

  • 一HTTP種方法(GET用於下載對象或PUT上載)

  • 到期時間間隔

目前,Amazon S3 預先簽署URLs不支援在上傳物件時使用下列資料完整性檢查和演算法 (CRC32CRC32CSHA-1、、、SHA-256)。若要在上傳物件之後驗證物件的完整性,您可以在上傳含有預先簽署URL的物件時提供物件MD5摘要。如需有關物件完整性的詳細資訊,請參閱 檢查物件完整性

誰可以建立預先簽署 URL

任何擁有有效安全認證的人都可以建立預先簽署URL。但URL是,若要讓某人成功存取物件,預先簽署的人URL必須由具有執行預先簽署作業之權限的人員建立。

以下是可用來建立預先簽署URL的認證類型:

  • IAM執行個體設定檔 — 有效期長達 6 小時。

  • AWS Security Token Service - 有效期在使用長期安全憑證簽署時最長為 36 小時,或為暫時憑證的持續時間 (以先到者為準)。

  • IAM使用 — 當您使用 AWS 簽名版本 4 時,有效期最長為 7 天。

    若要建立有效期最多 7 天URL的預先簽署,請先將使用IAM者認證 (存取金鑰和秘密金鑰) 委派給您用來建立預URL先簽署的方法。

注意

如果您URL使用暫時認證建立預先簽署,則認證URL到期時會過期。一般而言,當您用來建立預先簽署的認證被撤銷、刪除或停用時,就URL會到期。即使以較後的URL到期時間建立,也是如此。如需臨時安全登入資料的存留期,請參閱IAM使用指南中的比較 AWS STS API作業

預先簽署的到期時間 URLs

預先簽署URL在產生時指定的期間內仍然有效。URL如果您URL使用 Amazon S3 主控台建立預先簽署,到期時間可設定在 1 分鐘到 12 小時之間。如果您使用 AWS CLI 或 AWS SDKs,則到期時間可以設定為最高 7 天。

如果您使用臨時令牌創建了預先簽名URL,則該令牌URL到期時過期。一般而言,當您用來建立預先簽署的認證被撤銷、刪除或停用時,就URL會到期。即使以較後的URL到期時間建立,也是如此。如需有關您使用的認證如何影響到期時間的詳細資訊,請參閱 誰可以建立預先簽署 URL

Amazon S3 會檢查HTTP請求時已簽署URL的到期日期和時間。例如,如果用戶端在到期前一刻才開始下載大型檔案,則即使在下載期間過期了,下載也會繼續。然而,如果連線中斷並且用戶端在到期時間過後嘗試重新啟動下載,則下載會失敗。

限制預先簽署URL的功能

預先簽署URL的功能受到建立它的使用者權限的限制。從本質上講,預先簽名URLs是承載令牌,可以授予擁有它們的人的訪問權限。因此,我們建議您妥善保護它們。以下是您可以用來限制使用預先簽名URLs的一些方法。

AWS 簽名版本 4

若要在使用簽 AWS 章版本 4 (Sigv4) 驗證預先簽署的URL要求時強制執行特定行為,您可以在儲存貯體原則和存取點原則中使用條件金鑰。例如,如果簽章超過 10 分鐘,下列儲存貯體政策會使用s3:signatureAge條件拒絕儲存amzn-s3-demo-bucket1貯體中物件的任何 Amazon S3 預先簽署URL請求。若要使用此範例,請取代 使用者輸入預留位置 使用您自己的信息。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Deny a presigned URL request if the signature is more than 10 min old", "Effect": "Deny", "Principal": {"AWS":"*"}, "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*", "Condition": { "NumericGreaterThan": { "s3:signatureAge": 600000 } } } ] }

如需政策金鑰相關 AWS 簽章版本 4 的詳細資訊,請參閱 Amazon 簡單儲存服務API參考中的AWS 簽章版本 4 身份驗證

網路路徑限制

如果您想要限制使用預先簽署URLs和所有 Amazon S3 存取特定網路路徑,您可以寫入 AWS Identity and Access Management (IAM) 政策。您可以針對進行呼叫的IAM主體、Amazon S3 儲存貯體或兩者設定這些政策。

IAM主體的網路路徑限制會要求這些認證的使用者從指定的網路發出要求。儲存貯體或存取點上的限制要求所有對該資源的請求都來自指定網路。這些限制也適用於預先簽署的URL案例之外。

您使用的IAM全域條件金鑰取決於端點類型。如果您正在使用 Amazon S3 的公有端點,請使用 aws:SourceIp。如果您使用 Amazon S3 的虛擬私有雲端 (VPC) 端點,請使用aws:SourceVpcaws:SourceVpce.

下列IAM原則陳述式要求主體 AWS 只能從指定的網路範圍存取。由於此政策聲明,所有存取均必須源自該範圍。這包括使用 Amazon S3 預先簽署的人員的案URL例。若要使用此範例,請取代 使用者輸入預留位置 使用您自己的信息。

{ "Sid": "NetworkRestrictionForIAMPrincipal", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NotIpAddressIfExists": {"aws:SourceIp": "IP-address-range"}, "BoolIfExists": {"aws:ViaAWSService": "false"} } }