如果加速網域名稱的來源站點是阿里雲Object Storage Service,並且OSS的Bucket為私人模式(可以起到訪問鑒權的作用,避免非授權的請求盜刷流量),建議您給加速網域名稱開啟OSS私人Bucket回源功能,通過CDN加速OSS私人Bucket資源。
工作原理與優勢
工作原理:功能開啟後,CDN向您的私人OSS Bucket發起回源請求時,會自動在要求標頭(Header)中添加一個
Authorization欄位。該欄位的值是根據您授權的身份資訊(STS臨時令牌或AccessKey)產生的有效簽名,OSS服務會據此對請求進行鑒權。安全訪問:通過為CDN授予一個受限的唯讀許可權,確保了回源請求的合法性,避免了將私人Bucket設定為公開所帶來的安全風險。
成本最佳化:終端使用者訪問將命中CDN緩衝,其流量費用遠低於直接存取OSS產生的外網流出流量。同時,CDN回源到OSS的流量會計為CDN回源流量,其單價也低於OSS外網流出流量單價,有效降低總體成本。具體請參見CDN加速OSS計費說明
操作步驟
配置過程分為兩步:首先為您的帳號完成一次性授權,然後為指定的加速網域名稱開啟該功能。
授權CDN訪問OSS。在首次為帳號下網域名稱配置該功能前,您必須先為CDN服務授予訪問OSS的許可權,此為帳號層級的一次性操作。如果您沒有出現授權提示,則直接跳過該步驟。
(推薦)通過控制台一鍵授權
登入CDN控制台。
在左側導覽列,單擊域名管理。
在域名管理頁面,單擊目標網域名稱對應的管理。
在指定網域名稱的左側導覽列,單擊回源配置。
在私有Bucket回源地區,單擊点击授权,在授權確認頁中單擊確認授權。

(備用方案)通過RAM手動授權
登入RAM控制台。
在左側導覽列,單擊許可權管理> 權限原則。
在權限原則頁面,單擊建立權限原則。
在指令碼編輯頁簽,輸入以下策略內容。
單擊確定,在建立權限原則頁面輸入以下資訊之後單擊確定。
策略名稱稱:AliyunCDNAccessingPrivateOSSRolePolicy
備忘:用於CDN/DCDN回源私人OSS Bucket角色的授權策略,包含OSS的唯讀許可權。
{ "Version": "1", "Statement": [ { "Action": [ "oss:List*", "oss:Get*" ], "Resource": "*", "Effect": "Allow" } ] }在左側導覽列,單擊身份管理> 角色。
在角色頁面,單擊建立角色。
將信任主體類型設定為雲帳號,信任主體名稱選擇當前雲帳號,單擊確定。
在建立角色階段,輸入以下資訊。
角色名稱:AliyunCDNAccessingPrivateOSSRole
角色建立完成之後,在角色頁面列表中單擊AliyunCDNAccessingPrivateOSSRole,進入角色編輯頁面。
在信任策略頁簽,單擊編輯信任策略,輸入以下資訊之後單擊確定。
切換到許可權管理頁簽,在授權頁簽中,單擊新增授權。
資源範圍:帳號層級
授權主體:選擇之前建立的AliyunCDNAccessingPrivateOSSRole
權限原則:選擇自定義策略,選擇之前建立的AliyunCDNAccessingPrivateOSSRolePolicy,單擊確認新增授權。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "cdn.aliyuncs.com" ] } } ], "Version": "1" }確認新增授權之後,回到CDN控制台的回源配置頁面,可以看到私有Bucket回源功能已經完成授權,
開啟私有Bucket回源並配置回源類型。
找到私有Bucket回源地區,開啟其開關。
在彈出的私有Bucket回源對話方塊中,選擇回源類型,單擊确定。

回源類型
推薦情境與說明
同帳號回源
(推薦) 適用於CDN和OSS Bucket在同一個阿里雲帳號下的情境。系統將自動使用STS臨時安全性權杖進行鑒權,配置簡單,無需管理密鑰,安全性更高。
跨帳號回源或同帳號回源
適用於CDN和OSS Bucket分屬不同阿里雲帳號的情境,也支援同帳號。此方式需要您手動提供回源目標OSS私人Bucket所屬阿里雲帳號的AccessKey ID和AccessKey Secret。具體請參見建立AccessKey。
說明存取範圍說明:開啟後,該加速網域名稱將可以訪問其來源站點私人Bucket內的所有資源,無法在CDN側對Bucket內的部分資源做訪問限制。
簽名衝突說明:為避免OSS鑒權失敗,請確保回源請求的URL參數中不攜帶簽名資訊。單個請求不能同時在Header和URL中攜帶簽名。
功能衝突說明:本功能與OSS的靜態網站託管功能的預設首頁配置存在衝突。如需同時使用,請參考說明文檔。
安全強化建議
開啟私人Bucket回源後,您的來源站點資料是安全的,但緩衝在CDN邊緣節點上的資源預設是公開訪問的。為防止CDN流量被盜刷,強烈建議您結合使用CDN提供的其他安全功能:
配置Referer黑/白名單:限制只有特定來源網站的請求才能訪問您的CDN資源。
配置URL鑒權:為您的資源URL設定動態簽名和到期時間,有效抵禦惡意下載。
關閉OSS私人Bucket回源
如果您不希望加速網域名稱能夠訪問您同帳號下的私人Bucket內資源,您可以通過存取控制RAM(Resource Access Management)控制台,取消對應角色名稱的授權,關閉CDN回源OSS私人Bucket的許可權。
在CDN控制台關閉該功能。
登入CDN控制台。
在左側導覽列,單擊域名管理。
在域名管理頁面,單擊目標網域名稱對應的管理。
在指定網域名稱的左側導覽列,單擊回源配置。
在私有Bucket回源地區,關閉私有Bucket回源開關。
在RAM控制台徹底刪除授權。
登入RAM控制台。
在左側導覽列,單擊。
在角色名稱列表下,單擊AliyunCDNAccessingPrivateOSSRole角色。

移除角色AliyunCDNAccessingPrivateOSSRole中的所有許可權。
單擊許可權對應的解除授權。
在移除許可權的確認對話方塊中,單擊解除授權。
返回頁面,刪除AliyunCDNAccessingPrivateOSSRole角色。
單擊AliyunCDNAccessingPrivateOSSRole角色對應的刪除角色。
在刪除角色的確認對話方塊中,單擊刪除角色。
返回頁面,刪除AliyunCDNAccessingPrivateOSSRolePolicy策略。
單擊AliyunCDNAccessingPrivateOSSRolePolic策略對應的刪除權限原則按鈕。
在刪除權限原則的確認對話方塊中,輸入策略名稱稱,單擊刪除權限原則。
常見問題
CDN訪問OSS資源提示This request is forbidden by kms.錯誤如何解決?
如果您的OSS Bucket中使用了Key Management Service(Key Management Service)進行加密,您需要為CDN的回源角色額外授予使用KMS密鑰的許可權,否則CDN將無法解密和訪問這些檔案,出現This request is forbidden by kms.報錯。
