OSS私有Bucket回源

更新时间:
复制为 MD 格式

如果加速域名的源站是阿里云对象存储OSS,并且OSSBucket为私有模式(可以起到访问鉴权的作用,避免非授权的请求盗刷流量),建议您给加速域名开启OSS私有Bucket回源功能,通过CDN加速OSS私有Bucket资源。

工作原理与优势

  • 工作原理:功能开启后,CDN向您的私有OSS Bucket发起回源请求时,会自动在请求头(Header)中添加一个Authorization字段。该字段的值是根据您授权的身份信息(STS临时令牌或AccessKey)生成的有效签名,OSS服务会据此对请求进行鉴权。

  • 安全访问:通过为CDN授予一个受限的只读权限,确保了回源请求的合法性,避免了将私有Bucket设置为公开所带来的安全风险。

  • 成本优化:终端用户访问将命中CDN缓存,其流量费用远低于直接访问OSS产生的外网流出流量。同时,CDN回源到OSS的流量会计为CDN回源流量,其单价也低于OSS外网流出流量单价,有效降低总体成本。具体请参见CDN加速OSS计费说明

操作步骤

配置过程分为两步:首先为您的账号完成一次性授权,然后为指定的加速域名开启该功能。

  1. 授权CDN访问OSS。在首次为账号下域名配置该功能前,您必须先为CDN服务授予访问OSS的权限,此为账号级别的一次性操作。如果您没有出现授权提示,则直接跳过该步骤。

    (推荐)通过控制台一键授权

    1. 登录CDN控制台

    2. 在左侧导航栏,单击域名管理

    3. 域名管理页面,单击目标域名对应的管理

    4. 在指定域名的左侧导航栏,单击回源配置

    5. 阿里云OSS私有Bucket回源区域,单击点击授权,在授权确认页中单击确认授权

      image

    (备用方案)通过RAM手动授权

    1. 登录RAM控制台

    2. 在左侧导航栏,单击权限管理权限策略

    3. 权限策略页面,单击创建权限策略

    4. 脚本编辑页签,输入以下策略内容。

    5. {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "oss:List*",
                      "oss:Get*"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              }
          ]
      }
    6. 单击确定,在创建权限策略页面输入以下信息之后单击确定

    7. 策略名称:AliyunCDNAccessingPrivateOSSRolePolicy

    8. 备注:用于CDN/DCDN回源私有OSS Bucket角色的授权策略,包含OSS的只读权限。

    在左侧导航栏,单击身份管理角色

    1. 角色页面,单击创建角色

    2. 信任主体类型设置为云账号信任主体名称选择当前云账号,单击确定

    3. 创建角色阶段,输入以下信息

    4. 角色名称:AliyunCDNAccessingPrivateOSSRole

    角色创建完成之后,在角色页面列表中单击AliyunCDNAccessingPrivateOSSRole,进入角色编辑页面。

    1. 信任策略页签,单击编辑信任策略,输入以下信息之后单击确定

    2. {
        "Statement": [
          {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
              "Service": [
                "cdn.aliyuncs.com"
              ]
            }
          }
        ],
        "Version": "1"
      }
    3. 切换到权限管理页签,在授权页签中,单击新增授权

    4. 资源范围:账号级别

    5. 授权主体:选择之前创建的AliyunCDNAccessingPrivateOSSRole

    6. 权限策略:选择定义策略,选择之前创建的AliyunCDNAccessingPrivateOSSRolePolicy,单击确认新增授权

    确认新增授权之后,回到CDN控制台的回源配置页面,可以看到阿里云OSS私有Bucket回源功能已经完成授权,

  2. 开启阿里云OSS私有Bucket回源并配置回源类型。

    1. 找到阿里云OSS私有Bucket回源区域,打开其开关。

    2. 在弹出的阿里云OSS私有Bucket回源对话框中,选择回源类型,单击确定

      回源类型

      回源类型

      推荐场景与说明

      同账号回源

      (推荐) 适用于CDNOSS Bucket在同一个阿里云账号下的场景。系统将自动使用STS临时安全令牌进行鉴权,配置简单,无需管理密钥,安全性更高。

      STS临时安全令牌也可以实现跨账号回源,详情请参见CDN使用STS实现跨账号回源OSS私有Bucket操作指引

      跨账号回源或同账号回源

      适用于CDNOSS Bucket分属不同阿里云账号的场景,也支持同账号。此方式需要您手动提供回源目标OSS私有Bucket所属阿里云账号的AccessKey IDAccessKey Secret。具体请参见创建AccessKey

      说明
      • 访问范围说明:开启后,该加速域名将可以访问其源站私有Bucket内的所有资源,无法在CDN侧对Bucket内的部分资源做访问限制。

      • 签名冲突说明:为避免OSS鉴权失败,请确保回源请求的URL参数中不携带签名信息。单个请求不能同时在HeaderURL中携带签名。

      • 功能冲突说明:本功能与OSS的静态网站托管功能的默认首页配置存在冲突。如需同时使用,请参考说明文档

安全加固建议

开启私有Bucket回源后,您的源站数据是安全的,但缓存在CDN边缘节点上的资源默认是公开访问的。为防止CDN流量被盗刷,强烈建议您结合使用CDN提供的其他安全功能:

关闭OSS私有Bucket回源

如果您不希望加速域名能够访问您同账号下的私有Bucket内资源,您可以通过访问控制RAM(Resource Access Management)控制台,取消对应角色名称的授权,关闭CDN回源OSS私有Bucket的权限。

  1. CDN控制台关闭该功能。

    1. 登录CDN控制台

    2. 在左侧导航栏,单击域名管理

    3. 域名管理页面,单击目标域名对应的管理

    4. 在指定域名的左侧导航栏,单击回源配置

    5. 阿里云OSS私有Bucket回源区域,关闭阿里云OSS私有Bucket回源开关。

  2. RAM控制台彻底删除授权。

    1. 登录RAM控制台

    2. 在左侧导航栏,单击

    3. 角色名称列表下,单击AliyunCDNAccessingPrivateOSSRole角色。

      image

    4. 移除角色AliyunCDNAccessingPrivateOSSRole中的所有权限。

      1. 单击权限对应的解除授权

      2. 在移除权限的确认对话框中,单击解除授权

    5. 返回

      1. 单击AliyunCDNAccessingPrivateOSSRole角色对应的删除角色

      2. 删除角色的确认对话框中,单击删除角色

    6. 返回

      1. 单击AliyunCDNAccessingPrivateOSSRolePolic策略对应的删除权限策略按钮。

      2. 删除权限策略的确认对话框中,输入策略名称,单击删除权限策略

常见问题

CDN访问OSS资源提示This request is forbidden by kms.错误如何解决?

如果您的OSS Bucket中使用了密钥管理服务KMS(Key Management Service)进行加密,您需要为CDN的回源角色额外授予使用KMS密钥的权限,否则CDN将无法解密和访问这些文件,出现This request is forbidden by kms.报错。

  1. 登录RAM控制台

  2. 在左侧导航栏,选择

  3. 角色名称列表下,找到AliyunCDNAccessingPrivateOSSRole角色。

  4. 单击新增授权授权主体会自动填入。

  5. 权限策略下选择系统策略,搜索AliyunKMSCryptoUserAccess,并单击AliyunKMSCryptoUserAccess,将其添加到已选择权限策略区域框中。

  6. 单击确认新增授权,显示已完成

  7. 单击关闭

    image

  8. 使用刷新资源功能,待刷新任务完成后,重新访问资源。

相关文档

CDN加速OSS资源最佳实践