Todos os produtos
Search
Central de documentação

Object Storage Service:Control OSS access with RAM policies

Última atualização: Sep 02, 2026

Configure o controle de acesso refinado para buckets, diretórios e objetos do OSS usando políticas do RAM. Entenda como o modelo de armazenamento plano e a listagem baseada em prefixos afetam o design das políticas e aprenda a conceder permissões no nível de diretório para diferentes usuários do RAM.

Estrutura de armazenamento e autorização

Modelo de armazenamento do OSS

O OSS utiliza um modelo de armazenamento plano para armazenar objetos como pares chave-valor. Todos os objetos pertencem diretamente a um bucket; portanto, não existe hierarquia física de diretórios. Os "diretórios" exibidos no console usam os prefixos das chaves dos objetos e um delimitador (/) para simular uma estrutura de pastas.

Para o bucket examplebucket, o console exibe a seguinte estrutura de diretórios e chaves de objetos:

examplebucket
├── Development/                     # Key: Development/ (directory object)
│   ├── Alibaba Cloud.pdf            # Key: Development/Alibaba Cloud.pdf
│   ├── ProjectA.docx                # Key: Development/ProjectA.docx
│   └── ProjectB.docx                # Key: Development/ProjectB.docx
├── Marketing/                       # Key: Marketing/ (directory object)
│   ├── data2020.xlsx                # Key: Marketing/data2020.xlsx
│   └── data2021.xlsx                # Key: Marketing/data2021.xlsx
├── Private/                         # Key: Private/ (directory object)
│   └── 2017/                        # Key: Private/2017/ (directory object)
│       ├── images.zip               # Key: Private/2017/images.zip
│       └── promote.pptx             # Key: Private/2017/promote.pptx
└── oss-dg.pdf                       # Key: oss-dg.pdf

A chave de um objeto de diretório termina com /. O OSS usa esse sufixo para identificar diretórios. No armazenamento, todos os objetos, incluindo os objetos de diretório, são armazenados de forma plana.

Como o OSS não possui hierarquia real de diretórios, conceder acesso a um "diretório" significa conceder acesso a todos os objetos com um prefixo específico. Por exemplo, conceder acesso ao diretório Development/ equivale a conceder acesso a todos os objetos cujas chaves começam com Development/.

Diferenças nas requisições de bucket, diretório e objeto

Operações distintas exigem requisições de API e configurações de Resource diferentes.

Mecanismo da requisição ListObjects

O console exibe uma estrutura semelhante a diretórios utilizando dois parâmetros da operação de API GetBucket (ListObjects):

Parâmetro

Descrição

Valor de exemplo

prefix

Restringe a resposta para incluir apenas objetos cujas chaves começam com o prefixo especificado.

Development/

delimiter

Caractere usado para agrupar objetos, geralmente /.

/

Ao clicar na pasta Development/ no console, você envia esta requisição ao OSS:

GET /?prefix=Development/&delimiter=/ HTTP/1.1
Host: examplebucket.oss-cn-hangzhou.aliyuncs.com

O OSS retorna todos os objetos que começam com Development/. Como delimiter=/ foi especificado, o OSS retorna subdiretórios (como Development/SubFolder/) como CommonPrefixes, em vez de listar todos os arquivos dentro deles.

Configuração de Resource**

Alvo da operação

API acionada

Configuração de Resource**

Pontos de configuração da política

Listar o diretório raiz de um bucket

ListObjects, prefix está vazio, delimiter é /

acs:oss:*:*:examplebucket

Resource aponta para o próprio bucket, não para um caminho específico.

Entrar em um diretório

ListObjects, onde prefix é folder_name/ e delimiter é /

acs:oss:*:*:examplebucket

Resource refere-se ao bucket, não a um caminho. A condição oss:Prefix restringe o escopo de listagem.

Ler e gravar conteúdo de arquivo

GetObject, PutObject

acs:oss:*:*:examplebucket/directory_name/*

O Resource pode ser especificado até um caminho e suporta o caractere curinga *.

Console vs. acesso via API/SDK

O acesso pelo console exige navegação desde a lista de buckets até o diretório de destino, o que requer mais permissões do que chamadas diretas de API ou SDK.

Método de acesso

Permissões necessárias

API/SDK

Apenas as permissões do recurso de destino são necessárias, como oss:GetObject.

Console

Permissões do recurso de destino mais permissões auxiliares, como oss:ListBuckets (listar buckets) e oss:GetBucketInfo (exibir detalhes do bucket).

Cenário

Considere que a ACL padrão de leitura/gravação para todos os arquivos no bucket examplebucket seja privada. A estrutura do bucket é a seguinte:

examplebucket
├── Development/           # Development directory
│   ├── Alibaba Cloud.pdf
│   ├── ProjectA.docx
│   └── ProjectB.docx
├── Marketing/             # Marketing directory
│   ├── data2020.xlsx
│   └── data2021.xlsx
├── Private/               # Confidential directory
│   └── 2017/
│       ├── images.zip
│       └── promote.pptx
└── oss-dg.pdf

Objetivos de controle de acesso:

Usuário/grupo de usuários do RAM

Alvo da autorização

Tipo de permissão

Usuária do RAM Anne

Pasta Development/ e todos os seus arquivos

Leitura e gravação

Usuário do RAM Leo

Pasta Marketing/ e todos os seus arquivos

Somente leitura

Todos os membros de um grupo de usuários específico

Diretório Private/ e todos os seus arquivos

Negar acesso

Etapa 1: Crie um bucket e carregue objetos

  1. Acesse a Lista de Buckets e clique em Create Bucket para criar um bucket, por exemplo, examplebucket.

  2. No bucket, clique em Create Directory para criar os diretórios: Development, Marketing e Private (crie também um subdiretório 2017 dentro de Private).

  3. Clique em Upload Object para carregar objetos nos seguintes caminhos:

    • Diretório raiz: oss-dg.pdf

    • Diretório Development/: Alibaba Cloud.pdf, ProjectA.docx, ProjectB.docx

    • Diretório Marketing/: data2020.xlsx, data2021.xlsx

    • Diretório Private/2017/: images.zip, promote.pptx

Etapa 2: Crie os usuários do RAM Anne e Leo

Acesse a página Users no console do RAM e clique em Create User para criar os usuários Anne e Leo.

Etapa 3: Conceder acesso de leitura e gravação ao diretório Development

Design da política

O acesso de leitura e gravação a Development/ exige dois tipos de permissão:

  1. Permissão de listagem: Liste objetos em Development/ (oss:ListObjects), com uma Condition que restrinja a listagem ao prefixo Development.

  2. Permissões de leitura e gravação: Leia e carregue arquivos em Development/ (oss:GetObject, oss:PutObject), com Resource definido como examplebucket/Development/*.

Crie e anexe uma política

  1. Acesse a página Policies no console do RAM e clique em Create Policy.

  2. Na aba JSON, insira o seguinte documento de política:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "oss:ListObjects",
          "Resource": "acs:oss:*:*:examplebucket",
          "Condition": {
            "StringLike": {
              "oss:Prefix": [
                "Development",
                "Development/*"
              ]
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "oss:GetObject",
            "oss:PutObject",
            "oss:GetObjectAcl"
          ],
          "Resource": "acs:oss:*:*:examplebucket/Development/*"
        }
      ]
    }

    Análise da política:

    • Primeira instrução: Concede permissão de listagem no bucket, usando Condition com oss:Prefix para restringir a listagem ao diretório Development e seus subdiretórios.

    • Segunda instrução: Concede acesso de leitura e gravação a todos os objetos sob Development/*.

  3. Clique em OK, insira um Policy Name (como AllowAnneAccessDevelopment) e clique em OK para concluir a criação.

  4. Acesse a página Users, localize a usuária do RAM Anne e clique em add permissions para anexar a política recém-criada.

Etapa 4: Conceder acesso somente leitura ao diretório Marketing

Crie e anexe uma política de somente leitura para o usuário do RAM Leo seguindo o mesmo procedimento da Etapa 3. Esta política inclui apenas operações de leitura em Action:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "oss:ListObjects",
      "Resource": "acs:oss:*:*:examplebucket",
      "Condition": {
        "StringLike": {
          "oss:Prefix": [
            "Marketing",
            "Marketing/*"
          ]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "oss:GetObject",
        "oss:GetObjectAcl"
      ],
      "Resource": "acs:oss:*:*:examplebucket/Marketing/*"
    }
  ]
}

Como oss:PutObject foi excluído de Action, o Leo pode ler arquivos, mas não pode carregá-los ou modificá-los.

Etapa 5: Negar acesso ao diretório Private

Adicione os usuários do RAM que não devem acessar a pasta Private/ a um grupo de usuários e, em seguida, anexe uma política de negação ao grupo.

Nota

Isso se aplica apenas aos membros do grupo. Para negar acesso a todos os usuários do RAM na sua conta, incluindo futuros usuários, use uma bucket policy.

Crie um grupo de usuários e adicione membros

  1. Acesse a lista de grupos de usuários do RAM e clique em Create User Group para criar um grupo (por exemplo, DenyPrivateAccessGroup).

  2. Clique em Add Group Members e adicione ao grupo os usuários do RAM que precisam ter o acesso negado à pasta Private/.

Crie e anexe uma política de negação

  1. Acesse a página Policies no console do RAM e clique em Create Policy.

  2. Na aba JSON, insira o seguinte documento de política:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Deny",
          "Action": "oss:*",
          "Resource": "acs:oss:*:*:examplebucket/Private/*"
        },
        {
          "Effect": "Deny",
          "Action": "oss:ListObjects",
          "Resource": "acs:oss:*:*:examplebucket",
          "Condition": {
            "StringLike": {
              "oss:Prefix": [
                "Private/",
                "Private/*"
              ]
            }
          }
        }
      ]
    }

    Análise da política:

    • Primeira instrução: Nega todas as operações em objetos sob Private/.

    • Segunda instrução: Nega a listagem do conteúdo de Private/, impedindo que os usuários visualizem a lista de arquivos.

  3. Clique em OK, insira um Policy Name (como DenyAccessPrivateFolder) e clique em OK para concluir a criação.

  4. Acesse a página Groups, localize o grupo de usuários e clique em add permissions para anexar a política recém-criada.

Se um membro do grupo tentar listar ou baixar arquivos na pasta Private/, o OSS retornará um erro de permissão negada.

Documentos relacionados