Todos os produtos
Search
Central de documentação

Object Storage Service:Accessing OSS through access points

Última atualização: Aug 28, 2026

Os access points fornecem pontos de entrada independentes para buckets. Crie um access point separado para cada aplicação ou equipe e use políticas de access point para gerenciar permissões individualmente, evitando regras complexas em uma única política de bucket.

Como funciona

Um access point atua como uma camada de proxy para um bucket. Ao criar um access point, o OSS gera um alias de access point exclusivo que substitui o nome do bucket nas requisições. Cada access point possui sua própria política de access point (que define ações, recursos e identidades permitidos) e origem de rede (internet ou uma VPC específica), garantindo acesso isolado e baseado em cenários.

Quando um usuário faz uma requisição por meio de um access point, o sistema avalia a RAM policy, a bucket policy e a política de access point em conjunto. A requisição só é bem-sucedida quando tanto as políticas combinadas de RAM/bucket quanto a política de access point resultam em Allow. Consulte a Lógica de avaliação de permissões.

Por padrão, um access point não tem acesso ao bucket. Configure a delegação de permissões na política do bucket usando as chaves de condição oss:DataAccessPointArn, oss:DataAccessPointAccount ou oss:AccessPointNetworkOrigin para conceder explicitamente acesso ao bucket por meio do access point.

Início rápido

Crie um access point, delegue permissões na política do bucket e acesse os recursos pelo alias do access point.

Etapa 1: Criar um access point

Crie um access point e configure sua política para definir quem pode executar quais ações em quais recursos do OSS e sob quais condições.

  1. Acesse a Access Point List e clique em Create Access Point.

  2. Insira um Access Point Name, selecione o bucket associado e a Network Origin e clique em Next.

    Nota
    • Se você definir a Network Origin como VPC, insira um VPC ID. Obtenha o VPC ID no VPC Console.

    • A região da VPC especificada deve ser uma das regions that support OSS gateway endpoints. Se as regiões não coincidirem, as requisições de autenticação não poderão ser associadas corretamente à VPC especificada, resultando em falhas de autenticação.

  3. Desative a opção Block Public Access e configure uma política de access point.

    GUI

    Parâmetro

    Descrição

    Applied To

    Selecione se deseja autorizar o acesso ao Whole Bucket ou a Specific Resources.

    Resource Paths

    • Se você definir Applied To como Whole Bucket, o campo Resource Paths será definido como accesspoint/{Access Point Name}/*.

    • Se você definir Applied To como Specific Resources, insira o diretório ou objeto individual a autorizar. É possível adicionar várias entradas.

    Authorized User

    Especifique o destinatário da autorização.

    • RAM user: Selecione um usuário RAM pertencente à conta Alibaba Cloud atual.

      A conta conectada deve ser uma conta Alibaba Cloud ou um usuário RAM com permissões de gerenciamento de bucket e permissão ListUsers. Caso contrário, os usuários RAM não serão listados.

    • Other Account: Insira o UID de outra conta ou usuário RAM, ou de um usuário com função assumida cujo ARN comece com arn:sts, como arn:sts::1798**:assumed-role/role-name/session-name. Você pode conceder permissões a vários usuários, com uma entrada por linha.

    Authorized Operation

    • Simple Settings: Selecione uma combinação comum de operações autorizadas. As opções incluem Read-Only (excluding ListObject), Read-Only (including ListObject), Read/Write, Full Access e Deny Access.

    • Advanced Settings: Personalize o Effect (Allow ou Reject) e a Action.

    Syntax

    Insira a política de autorização no formato JSON no editor.

    Exemplo de política: Conceder permissões de leitura/gravação ao usuário 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": [
              "*"
            ]
          }
        }
      }]
    }

    Um documento de política contém Version e Statement.

    • Version: A versão da política. Este valor é fixo em 1 e não pode ser alterado.

    • Statement: Uma regra da política. Cada statement contém Effect, Action, Principal, Resource e Condition.

      Elemento da política

      Descrição

      Effect

      O efeito da política. Os valores válidos são Allow e Deny.

      Action

      A operação a executar no recurso. O caractere curinga asterisco (*) é suportado.

      Principal

      O usuário, conta ou função ao qual a política se aplica.

      Resource

      Os recursos aos quais a política se aplica.

      Condition

      As condições sob as quais a política entra em vigor.

      Se múltiplas condições forem especificadas, elas serão avaliadas usando um AND lógico; todas as condições devem ser atendidas para que a política entre em vigor.

      Todos os elementos da política estão definidos em Authorization Syntax and Elements.

  4. Clique em Submit e aguarde a criação do access point.

Etapa 2: Delegar permissões

Após criar um access point, configure a delegação de permissões na política do bucket para conceder a ele acesso ao bucket. Existem três tipos de delegação disponíveis:

  • oss:DataAccessPointArn: Delega permissões de acesso para um access point específico.

  • oss:DataAccessPointAccount: Delega permissões de acesso para todos os access points da conta Alibaba Cloud atual.

  • oss:AccessPointNetworkOrigin: Delega permissões de acesso para todos os access points que possuem uma origem de rede específica.

Specific access point

  1. Acesse a Bucket List e clique no nome do bucket desejado.

  2. No painel de navegação à esquerda, escolha Access Control > Bucket Policy e clique na aba Add Rule by Syntax.

  3. Clique em Edit e insira a política de autorização no formato JSON no editor.

    Nota

    Substitua o UID, o nome do bucket, o ID da região e o nome do access point pelos seus valores reais. Se a política do bucket já contiver statements, adicione esta regra ao array 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. Clique em Save para aplicar a política do bucket.

All access points

  1. Acesse a Bucket List e clique no nome do bucket desejado.

  2. No painel de navegação à esquerda, escolha Access Control > Bucket Policy e clique na aba Add Rule by Syntax.

  3. Clique em Edit e insira a política de autorização no formato JSON no editor.

    Nota

    Substitua o UID e o nome do bucket pelos seus valores reais. Se a política do bucket já contiver statements, adicione esta regra ao array 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. Clique em Save para aplicar a política do bucket.

By network origin

  1. Acesse a Bucket List e clique no nome do bucket desejado.

  2. No painel de navegação à esquerda, escolha Access Control > Bucket Policy e clique na aba Add Rule by Syntax.

  3. Clique em Edit e insira a política de autorização no formato JSON no editor.

    Nota
    • Substitua o UID e o nome do bucket pelos seus valores reais. Se a política do bucket já contiver statements, adicione esta regra ao array Statement.

    • Quando oss:AccessPointNetworkOrigin estiver definido como internet, as permissões são delegadas a todos os access points cuja origem de rede seja a internet. Essa configuração permite acesso tanto pela internet quanto por VPCs. Para restringir o acesso apenas a VPCs, altere o valor para 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. Clique em Save para aplicar a política do bucket.

Nota

Se você receber um erro como "The bucket policy contains public access semantics", desative a opção Block Public Access do bucket antes de delegar permissões.

Etapa 3: Acessar recursos

Identidades autorizadas (como usuários RAM) usam o alias do access point para acessar recursos do OSS.

APIs compatíveis

API

Descrição

PutAccessPointPolicy

Configura uma política de access point.

GetAccessPointPolicy

Obtém a configuração de uma política de access point.

DeleteAccessPointPolicy

Exclui uma política de access point.

ListObjects (GetBucket)

Lista informações sobre todos os objetos em um bucket.

ListObjectsV2 (GetBucketV2)

ListObjectVersions (GetBucketVersions)

Lista todas as versões dos objetos em um bucket, incluindo marcadores de exclusão.

PutObject

Faz upload de um objeto.

GetObject

Obtém um objeto.

CopyObject

Copia um objeto.

AppendObject

Faz upload de um objeto anexando dados.

DeleteObject

Exclui um único objeto.

DeleteMultipleObjects

Exclui múltiplos objetos.

HeadObject

Retorna apenas os metadados de um objeto, sem seu conteúdo.

GetObjectMeta

Retorna metadados parciais de um objeto, como ETag, tamanho e hora da última modificação, mas não seu conteúdo.

PostObject

Faz upload de um objeto usando um formulário HTML.

RestoreObject

Restaura um objeto Archive, Cold Archive ou Deep Cold Archive.

SelectObject

Executa uma instrução SQL em um objeto alvo e retorna o resultado.

InitiateMultipartUpload

Inicializa um upload multipart.

UploadPart

Faz upload de uma parte em um upload multipart.

UploadPartCopy

Cria uma parte copiando dados de um objeto existente.

CompleteMultipartUpload

Conclui um upload multipart reunindo as partes carregadas anteriormente.

AbortMultipartUpload

Cancela um upload multipart e exclui quaisquer partes carregadas.

ListMultipartUploads

Lista todos os uploads multipart em andamento.

ListParts

Lista as partes carregadas para um upload multipart específico.

PutObjectACL

Modifica as permissões de acesso de um objeto.

GetObjectACL

Visualiza as permissões de acesso de um objeto.

PutSymlink

Cria um link simbólico.

GetSymlink

Lê o alvo de um link simbólico.

PutObjectTagging

Define ou atualiza tags de objeto.

GetObjectTagging

Recupera as tags de um objeto.

DeleteObjectTagging

Exclui todas as tags de um objeto.

SDK

Apenas os SDKs Java e Python suportam aliases de access point.

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 example: Download an object to a local file by using an access point.
 */
public class DownloadObjectWithAccessPoint {

    public static void main(String[] args) {
        // Create an OSS client.
        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();

        // Download the object to a local file by using an access point alias.
        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("Download complete: " + key + " -> " + file.getPath());

        // Close the client.
        try {
            client.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""OSS Python SDK V2 example: Download an object to a local file by using an access point."""

import alibabacloud_oss_v2 as oss

def main() -> None:
    """Main function"""
    # Create an OSS client.
    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)

    # Download the object to a local file by using an access point alias.
    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"Download complete: {key} -> {file_path}")

if __name__ == "__main__":
    main()

ossutil

Use o alias do access point como nome do bucket nos comandos do ossutil.

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

REST API

Use o alias do access point no cabeçalho Host:

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

Use o curl para verificar rapidamente a conectividade e a configuração de permissões do seu access point:

curl -v \
  -H "Date: <GMT time>" \
  -H "Authorization: OSS <AccessKeyId>:<Signature>" \
  "https://<access-point-alias>.oss-<region-id>.oss-accesspoint.aliyuncs.com/<ObjectName>" \
  -o <local-file-path>

Cenário de exemplo

Este exemplo utiliza access points para fornecer acesso seguro e isolado a múltiplos departamentos em um cenário de análise de big data.

Cenário

Uma empresa (UID da conta Alibaba Cloud: 137918634953****) armazena dados coletados centralmente em um bucket chamado examplebucket. Dez departamentos comerciais diferentes precisam acessar este bucket com os seguintes requisitos:

Departamento

Escopo de acesso

Permissões

Origem de rede

Departamentos 1–3

Diretório dir1/

Somente leitura

Internet

Departamento 4

Bucket inteiro

Leitura/Gravação

Internet

Departamentos 5–10

Diretório dir2/

Leitura/Gravação

Apenas VPC

Design da solução

Projete três access points para os diferentes cenários de acesso, utilizando políticas de access point para controle de permissões e restrições de rede.

Access point

Parâmetro

Origem de rede

Destinatário

Recurso autorizado

Permissões

Access Point 1

ap-01

Internet

Usuários RAM dos Departamentos 1–3 (UID: 26571698800555****)

dir1/*

Somente leitura

Access Point 2

ap-02

Internet

Usuários RAM do Departamento 4 (UID: 25770968794578****)

* (bucket inteiro)

Leitura/Gravação

Access Point 3

ap-03

VPC

Usuários RAM dos Departamentos 5–10 (UID: 26806658794579****)

dir2/*

Leitura/Gravação

Política de access point

ap-01: Read-only access

{
  "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: Read/write access

{
  "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: VPC read/write access

{
  "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/*"
        ]
      }
    }
  }]
}

Delegação de política de bucket

Este cenário usa oss:DataAccessPointAccount para delegação unificada em todos os access points da mesma conta. Para um controle granular, use oss:DataAccessPointArn para delegar por access point.

Unified delegation

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

Individual delegation

{
  "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"
        ]
      }
    }
  }]
}

Lógica de avaliação de permissões

Resultado da política RAM e de bucket

Resultado da política de access point

Resultado final

Allow

Allow

Allow

Allow

Deny

Deny

Allow

Implicit Deny

Implicit Deny

Deny

Allow

Deny

Deny

Deny

Deny

Deny

Implicit Deny

Deny

Implicit Deny

Allow

Implicit Deny

Implicit Deny

Deny

Deny

Implicit Deny

Implicit Deny

Implicit Deny

  • Allow: A requisição corresponde a um statement Allow e a nenhum statement Deny.

  • Negação explícita: A requisição corresponde a um statement Deny. Deny tem precedência sobre Allow.

  • Negação implícita: A requisição não corresponde nem a um statement Allow nem a um statement Deny. Por padrão, uma identidade RAM não possui permissões. Qualquer ação não explicitamente permitida é implicitamente negada.

Cotas e limitações

Limitação

Descrição

Método de criação

Crie access points usando o console do OSS, API ou ossutil. Não há suporte para criação via SDKs.

Quantidade de access points

Máximo de 1.000 access points por conta Alibaba Cloud.

Regras de modificação

Após a criação, apenas a política do access point pode ser modificada. O nome e o alias são imutáveis.

Método de acesso

Não há suporte para acesso anônimo.

FAQ

A política de access point suporta listas de permissões de IP?

Sim. Adicione uma condição acs:SourceIp à sua política de access point para controle de acesso baseado em IP. Exemplo:

{
  "Version": "1",
  "Statement": [{
    "Effect": "Allow",
    "Action": ["oss:GetObject"],
    "Principal": ["*"],
    "Resource": ["acs:oss:{region-id}:179882766168****:accesspoint/{ap-name}/object/*"],
    "Condition": {
      "IpAddress": {
        "acs:SourceIp": ["192.168.1.0/24", "203.0.113.5"]
      }
    }
  }]
}

Esta política permite apenas que requisições provenientes dos IPs ou intervalos CIDR especificados acessem recursos através do access point. O exemplo usa "203.0.113.5" (um IP simples sem máscara), que é a forma recomendada de especificar um único IP. Se preferir a notação CIDR (como /32 para um único IP), escolha o operador de condição apropriado:

Operador de condição

Comportamento

Caso de uso

IpAddress

Exclui IPs de borda (endereços de rede e broadcast)

IPs simples ou intervalos /1~/31

IpAddressIncludeBorder

Inclui IPs de borda

Ao usar /32 para um único IP

O operador IpAddress exclui IPs de borda (endereços de rede e broadcast) ao avaliar intervalos CIDR. Com uma máscara /32, o próprio IP é o endereço de borda e acaba sendo excluído, fazendo com que a política não tenha efeito. Use IpAddressIncludeBorder em vez disso:

"Condition": {
  "IpAddressIncludeBorder": {
    "acs:SourceIp": ["203.0.113.5/32"]
  }
}

Permissões necessárias para criação

As seguintes permissões são obrigatórias: oss:CreateAccessPoint, oss:GetAccessPoint, oss:DeleteAccessPoint, oss:ListAccessPoints, oss:PutAccessPointPolicy, oss:GetAccessPointPolicy, oss:DeleteAccessPointPolicy, oss:PutBucketPolicy, oss:GetBucketPolicy e oss:DeleteBucketPolicy.

Documentos relacionados