OSS私有Bucket回源

如果加速域名的源站是阿里云对象存储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临时安全令牌进行鉴权,配置简单,无需管理密钥,安全性更高。

      跨账号回源或同账号回源

      适用于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. 返回身份管理 > 角色页面,删除AliyunCDNAccessingPrivateOSSRole角色。

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

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

    6. 返回权限管理 > 权限策略页面,删除AliyunCDNAccessingPrivateOSSRolePolicy策略。

      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资源最佳实践