

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

# 使用適用於 S3 on OutOutposts 的預先簽章 URL
<a name="S3OutpostsPresignedURL"></a>

若要授予對存放在本機 Outpost 上物件的有限時間存取權限，而不會更新儲存貯體政策，您可以使用預先簽章 URL。使用預先簽章 URL，身為儲存貯體擁有者的您可以與虛擬私有雲端 (VPC) 中的個人共享物件，或授予他們上傳或刪除物件的能力。

當您使用 AWS SDKs或 AWS Command Line Interface (AWS CLI) 建立預先簽章的 URL 時，您可以將 URL 與特定動作建立關聯。您也可以選擇自訂到期時間 (最低 1 秒，最高 7 天) 來授予預先簽章 URL 有限時間的存取權。當您共用預先簽章 URL 時，VPC 中的個人可以執行嵌入 URL 中的動作，如同原始簽章使用者一樣。當 URL 到達到期時間時，該 URL 就會過期且再也無法運作。

## 限制預先簽章的 URL 功能
<a name="S3OutpostsPresignedUrlUploadObjectLimitCapabilities"></a>

預先簽章的 URL 的功能，受到建立它的使用者許可所限制。實質上，預先簽章的 URL 是一種承載符記，可為擁有這些網址的客戶授與存取權。因此，我們建議您妥善保護它們。

**AWS Signature 第 4 版 (SigV4)**  
若要在使用 AWS Signature 第 4 版 (SigV4) 驗證預先簽章的 URL 請求時強制執行特定行為，您可以在儲存貯體政策和存取點政策中使用條件金鑰。例如，您可以建立儲存貯體政策，使用 `s3-outposts:signatureAge` 條件來拒絕任何 `example-outpost-bucket` 儲存貯體中物件上的 Amazon S3 on Outposts 預先簽章 URL 請求 (如果簽章超過 10 分鐘)。若要使用此範例，請以您自己的資訊取代 *`user input placeholders`*。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Deny a presigned URL request if the signature is more than 10 minutes old",
            "Effect": "Deny",
            "Principal": {"AWS":"444455556666"},
            "Action": "s3-outposts:*",
            "Resource": "arn:aws:s3-outposts:us-east-1:111122223333:outpost/op-01ac5d28a6a232904/bucket/example-outpost-bucket/object/*",
            "Condition": {
                "NumericGreaterThan": {"s3-outposts:signatureAge": 600000},
                "StringEquals": {"s3-outposts:authType": "REST-QUERY-STRING"}
            }
        }
    ]
}
```

------

如需取得可用來強制執行特定行為 (在使用第 4 版簽署程序驗證預先簽章的 URL 請求時) 的條件金鑰和其他政策範例清單，請參閱 [AWS Signature 第 4 版 (SigV4) 身分驗證特定政策金鑰](s3-outposts-bucket-policy-s3-sigv4-conditions.md)。

**網路路徑限制**  
如果您想要限制使用預先簽章 URL 和對特定網路路徑的所有 S3 on Outposts 存取權，您可以撰寫需要特定網路路徑的政策。若要對進行呼叫的 IAM 主體設定限制，您可以使用身分型 AWS Identity and Access Management (IAM) 政策 （例如使用者、群組或角色政策）。若要在 S3 on Outposts 資源上設定的限制，您可以使以資源型政策 (例如儲存貯體和存取點政策)。

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

您使用的 IAM 全域條件取決於端點類型。如果您正在使用 S3 on Outposts 的公有端點，請使用 `aws:SourceIp`。如果您正在使用 S3 on Outposts 的 VPC 端點，請使用 `aws:SourceVpc` 或 `aws:SourceVpce`。

下列 IAM 政策陳述式要求委託人 AWS 只能從指定的網路範圍存取 。由於此政策聲明，所有存取均必須源自該範圍。這包含某人使用 S3 on Outposts 預先簽章 URL 的情況。若要使用此範例，請以您自己的資訊取代 *`user input placeholders`*。

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

如需使用 `aws:SourceIP` AWS 全域條件金鑰將對 S3 on Outposts 儲存貯體的存取限制在特定網路範圍的範例儲存貯體政策，請參閱 [使用 S3 on Outposts 設定 IAM](S3OutpostsIAM.md)。

## 誰可以建立預先簽章的 URL
<a name="S3Outpostswho-presigned-url"></a>

任何具備有效安全憑證的使用者，均可建立預先簽章的 URL。但為了讓 VPC 中的使用者能順利存取物件，預先簽章的 URL 必須由有權執行預先簽章的 URL 做為基礎之操作的人員來建立。

您可以使用下列憑證來建立預先簽章 URL：
+ **IAM 執行個體設定檔** - 有效期限最長 6 小時。
+ **AWS Security Token Service** - 以 AWS 帳戶 根使用者或 IAM 使用者憑證等永久憑證簽章時，有效期限最長 36 小時。
+ **IAM 使用者** – 當您使用 AWS Signature 第 4 版時，有效期最長為 7 天。

  若要建立有效期限最長 7 天的預先簽章 URL，請先將 IAM 使用者憑證 (存取金鑰和私密金鑰) 委派給您在使用的 SDK。然後，使用 AWS Signature 第 4 版產生預先簽章的 URL。

**注意**  
如果使用暫時字符建立了預先簽章的 URL，則 URL 會在字符過期時過期，即使您使用較晚的過期時間建立 URL 亦然。
由於預先簽章 URL 會將 S3 on Outposts 儲存貯體的存取權授予擁有 URL 的任何人，因此我們建議您妥善保護這些 URL。如需保護預先簽章的 URL 的詳細資訊，請參閱[限制預先簽章的 URL 功能](#S3OutpostsPresignedUrlUploadObjectLimitCapabilities)。

## S3 on Outposts 何時檢查預先簽章的 URL 中的到期日期和時間？
<a name="S3Outpostspresigned-url-when-checked"></a>

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

如需使用預先簽章 URL 來共享或上傳物件的詳細資訊，請參閱下列主題。

**Topics**
+ [限制預先簽章的 URL 功能](#S3OutpostsPresignedUrlUploadObjectLimitCapabilities)
+ [誰可以建立預先簽章的 URL](#S3Outpostswho-presigned-url)
+ [S3 on Outposts 何時檢查預先簽章的 URL 中的到期日期和時間？](#S3Outpostspresigned-url-when-checked)
+ [使用預先簽章的 URL 來共用物件](S3OutpostsShareObjectPresignedURL.md)
+ [產生預先簽章 URL 以將物件上傳至 S3 on Outposts 儲存貯體](S3OutpostsPresignedUrlUploadObject.md)