结合VPC Policy和Bucket Policy配置双重访问控制机制,从网络来源和资源两个层面实现对OSS的访问控制,确保云上数据仅在安全的网络环境内被授权访问,有效防范未授权访问和数据泄露风险。
方案介绍
相比单纯依赖Bucket Policy进行目的端验证,双重控制方案通过VPC Policy和Bucket Policy组合形成源端授权+目的端验证的多层安全防护体系,显著提升数据访问安全性。VPC Policy在网络源端预先限制可访问的Bucket范围,实现细粒度权限管理和风险隔离;Bucket Policy在存储目的端验证访问来源,确保仅来自授权VPC的请求可以访问资源。
允许访问:在授权VPC内访问授权的Bucket资源时,双端策略同时放行。
拒绝访问:
VPC Policy拒绝:在授权VPC内尝试访问未被VPC Policy授权的Bucket资源。
Bucket Policy拒绝:在非授权VPC内尝试访问Bucket资源。
方案实现
以下通过具体场景演示双重访问控制的配置过程。某企业用户(UID为174649585760xxxx)在OSS中创建了名为example-bucket的存储空间用于存放重要业务数据,同时在ID为vpc-t4nlw426y44rd3iq4xxxx的专有网络VPC内运行多台ECS实例。为遵循最小权限原则,使用RAM用户example-user(UID为20655703638807****)的AccessKey进行业务访问。需要实现以下访问控制目标:
VPC源端控制:限制VPC仅允许访问OSS指定资源
example-bucket。Bucket目的端控制:拒绝所有非当前VPC的OSS访问请求。
步骤一:配置VPC Policy
为ID为vpc-t4nlw426y44rd3iq4xxxx的专有网络VPC创建终端节点策略,限制其仅能访问OSS中example-bucket下的资源。
前往专有网络VPC控制台,在左侧菜单栏单击终端节点。
单击创建终端节点,按以下说明配置终端节点。
首次使用需开通私网连接服务。
所属地域:选择VPC所在地域,如新加坡。
节点名称:输入终端节点名称。
终端节点类型:选择网关终端节点。
终端节点服务:选择阿里云服务,在服务列表中选择OSS终端节点服务(服务名称以
oss结尾的条目)。专有网络:选择目标专有网络。
路由表:选择目标路由表。
终端节点策略:在编辑器内输入以下策略。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "oss:*", "Principal": [ "20655703638807****" ], "Resource": [ "acs:oss:*:*:example-bucket", "acs:oss:*:*:example-bucket/*" ] } ] }
确认配置无误后,单击确定创建。
步骤二:配置Bucket Policy
配置Bucket Policy,拒绝ID不为vpc-t4nlw426y44rd3iq4xxxx的VPC网络请求访问OSS资源。
前往Bucket列表,单击目标Bucket。
在Bucket左侧菜单栏单击。
选择按语法策略添加,然后单击编辑,在编辑器内输入以下策略。
{ "Statement": [ { "Action": [ "oss:*" ], "Effect": "Deny", "Principal": [ "20655703638807****" ], "Resource": "acs:oss:*:*:*", "Condition": { "StringNotEquals": { "acs:SourceVpc": [ "vpc-t4nlw426y44rd3iq4xxxx" ] } } } ], "Version": "1" }确认授权策略无误后,单击保存,根据页面提示保存授权策略。
步骤三:验证访问控制效果
以下通过ossutil命令行工具验证双重访问控制的实际效果。使用命令前需先下载命令行工具ossutil 2.0并使用RAM用户的AccessKey和内网访问地址(如oss-ap-southeast-1-internal.aliyuncs.com)进行配置。
验证允许访问场景
在授权VPC(vpc-t4nlw426y44rd3iq4xxxx)内的ECS实例上,使用授权用户(UID为20655703638807****)的AccessKey访问example-bucket,如列举Bucket中的文件。
ossutil ls oss://example-bucket/访问成功,说明双端策略均放行。
验证VPC Policy拒绝场景
在同一VPC内尝试访问未被VPC Policy授权的其他Bucket(如other-bucket)。
ossutil ls oss://other-bucket/访问被拒绝,提示Access denied by VPC endpoint policy..,说明VPC Policy在源端成功限制了可访问的Bucket范围。
验证Bucket Policy拒绝场景
在非授权VPC或公网环境中,使用同一用户的AccessKey访问example-bucket。
ossutil ls oss://example-bucket/访问被拒绝,提示Access denied by bucket policy..,说明Bucket Policy在目的端成功验证了VPC来源。