企业在阿里云上拥有一个核心 OSS Bucket(如 company-data-lake),存储全公司不同部门(财务、研发、市场)的数据。希望实现企业级中心化数据湖/仓库的细粒度隔离访问,需要满足以下访问控制需求:
私网访问:所有数据访问通过阿里云 VPC 内部网络完成,禁止公网访问,不希望通过 NAT 网关产生公网流量费。
权限隔离:不同部门 VPC 访问同一个 Bucket,但需要实现前缀(Prefix)级别的隔离。例如:财务 VPC 只能访问
finance/目录,研发 VPC 只能访问dev/目录。管理解耦:数百人访问同一 Bucket,通过接入点将权限管理分散到各业务方,避免在单一 Bucket Policy 中维护数千行策略。
访问控制:限制特定 VPC 只能通过特定的接入点访问 Bucket。
方案概览
通过 OSS 接入点(Access Point) 和 VPC 网关终端节点 配合实现:
OSS 接入点:为每个访问方创建独立的接入点,通过接入点策略(AP Policy)分别管理各自的权限,避免在单一 Bucket Policy 中维护复杂的权限规则。
VPC 网关终端节点:在 VPC 中创建指向 OSS 的网关终端节点,将访问 OSS 内网域名的请求通过阿里云内网直达 OSS,无需绕行公网。
访问链路:
ECS 实例 → VPC 路由表 → 网关终端节点 → OSS 内网 → 接入点(AP Policy 鉴权)→ Bucket(Bucket Policy 鉴权)操作步骤
第一步:创建 VPC 网关终端节点
通过创建网关终端节点,在 VPC 路由表中自动添加指向 OSS 的路由,使 ECS 实例可通过内网访问 OSS。
登录 专有网络 VPC 控制台。
在左侧导航栏选择 终端节点 > 网关终端节点。
单击创建终端节点:
服务类型:选择阿里云服务。
服务名称:选择
com.aliyun.<region>.oss(例如com.aliyun.cn-hangzhou.oss)。专有网络:选择业务所在的 VPC。
路由表:勾选需要访问 OSS 的 ECS 所在交换机绑定的路由表。
创建完成后,VPC 路由表中自动增加一条指向 OSS 的路由。
第二步:创建 OSS 接入点
为每个业务方创建独立的接入点,实现权限隔离管理。
登录 OSS 管理控制台。
进入目标 Bucket,在左侧菜单选择接入点 > 创建接入点。
配置接入点参数:
接入点名称:例如
finance-ap。网络类型:选择 VPC。
VPC ID:选择步骤一中已创建网关终端节点的 VPC ID。
配置接入点策略 :授权该接入点允许操作的资源和用户等。
保存后,系统生成接入点别名和接入点域名。
第三步:配置策略
依次配置接入点策略、Bucket 策略和 VPC 网关终端节点策略,确保访问链路权限打通。
1. 配置接入点策略
接入点策略定义通过该接入点进入的流量可以执行的操作。以下示例授予 ACS:RAM:1234567890123456:role/FinanceRole 通过 finance-ap1 接入点执行 GetObject 和 PutObject 操作:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Principal": [
"ACS:RAM:1234567890123456:role/FinanceRole"
],
"Action": [
"oss:GetObject",
"oss:PutObject"
],
"Resource": [
"acs:oss:cn-hangzhou:1234567890123456:accesspoint/finance-ap1"
]
}
]
}2. 配置 Bucket 策略(接入点权限委派)
创建接入点后,通过 Bucket Policy 设置接入点权限委派,定义哪些接入点可以访问 Bucket。
接入点权限委派提供三种类型:
oss:DataAccessPointArn:指定接入点的访问权限委派。oss:DataAccessPointAccount:当前主账号下所有接入点的访问权限委派。oss:AccessPointNetworkOrigin:指定网络来源的所有接入点访问权限委派。
以下示例委派财务部门的所有接入点通过 VPC 访问 Bucket 中 finance/ 前缀下的数据:
{
"Version": "1",
"Statement": [{
"Effect": "Allow",
"Action": [
"oss:*"
],
"Principal": "*",
"Resource": [
"acs:oss:*:137918634953****:company-data-lake/finance/*"
],
"Condition": {
"StringEquals": {
"oss:DataAccessPointArn": [
"acs:oss:cn-hangzhou:1234567890123456:accesspoint/finance-ap1",
"acs:oss:cn-hangzhou:1234567890123456:accesspoint/finance-ap2",
"acs:oss:cn-hangzhou:1234567890123456:accesspoint/finance-ap3"
]
}
}
}]
}更多委派场景的策略配置参见按语法策略添加。
3. 配置 VPC 网关终端节点策略(VPC Policy)
在 VPC 网关终端节点策略中,将接入点绑定的 Bucket 设为允许访问的目标,实现网络层的访问控制。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "oss:*",
"Principal": [
"123456789012****"
],
"Resource": [
"acs:oss:*:*:example-bucket",
"acs:oss:*:*:example-bucket/*"
]
}
]
}注意事项
域名切换:使用接入点后,SDK 或 CLI 中必须使用接入点域名或接入点别名,而非原始Bucket 域名。
错误示例:
my-bucket.oss-cn-hangzhou-internal.aliyuncs.com正确示例:
finance-ap-xxxx.oss-cn-hangzhou.oss-accesspoint.aliyuncs.com
区域一致性:VPC 网关终端节点、OSS 接入点和 Bucket 必须处于同一个地域。
权限叠加原则:用户必须同时满足 RAM Policy、接入点 Policy 和 Bucket Policy 的权限才能成功访问。
Endpoint 类型限制:VPC 网关终端节点仅支持同地域私网访问。如需跨地域访问,需使用反向代理或云企业网(CEN)。
资源限额:单个 UID 可创建的接入点数量有限(1000 个),适用于绝大多数多租户场景。