全部產品
Search
文件中心

Object Storage Service:通過存取點訪問OSS

更新時間:Jan 30, 2026

存取點(Access Point)為儲存空間(Bucket)提供獨立的訪問入口。當一個Bucket需要被多個應用或團隊以不同許可權訪問時,可為每個訪問方建立獨立的存取點,通過存取點策略(AP Policy)分別管理各自的許可權,避免在單一Bucket Policy中維護複雜的許可權規則。

工作原理

存取點是Bucket的訪問代理層。建立存取點後,OSS會產生一個唯一的存取點別名,使用者使用該別名替代Bucket名稱發起請求。每個存取點可配置獨立的AP Policy(定義可執行檔操作、可訪問的資源和允許的身份)和網路來源(互連網或僅限指定VPC),實現基於業務情境的隔離訪問。

使用者通過存取點訪問時,系統會綜合評估RAM PolicyBucket Policy和AP Policy三層策略,只有當RAM Policy與Bucket Policy的組合判定結果為Allow,且AP Policy也為Allow時,請求才會被允許。權限原則的詳細判定邏輯請參見許可權判定邏輯

存取點預設無法訪問Bucket資源,需要先在Bucket Policy中配置許可權委派(通過oss:DataAccessPointArnoss:DataAccessPointAccountoss:AccessPointNetworkOrigin條件鍵),明確授權特定存取點訪問該Bucket。

快速使用

接下來將通過建立存取點、配置許可權委派和使用存取點訪問三個步驟,指導快速上手使用存取點功能。

步驟一:建立存取點

建立存取點並配置存取點策略,定義“哪些身份”、“在什麼條件下”,可以通過存取點“對哪些OSS資源”、“執行何種操作”。

  1. 前往存取點列表,單擊建立存取點

  2. 輸入存取點名稱,選擇關聯的Bucket和網路來源,單擊下一步

    說明
    • 網路來源選擇VPC時,需要輸入VPC ID,可前往VPC控制台擷取。

    • 輸入的VPC地區必須與OSS支援的網關終端節點地區保持一致,地區不匹配將導致鑒權請求無法正確關聯到指定VPC,從而引發鑒權失敗。

  3. 關閉阻止公用訪問選項,並配置存取點策略。

    按圖形策略添加

    配置項

    說明

    授權資源

    選擇授權對象是整個Bucket還是指定資源

    資源路徑

    • 授權資源選擇整個Bucket時,資源路徑accesspoint/{存取點名稱}/*

    • 授權資源選擇指定資源時,填寫待授權資源的目錄或單個Object,支援添加多條記錄。

    授權用戶

    指定被授權對象。

    • 子帳號:選擇當前阿里雲帳號下的RAM使用者。

      當前登入帳號必須是阿里雲主帳號或擁有此Bucket系統管理權限及RAM控制台ListUsers許可權的RAM使用者,否則無法查看當前帳號的RAM使用者列表。

    • 其他帳號:填寫其他待授權帳號、子帳號的UID或以arn:sts開頭的臨時授權使用者(如arn:sts::1798************:assumed-role/role-name/session-name)。支援授權給多個使用者,一行填寫一個。

    授權操作

    • 簡單設定:選擇常見的授權操作組合,可選設定項包括唯讀(不包含ListObject操作)唯讀(包含ListObject操作)讀/寫完全控制拒絕訪問

    • 進階設定:自訂授權效力允許拒絕)和授權操作

    按文法策略添加

    在編輯框內輸入JSON格式的授權策略。

    樣本授權策略:授予使用者20816353761158****讀/寫入權限。
    {
      "Version": "1",
      "Statement": [{
        "Effect": "Allow",
        "Action": [
          "oss:GetObject",
          "oss:PutObject",
          "oss:GetObjectAcl",
          "oss:PutObjectAcl",
          "oss:ListObjects",
          "oss:AbortMultipartUpload",
          "oss:ListParts",
          "oss:RestoreObject",
          "oss:ListObjectVersions",
          "oss:GetObjectVersion",
          "oss:GetObjectVersionAcl",
          "oss:RestoreObjectVersion"
        ],
        "Principal": [
          "20816353761158****"
        ],
        "Resource": [
          "acs:oss:{region-id}:179882766168****:accesspoint/{ap-name}/object/*"
        ]
      }, {
        "Effect": "Allow",
        "Action": [
          "oss:ListObjects",
          "oss:GetObject"
        ],
        "Principal": [
          "20816353761158****"
        ],
        "Resource": [
          "acs:oss:{region-id}:179882766168****:accesspoint/{ap-name}"
        ],
        "Condition": {
          "StringLike": {
            "oss:Prefix": [
              "*"
            ]
          }
        }
      }]
    }

    完整的授權策略包含Version(版本號碼)和Statement(授權語句)。

    • Version:權限原則版本,固定為1,不允許修改。

    • Statement:策略語句的主體,包含一條或多條具體的授權/拒絕規則。每條授權語句包含Effect(授權效力)、Action(授權操作)、Principal(授權主體)、Resource(授權資源)和Condition(授權條件)。

      策略元素

      說明

      Effect

      策略的效力,可選值為Allow(允許)或Deny(拒絕)。

      Action

      對資源執行的具體操作,支援使用萬用字元*

      Principal

      策略作用的主體(使用者、帳號、角色等)。

      Resource

      策略作用的資源範圍。

      Condition

      策略生效的條件。

      當配置多個條件時,所有條件必須同時滿足(AND關係),策略才會生效。

      完整的授權元素列表請參見授權文法與元素

  4. 單擊提交,等待存取點建立完成。

步驟二:存取點許可權委派

建立存取點後,還需要通過Bucket Policy設定存取點許可權委派,即定義哪些存取點能夠訪問Bucket。存取點許可權委派提供三種類型:

  • oss:DataAccessPointArn:指定存取點的存取權限委派。

  • oss:DataAccessPointAccount:當前主帳號下所有存取點的存取權限委派。

  • oss:AccessPointNetworkOrigin:指定網路來源的所有存取點存取權限委派。

指定存取點許可權委派

  1. 前往Bucket列表,單擊目標Bucket。

  2. 在左側功能表列單擊許可權控制 > Bucket 授權策略,選擇按文法策略添加

  3. 單擊編輯,在編輯框內輸入JSON格式的授權策略。

    說明

    配置時請替換樣本內的UID、Bucket名稱、地區ID和存取點名稱。如果原來的Bucket Policy不為空白,請在原有的Bucket Policy中追加Statement元素。

    {
      "Version": "1",
      "Statement": [{
        "Effect": "Allow",
        "Action": [
          "oss:*"
        ],
        "Principal": [
          "*"
        ],
        "Resource": [
          "acs:oss:*:179882766168****:example-bucket",
          "acs:oss:*:179882766168****:example-bucket/*"
        ],
        "Condition": {
          "StringEquals": {
            "oss:DataAccessPointArn": [
              "acs:oss:oss-{region-id}:179882766168****:accesspoint/{ap-name}"
            ]
          }
        }
      }]
    }
  4. 單擊儲存,完成Bucket Policy配置。

所有存取點許可權委派

  1. 前往Bucket列表,單擊目標Bucket。

  2. 在左側功能表列單擊許可權控制 > Bucket 授權策略,選擇按文法策略添加

  3. 單擊編輯,在編輯框內輸入JSON格式的授權策略。

    說明

    配置時請替換樣本內的UID和Bucket名稱。如果原有的Bucket Policy不為空白,請在原有的Bucket Policy中追加Statement元素。

    {
      "Version": "1",
      "Statement": [{
        "Effect": "Allow",
        "Action": [
          "oss:*"
        ],
        "Principal": [
          "*"
        ],
        "Resource": [
          "acs:oss:*:179882766168****:example-bucket",
          "acs:oss:*:179882766168****:example-bucket/*"
        ],
        "Condition": {
          "StringEquals": {
            "oss:DataAccessPointAccount": [
              "179882766168****"
            ]
          }
        }
      }]
    }
  4. 單擊儲存,完成Bucket Policy配置。

指定網路來源許可權委派

  1. 前往Bucket列表,單擊目標Bucket。

  2. 在左側功能表列單擊許可權控制 > Bucket 授權策略,選擇按文法策略添加

  3. 單擊編輯,在編輯框內輸入JSON格式的授權策略。

    說明
    • 配置時需替換樣本中的UID和Bucket名稱。若原有Bucket Policy已包含內容,需在現有策略的Statement數組中追加新元素。

    • oss:AccessPointNetworkOrigin設定為internet時,委派所有網路來源為互連網的存取點,此配置同時允許外網和VPC訪問。如需限制僅允許VPC訪問,需將該值修改為vpc

    {
      "Version": "1",
      "Statement": [{
        "Effect": "Allow",
        "Action": [
          "oss:*"
        ],
        "Principal": [
          "*"
        ],
        "Resource": [
          "acs:oss:*:179882766168****:example-bucket",
          "acs:oss:*:179882766168****:example-bucket/*"
        ],
        "Condition": {
          "StringEquals": {
            "oss:AccessPointNetworkOrigin": [
              "internet"
            ]
          }
        }
      }]
    }
  4. 單擊儲存,完成Bucket Policy配置。

說明

如果提示“Bucket Policy 中包含公用訪問語義”,請先關閉Bucket的阻止公用訪問選項,再進行存取點許可權委派。

步驟三:使用存取點訪問

建立存取點後,OSS會自動產生存取點別名。使用被授權的身份(如RAM使用者)通過該別名即可訪問對應的OSS資源。

點擊查看存取點相容的操作

介面

說明

PutAccessPointPolicy

配置存取點策略。

GetAccessPointPolicy

擷取存取點策略配置。

DeleteAccessPointPolicy

刪除存取點策略。

ListObjects(GetBucket)

列舉Bucket中所有檔案(Object)的資訊。

ListObjectsV2(GetBucketV2)

ListObjectVersions(GetBucketVersions)

列出 Bucket 中包括刪除標記(Delete Marker)在內的所有 Object 的版本資訊。

PutObject

上傳Object。

GetObject

擷取Object。

CopyObject

拷貝Object。

AppendObject

以追加寫的方式上傳Object。

DeleteObject

刪除單個Object。

DeleteMultipleObjects

刪除多個Object。

HeadObject

只返回某個Object的所有中繼資料,不返迴文件內容。

GetObjectMeta

返回Object的部分中繼資料,包括該Object的ETag、Size(檔案大小)以及LastModified等,不返迴文件內容。

PostObject

通過HTML表單上傳的方式上傳Object。

RestoreObject

解凍Archive Storage、冷Archive Storage或者深度冷Archive Storage類型的Object。

SelectObject

對目標檔案執行SQL語句,返回執行結果。

InitiateMultipartUpload

初始化一個Multipart Upload事件。

UploadPart

根據指定的Object名和uploadId來分塊(Part)上傳資料。

UploadPartCopy

通過在UploadPart請求的基礎上增加一個要求標頭x-oss-copy-source來調用UploadPartCopy介面,實現從一個已存在的Object中拷貝資料來上傳一個Part。

CompleteMultipartUpload

在將所有資料Part都上傳完成後,必須調用該介面來完成整個檔案的分區上傳。

AbortMultipartUpload

取消Multipart Upload事件並刪除對應的Part資料。

ListMultipartUploads

列舉所有執行中的Multipart Upload事件,即已經初始化但還未完成(Complete)或者還未中止(Abort)的Multipart Upload事件。

ListParts

列舉指定uploadId所屬的所有已經上傳成功Part。

PutObjectACL

修改Object的存取權限。

GetObjectACL

查看Object的存取權限。

PutSymlink

建立軟連結。

GetSymlink

擷取軟連結。

PutObjectTagging

設定或更新對象標籤。

GetObjectTagging

擷取對象標籤資訊。

DeleteObjectTagging

刪除指定的對象標籤。

SDK

目前僅Java SDK和Python SDK支援通過存取點別名訪問OSS資源。

import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.StaticCredentialsProvider;
import com.aliyun.sdk.service.oss2.models.GetObjectRequest;

import java.io.File;

/**
 * OSS Java SDK V2 樣本:使用存取點下載對象到本地檔案
 */
public class DownloadObjectWithAccessPoint {

    public static void main(String[] args) {
        // 建立OSS用戶端
        String accessKeyId = System.getenv("OSS_ACCESS_KEY_ID");
        String accessKeySecret = System.getenv("OSS_ACCESS_KEY_SECRET");
        CredentialsProvider provider = new StaticCredentialsProvider(accessKeyId, accessKeySecret);
        OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(provider)
                .region("<region-id>")
                .build();

        // 使用存取點別名下載對象到本地檔案
        String bucket = "example-ap-b156d01070a10322664d6704cd1d47****-ossalias";
        String key = "example.jpg";
        File file = new File("example.jpg");
        client.getObjectToFile(GetObjectRequest.newBuilder()
                .bucket(bucket)
                .key(key)
                .build(), file);
        System.out.println("檔案下載完成: " + key + " -> " + file.getPath());

        // 關閉用戶端
        try {
            client.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""OSS Python SDK V2 樣本:使用存取點下載對象到本地檔案"""

import alibabacloud_oss_v2 as oss


def main() -> None:
    """主函數"""
    # 建立OSS用戶端
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
    config = oss.config.load_default()
    config.credentials_provider = credentials_provider
    config.region = "<region-id>"
    config.endpoint = "oss-<region-id>.aliyuncs.com"
    client = oss.Client(config)

    # 使用存取點別名下載對象到本地檔案
    bucket = "example-ap-b156d01070a10322664d6704cd1d47****-ossalias"
    key = "example.jpg"
    file_path = "example.jpg"
    request = oss.GetObjectRequest(bucket, key)
    client.get_object_to_file(request, file_path)
    print(f"檔案下載完成: {key} -> {file_path}")


if __name__ == "__main__":
    main()

ossutil

使用ossutil訪問OSS資源時,將存取點別名作為Bucket名稱。

ossutil cp oss://example-ap-b156d01070a10322664d6704cd1d47****-ossalias/example.jpg /tmp

REST API

使用REST API訪問OSS資源時,需要在Host中使用存取點別名。樣本如下:

GET /ObjectName HTTP/1.1
Host: example-ap-b156d01070a10322664d6704cd1d47****-ossalias.oss-{region-id}.aliyuncs.com 
Date: GMT Date
Authorization: SignatureValue

情境樣本

以下樣本展示了如何為巨量資料分析情境設計存取點方案,通過細粒度許可權控制實現多部門安全隔離訪問。

情境描述

某公司(阿里雲帳號UID為137918634953****)將統一採集的資料存放在儲存空間examplebucket中,該Bucket需要被10個不同業務部門訪問,具體需求如下:

部門

存取範圍

許可權要求

網路來源

部門1~3

dir1/目錄

唯讀

互連網

部門4

整個Bucket

讀寫

互連網

部門5~10

dir2/目錄

讀寫

僅VPC

方案設計

基於業務隔離和安全邊界需求,設計3個存取點分別對應不同的訪問情境,通過存取點策略實現精確的許可權控制和網路訪問限制。

存取點

名稱

網路來源

授權使用者

授權資源

許可權

存取點1

ap-01

互連網

部門1~3的RAM使用者(UID:26571698800555****

dir1/*

唯讀

存取點2

ap-02

互連網

部門4的RAM使用者(UID:25770968794578****

*(整個Bucket)

讀寫

存取點3

ap-03

VPC

部門5~10的RAM使用者(UID:26806658794579****

dir2/*

讀寫

AP Policy配置

ap-01(部門1~3隻讀訪問)

{
  "Version": "1",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "oss:GetObject",
      "oss:GetObjectAcl",
      "oss:ListObjects",
      "oss:RestoreObject",
      "oss:ListObjectVersions",
      "oss:GetObjectVersion",
      "oss:GetObjectVersionAcl",
      "oss:RestoreObjectVersion"
    ],
    "Principal": [
      "26571698800555****"
    ],
    "Resource": [
      "acs:oss:{region-id}:137918634953****:accesspoint/ap-01/object/dir1/*"
    ]
  },{
    "Effect": "Allow",
    "Action": [
      "oss:ListObjects",
      "oss:GetObject"
    ],
    "Principal": [
      "26571698800555****"
    ],
    "Resource": [
      "acs:oss:{region-id}:137918634953****:accesspoint/ap-01"
    ],
    "Condition": {
      "StringLike": {
        "oss:Prefix": [
          "dir1/*"
        ]
      }
    }
  }]
}

ap-02(部門4讀寫整個Bucket)

{
  "Version": "1",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "oss:GetObject",
      "oss:PutObject",
      "oss:GetObjectAcl",
      "oss:PutObjectAcl",
      "oss:ListObjects",
      "oss:AbortMultipartUpload",
      "oss:ListParts",
      "oss:RestoreObject",
      "oss:ListObjectVersions",
      "oss:GetObjectVersion",
      "oss:GetObjectVersionAcl",
      "oss:RestoreObjectVersion"
    ],
    "Principal": [
      "25770968794578****"
    ],
    "Resource": [
      "acs:oss:{region-id}:137918634953****:accesspoint/ap-02/object/*"
    ]
  },{
    "Effect": "Allow",
    "Action": [
      "oss:ListObjects",
      "oss:GetObject"
    ],
    "Principal": [
      "25770968794578****"
    ],
    "Resource": [
      "acs:oss:{region-id}:137918634953****:accesspoint/ap-02"
    ],
    "Condition": {
      "StringLike": {
        "oss:Prefix": [
          "*"
        ]
      }
    }
  }]
}

ap-03(部門5~10通過VPC讀寫)

{
  "Version": "1",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "oss:GetObject",
      "oss:PutObject",
      "oss:GetObjectAcl",
      "oss:PutObjectAcl",
      "oss:ListObjects",
      "oss:AbortMultipartUpload",
      "oss:ListParts",
      "oss:RestoreObject",
      "oss:ListObjectVersions",
      "oss:GetObjectVersion",
      "oss:GetObjectVersionAcl",
      "oss:RestoreObjectVersion"
    ],
    "Principal": [
      "26806658794579****"
    ],
    "Resource": [
      "acs:oss:{region-id}:137918634953****:accesspoint/ap-03/object/dir2/*"
    ]
  },{
    "Effect": "Allow",
    "Action": [
      "oss:ListObjects",
      "oss:GetObject"
    ],
    "Principal": [
      "26806658794579****"
    ],
    "Resource": [
      "acs:oss:{region-id}:137918634953****:accesspoint/ap-03"
    ],
    "Condition": {
      "StringLike": {
        "oss:Prefix": [
          "dir2/*"
        ]
      }
    }
  }]
}

Bucket Policy許可權委派

由於該情境涉及同一帳號下的多個存取點,建議使用oss:DataAccessPointAccount進行統一委派,簡化Bucket Policy配置。如需更精細的控制,也可使用oss:DataAccessPointArn為每個存取點單獨委派。

統一委派

{
  "Version": "1",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "oss:*"
    ],
    "Principal": [
      "*"
    ],
    "Resource": [
      "acs:oss:*:137918634953****:examplebucket",
      "acs:oss:*:137918634953****:examplebucket/*"
    ],
    "Condition": {
      "StringEquals": {
        "oss:DataAccessPointAccount": [
          "137918634953****"
        ]
      }
    }
  }]
}

單獨委派

{
  "Version": "1",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "oss:*"
    ],
    "Principal": [
      "*"
    ],
    "Resource": [
      "acs:oss:*:137918634953****:examplebucket",
      "acs:oss:*:137918634953****:examplebucket/*"
    ],
    "Condition": {
      "StringEquals": {
        "oss:DataAccessPointArn": [
          "acs:oss:oss-{region-id}:137918634953****:accesspoint/ap-01",
          "acs:oss:oss-{region-id}:137918634953****:accesspoint/ap-02",
          "acs:oss:oss-{region-id}:137918634953****:accesspoint/ap-03"
        ]
      }
    }
  }]
}

許可權判定邏輯

RAM Policy和Bucket Policy的合并結果

AP Policy結果

最終結果

Allow

Allow

Allow

Allow

Deny

Deny

Allow

Ignore

Ignore

Deny

Allow

Deny

Deny

Deny

Deny

Deny

Ignore

Deny

Ignore

Allow

Ignore

Ignore

Deny

Deny

Ignore

Ignore

Ignore

  • Allow(允許):訪問請求命中了權限原則中的Allow語句,且沒有命中Deny語句。

  • Deny(顯式拒絕):訪問請求命中了權限原則中的Deny語句。即使同時命中了Allow語句,遵循Deny優先原則,判定結果仍為顯式拒絕。

  • Ignore(隱式拒絕):訪問請求既沒有命中Allow語句,也沒有命中Deny語句。RAM身份預設沒有執行任何操作的許可權,未被顯式允許的操作都會被隱式拒絕。

配額與限制

限制項

說明

建立方式

支援通過OSS控制台、API和ossutil建立存取點,不支援通過SDK建立存取點。

數量

  • 單個阿里雲帳號最多可建立1000個存取點。

  • 單個Bucket最多可建立100個存取點。

修改規則

存取點建立後,僅支援修改存取點策略,不支援修改存取點基礎資訊(如存取點名稱、存取點別名等)。

訪問方式

不支援匿名訪問。

常見問題

存取點的使用權限設定是否支援IP白名單?

支援。可按文法策略添加存取點策略,添加"IpAddress": {"acs:SourceIp": ["xxx"]}條件限制。

通過RAM使用者建立存取點時需具備哪些許可權?

需要具備以下許可權:oss:CreateAccessPointoss:GetAccessPointoss:DeleteAccessPointoss:ListAccessPointsoss:PutAccessPointPolicyoss:GetAccessPointPolicyoss:DeleteAccessPointPolicyoss:PutBucketPolicyoss:GetBucketPolicyoss:DeleteBucketPolicy

相關文檔