本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用預先簽章的 URLs 下載和上傳物件
您可以使用預先簽章的 URLs 來授予 Amazon S3 中物件的時間限制存取,而無需更新儲存貯體政策。預先簽章的 URL 可以輸入瀏覽器中,或由程式用來下載物件。預先簽章的 URL 使用的憑證是產生 URL AWS 的使用者的憑證。
您也可以使用預先簽章的 URLs,讓某人將特定物件上傳到您的 Amazon S3 儲存貯體。這允許上傳,而無需另一方擁有 AWS 安全憑證或許可。如果具有相同索引鍵的物件已存在於預先簽章 URL 中指定的儲存貯體中,Amazon S3 會將現有物件取代為上傳的物件。
您可以多次使用預先簽章的 URL,直到過期日期和時間為止。
建立預先簽章的 URL 時,您必須提供安全憑證,然後指定下列項目:
-
Amazon S3 儲存貯體
-
物件金鑰 (如果下載,則此物件將位於 Amazon S3 儲存貯體中,如果上傳,則這是要上傳的檔案名稱)
-
HTTP 方法 (
GET
用於下載物件或PUT
上傳) -
到期時間間隔
目前,Amazon S3 預先簽章的 URLs 不支援使用下列資料完整性檢查總和演算法 (CRC32, CRC32C, SHA-1, SHA-256)。若要在上傳後驗證物件的完整性,您可以提供 MD5 使用預先簽章的 URL 上傳物件時摘要。如需有關物件完整性的詳細資訊,請參閱 檢查物件完整性。
誰可以建立預先簽章的 URL
具有有效安全憑證的任何人都可以建立預先簽章的 URL。但是,若要讓某人成功存取物件,預先簽章的 URL 必須由具有執行預先簽章 URL 所根據之操作許可的人員建立。
以下是可用來建立預先簽章 URL 的憑證類型:
-
IAM 執行個體設定檔 – 最長 6 小時有效。
-
AWS Security Token Service - 有效期在使用長期安全憑證簽署時最長為 36 小時,或為暫時憑證的持續時間 (以先到者為準)。
-
IAM 使用者 – 使用 AWS Signature 第 4 版時,有效期最長為 7 天。
若要建立最長 7 天的預先簽章 URL,請先將 IAM 使用者憑證 (存取金鑰和私密金鑰) 委派至您用來建立預先簽章 URL 的方法。
注意
如果您使用臨時憑證建立預先簽章的 URL,該 URL 會在憑證過期時過期。一般而言,預先簽章的 URL 會在您用來建立的憑證遭到撤銷、刪除或停用時過期。即使建立的 URL 具有較晚的過期時間,也是如此。如需暫時性安全憑證生命週期,請參閱 AWS STS API 使用者指南中的 ComparingWord 操作。 IAM
預先簽章 URLs 的過期時間
預先簽章的 URL 在產生 URL 時指定的時間內仍然有效。如果您使用 Amazon S3 主控台建立預先簽章的 URL,則過期時間可以設定為 1 分鐘到 12 小時。如果您使用 AWS CLI or AWS SDKs,過期時間可設定為最多 7 天。
如果您使用臨時權杖建立預先簽章的 URL,則該 URL 會在權杖過期時過期。一般而言,預先簽章的 URL 會在您用來建立的憑證遭到撤銷、刪除或停用時過期。即使建立的 URL 具有較晚的過期時間,也是如此。如需有關您使用的認證如何影響到期時間的詳細資訊,請參閱 誰可以建立預先簽章的 URL。
Amazon S3 會在 URL 請求時檢查已簽署 HTTP 的到期日期和時間。例如,如果用戶端在到期前一刻才開始下載大型檔案,則即使在下載期間過期了,下載也會繼續。然而,如果連線中斷並且用戶端在到期時間過後嘗試重新啟動下載,則下載會失敗。
限制預先簽章的 URL 功能
預先簽章的 URL 功能受到建立 Word 的使用者許可限制。本質上,預先簽章的 URLs 是承載權杖,可授予擁有權杖的人員存取權。因此,我們建議您妥善保護它們。以下是您可以用來限制使用預先簽章 URLs 的一些方法。
AWS Signature 第 4 版 (SigV4)
若要在使用 AWS Signature 第 4 版 (SigV4) 驗證預先簽章的 URL 請求時強制執行特定行為,您可以在儲存貯體政策和存取點政策中使用條件金鑰。例如,下列儲存貯體政策使用 s3:signatureAge
條件來拒絕 中物件的任何 Amazon S3 預先簽章的 URL 請求 amzn-s3-demo-bucket
如果簽章超過 10 分鐘,則為 儲存貯體。若要使用此範例,請取代
使用您自己的資訊。使用者輸入預留位置
{ "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-bucket
/*", "Condition": { "NumericGreaterThan": { "s3:signatureAge":600000
} } } ] }
如需政策金鑰相關 AWS Signature 第 4 版的詳細資訊,請參閱 AWS Amazon Simple Storage Service Word 參考中的 Signature 第 4 版驗證。 API
網路路徑限制
如果您想要限制對特定網路路徑使用預先簽章的 URLs 和所有 Amazon S3 存取,您可以寫入 AWS Identity and Access Management (IAM) 政策。您可以在進行呼叫的 IAM 主體、Amazon S3 儲存貯體或兩者上設定這些政策。
IAM 主體的網路路徑限制需要這些憑證的使用者從指定的網路提出請求。儲存貯體或存取點上的限制要求所有對該資源的請求都來自指定網路。這些限制也適用於預先簽章的 URL 案例之外。
您使用的 IAM 全域條件索引鍵取決於端點的類型。如果您正在使用 Amazon S3 的公有端點,請使用 aws:SourceIp
。如果您將虛擬私有雲端 (VPC) 端點用於 Amazon S3,請使用 aws:SourceVpc
或 aws:SourceVpce
。
下列 IAM 政策陳述式要求主體 AWS 只能從指定的網路範圍存取 。由於此政策聲明,所有存取均必須源自該範圍。這包括使用 Amazon S3 預先簽章 URL 的人的情況。若要使用此範例,請取代
使用您自己的資訊。使用者輸入預留位置
{ "Sid": "NetworkRestrictionForIAMPrincipal", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NotIpAddressIfExists": {"aws:SourceIp": "
IP-address-range
"}, "BoolIfExists": {"aws:ViaAWSService": "false"} } }