pre-signed-url · L1

帶 access key ID 不帶 secret key

網址帶 access key ID,不帶 secret key

一句話:一組憑證分兩半——access key ID 是公開的「帳號」、secret access key 是機密的「密碼」。pre-signed URL 只把 access key ID 寫進網址,secret key 從頭到尾不外洩。

先破解一個常見的擔心

「簽章要用 secret key 算,那 secret key 是不是也被寫進網址、被大家看光了?」——不會。 這是初學者最容易誤會、也最該安心的一點。

憑證有兩半,只有一半能露

比喻:access key ID 像你的帳號名稱(可以告訴別人);secret key 像密碼(打死不能說)。簽名時你「用密碼證明是你」,但交出去的文件上只寫得到你的帳號名,不會印出密碼。

secret key 只在「算簽章那一瞬間」被用到

在 pre-signed URL 裡:

那 server 怎麼驗?

S3 收到請求,靠網址裡的 access key ID 查出自己這邊存的對應 secret key,用它重算一次簽章,跟網址帶來的 X-Amz-Signature 比對。兩邊都握有 secret key、各算一次、相等就放行——這就是 Level 0 的 HMAC 玩法:key 不用傳,各自算、比結果。

參考來源