OSS私有Bucket回源

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

注意事项

  • 首次使用该功能时,需要进行默认权限策略的一键开启操作,开启后将会授予CDN产品对您同账号下OSS产品的所有Bucket的只读访问权限(默认的访问权限使用STS临时令牌来访问OSS Bucket,不支持通过该功能对OSS Bucket进行PUT等写入或删除操作)。

  • 如果您选择配置永久安全令牌,则需要在申请令牌的时候,限制该令牌对OSS Bucket进行PUT等写入或者删除操作的权限。配置RAM用户访问OSS的权限请参见以RAM用户的方式访问OSS

  • 授权成功并开启了加速域名的私有Bucket回源功能之后,您可以通过该加速域名访问您的私有Bucket内的所有资源。因此,开启该功能前,请根据您的实际业务情况谨慎决策。如果您授权的私有Bucket内容并不适合作为CDN加速的回源内容,请勿授权或开启此功能。

  • 如果您的网站有被攻击的风险,请购买高防服务,同时谨慎授权或开启私有Bucket回源授权功能。

  • CDN回源OSS私有Bucket功能与OSS的静态网站托管功能的默认首页配置存在冲突,两个功能需要同时使用的情况下,请参见说明文档

  • 开启了私有Bucket回源功能之后,CDN节点将会在回源请求中添加一个名称为“Authorization”的Header,其值为OSS私有Bucket鉴权签名信息。需要注意,回源OSS的单个请求不能同时在Header以及URL请求参数中均携带签名,如果在回源请求中携带了Authorization请求头的同时,又在URL中携带了用于签名认证的参数(通常由客户端生成),例如ExpiresSignatureOSSAccessKeyId等,那么将会导致OSS鉴权失败,详细说明请参见说明文档

  • 您可以配合使用阿里云CDN提供的Referer防盗链功能、URL鉴权功能,来更有效地保护您的资源不被盗刷,更多信息,请参见配置Referer防盗链配置URL鉴权

开启私有Bucket回源

  1. 登录CDN控制台

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

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

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

  5. 可选:您首次使用该功能时,需要执行授权操作。在阿里云OSS私有Bucket回源区域,单击点击授权,继续单击同意授权

    同意授权

    说明

    如果无法通过CDN控制台的授权按钮来一键开启授权,您还可以在RAM访问控制台CDN回源OSS私有Bucket权限,具体操作请参见通过RAM访问控制服务开启CDN回源OSS私有Bucket权限

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

    说明

    当CDN回源OSS私有Bucket访问非加密文件时,完成以上配置即可正常访问文件。如果您在OSS上对文件进行了KMS加密,此时将无法直接访问,需要为AliyunCDNAccessingPrivateOSSRole角色添加AliyunKMSCryptoUserAccess权限才能正常访问文件。具体操作请参见为AliyunCDNAccessingPrivateOSSRole角色添加AliyunKMSCryptoUserAccess权限

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

    回源类型

    参数

    说明

    回源类型

    • 同账号回源:系统会自动配置STS安全令牌,配置更简单,但仅支持CDN域名回源到同一个阿里云账号下的OSS私有Bucket。

    • 跨账号回源或同账号回源:需要配置永久安全令牌,除了支持CDN域名回源到同一个阿里云账号下的OSS私有Bucket,还支持CDN域名回源到另外一个阿里云账号下的OSS私有Bucket。

    AccessKey ID

    回源目标OSS私有Bucket所属阿里云账号的AccessKey ID,具体请参见创建AccessKey

    AccessKey Secret

    回源目标OSS私有Bucket所属阿里云账号的AccessKey Secret。

  8. 可选:AliyunCDNAccessingPrivateOSSRole角色添加AliyunKMSCryptoUserAccess权限。

    1. 登录RAM控制台

    2. 在左侧导航栏,选择身份管理 > 角色

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

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

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

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

    7. 单击关闭

      image

通过RAM访问控制服务开启CDN回源OSS私有Bucket权限

如果无法通过CDN控制台的授权按钮来一键开启授权,您还可以通过RAM访问控制服务来开启CDN回源OSS私有Bucket权限。

  1. 登录RAM控制台

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

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

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

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

      名称:AliyunCDNAccessingPrivateOSSRolePolicy

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

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

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

    2. 选择可信实体类型设置为阿里云账号,单击下一步

    3. 配置角色阶段,输入以下信息

      角色名称:AliyunCDNAccessingPrivateOSSRole

      备注:CDN/DCDN默认使用此角色来回源私有OSS Bucket

    4. 选择信任的云账号选项设置为当前云账号,单击完成

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

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

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

      资源范围:账号级别

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

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

关闭CDN回源OSS私有Bucket的权限

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

  1. 登录RAM控制台

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

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

    image

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

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

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

  5. 返回身份管理 > 角色页面,删除AliyunCDNAccessingPrivateOSSRole角色。

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

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

相关文档