Todos os produtos
Search
Central de documentação

Object Storage Service:Bucket Policy

Última atualização: Jul 18, 2026

Uma bucket policy é uma política de autorização baseada em recursos anexada a um bucket. Use bucket policies para conceder acesso entre contas, ativar acesso anônimo ou restringir o acesso por endereço IP ou VPC.

Como funciona

A bucket policy utiliza um modelo baseado em recursos: ela se anexa a um bucket e define quais principais podem executar quais ações em quais recursos e sob quais condições.

Quando uma solicitação chega, o OSS avalia todas as políticas relevantes, incluindo bucket policies e políticas do RAM. A avaliação segue o princípio de negação prioritária: qualquer regra Deny explícita bloqueia a solicitação, independentemente das regras Allow. Se não houver nenhuma regra correspondente, a solicitação será negada por padrão.

As bucket policies possuem regras especiais para o proprietário do bucket:

  • Quando o principal está definido como um caractere curinga (*) e a política não inclui uma condição, a política se aplica apenas a usuários que não são o proprietário do bucket.

  • Quando o principal está definido como um caractere curinga (*) e a política inclui uma condição, a política se aplica a todos os usuários, incluindo o proprietário do bucket e usuários anônimos. Uma regra Deny pode tornar todo o bucket inacessível. Uma regra Allow pode expor seus dados a usuários anônimos.

Se várias instruções se aplicarem ao mesmo usuário, as permissões efetivas serão a união de todas as instruções, seguindo o princípio de negação prioritária.

Importante
  • A chave de condição acs:SourceIp corresponde apenas ao endereço IP de origem de uma solicitação e não distingue se o endereço IP é da rede pública ou de uma VPC. Isso significa que, se você usar apenas acs:SourceIp para restringir o acesso, solicitações de outra VPC que use o mesmo intervalo de endereços IP também serão permitidas, o que cria um risco de acesso não autorizado. Portanto, ao configurar uma Bucket Policy, se você especificar acs:SourceIp, também deverá especificar acs:SourceVpc para identificar explicitamente a origem de rede da solicitação.

  • Essa restrição se aplica apenas a novas Bucket Policies. As Bucket Policies existentes não são afetadas. No entanto, modificar uma Bucket Policy existente é tratado como um novo envio e está sujeito a essa restrição.

Configurar uma bucket policy

O OSS fornece dois métodos de configuração: gráfico e sintaxe.

  • Método gráfico: Interface baseada em formulários para cenários comuns de autorização.

  • Método de sintaxe: Editor baseado em JSON que suporta todos os recursos de política e combinações complexas de condições.

Método gráfico

  1. Acesse a lista de Buckets e clique em no bucket desejado.

  2. No painel de navegação à esquerda, clique em Permission Control > Bucket Policy.

  3. Selecione Add in GUI e clique em Authorize.

    Parâmetro

    Descrição

    Applied To

    Selecione se deseja conceder permissões em Whole Bucket ou em Specific Resources.

    Resource Paths

    • Se você definir Applied To como Whole Bucket, Resource Paths será definido como bucket-name/*.

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

    Authorized User

    Especifique o principal para conceder permissões.

    • All Accounts (*): Concede permissões a qualquer pessoa, incluindo um usuário anônimo.

    • RAM User: Selecione um usuário do RAM que pertença à conta atual da Alibaba Cloud.

      A conta conectada deve ser uma conta da Alibaba Cloud (conta raiz) ou um usuário do RAM com permissões de gerenciamento de bucket e a permissão ListUsers no RAM. Caso contrário, a lista de usuários do RAM não estará visível.

    • Other Accounts: Insira o UID de outra conta ou usuário do RAM para autorizar, ou um usuário temporário com credenciais que começam com arn:sts, como arn:sts::1798**:assumed-role/role-name/session-name. É possível autorizar vários usuários. Insira um usuário por linha.

      Se as permissões forem concedidas a uma função do RAM, a função não poderá acessar recursos pelo console do OSS. Use ossutil, um SDK ou uma API.

    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 Operation.

    Condition (Opcional)

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

    • Access Method: As opções incluem HTTPS e HTTP. Após selecionar uma opção, a política entra em vigor apenas para solicitações de acesso que usam o método selecionado.

    • IP =: Insira uma lista de endereços IP. Se você selecionar esta opção, a política entrará em vigor apenas para solicitações de acesso dos endereços IP especificados.

    • IP ≠: Insira uma lista de endereços IP. Se você selecionar esta opção, a política entrará em vigor apenas para solicitações de acesso que não sejam dos endereços IP especificados.

    • VPC =: Selecione uma VPC que pertença à conta atual ou insira uma VPC que pertença a outra conta. Se você selecionar esta opção, a política entrará em vigor apenas para solicitações de acesso da VPC especificada.

    • VPC ≠: Selecione uma VPC que pertença à conta atual ou insira uma VPC que pertença a outra conta. Se você selecionar esta opção, a política entrará em vigor apenas para solicitações de acesso que não sejam da VPC especificada.

    Ao configurar várias condições, todas as condições devem ser atendidas (uma relação AND).

  4. Após confirmar que a configuração está correta, clique em OK para aplicar a Bucket Policy.

Método de sintaxe

  1. Acesse a lista de Buckets e clique em no bucket desejado.

  2. No painel de navegação à esquerda, clique em Permission Control > Bucket Policy.

  3. Selecione Add by Syntax e clique em Edit. No editor, insira a política de autorização no formato JSON.

    Exemplo de política: Negar ao usuário 20214760404935xxxx todas as operações em example-bucket se uma solicitação de acesso não se originar da VPC vpc-t4nlw426y44rd3iq4xxxx.

    {
        "Version": "1",
        "Statement": [
            {
                "Sid": "DenyNonVpcAccess",
                "Effect": "Deny",
                "Action": "oss:*",
                "Principal": [
                    "20214760404935xxxx"
                ],
                "Resource": [
                    "acs:oss:*:174649585760xxxx:example-bucket",
                    "acs:oss:*:174649585760xxxx:example-bucket/*"
                ],
                "Condition": {
                    "StringNotEquals": {
                        "acs:SourceVpc": "vpc-t4nlw426y44rd3iq4xxxx"
                    }
                }
            }
        ]
    }

    Uma política de autorização completa inclui uma Version e uma Statement.

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

    • Statement: O corpo principal da política. Contém uma ou mais regras específicas. Cada regra suporta um Sid opcional e inclui um Effect, uma Action, um Principal, um Resource e uma Condition.

      Elemento da política

      Descrição

      Significado no exemplo

      Sid (opcional)

      ID da instrução. Um identificador exclusivo e legível por humanos para cada instrução na política. Ajuda na diferenciação, gerenciamento e auditoria, e não afeta as permissões em si.

      Identifica a instrução de negação como DenyNonVpcAccess.

      Effect

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

      Nega a solicitação.

      Action

      A ação específica a ser executada no recurso. O caractere curinga * é suportado.

      Negar todas as ações do OSS (oss:*).

      Principal

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

      Definir o campo Principal como uma lista vazia (Principal:[]) é idêntico a defini-lo para todas as contas (Principal:["*"]).

      A política se aplica apenas ao usuário do RAM 20214760404935xxxx.

      Resource

      Os recursos aos quais a política se aplica.

      A política se aplica ao próprio bucket example-bucket e a todos os objetos dentro dele.

      Condition

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

      Ao configurar várias condições, todas as condições devem ser atendidas (uma relação AND).

      Esta política Deny entra em vigor apenas quando a VPC de origem da solicitação não é vpc-t4nlw426y44rd3iq4xxxx.

      Referência completa de elementos de política: Authorization syntax and elements.

  4. Após confirmar que a política de autorização está correta, clique em Save e siga as instruções na tela.

Configurar uma política de bucket vetorial

Buckets vetoriais suportam apenas o método de sintaxe para configuração de bucket policy.

  1. Acesse a lista de Vector Buckets e clique em no bucket vetorial desejado.

  2. No painel de navegação à esquerda, clique em Permission Control > Bucket Policy.

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

    Exemplo de política: Conceder ao usuário 20816353761158**** permissão para ler e gravar dados vetoriais na tabela de índice indextest em vector-bucket-example.

    {
      "Version": "1",
      "Statement": [{
        "Effect": "Allow",
        "Action": [
          "oss:PutVectors",
          "oss:GetVectors"
        ],
        "Principal": [
          "20816353761158****"
        ],
        "Resource": [
          "acs:ossvector:*:*:vector-bucket-example/indextest"
        ]
      }]
    }

    Uma política de autorização completa inclui uma Version e uma Statement.

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

    • Statement: O corpo principal da política. Contém uma ou mais regras específicas. Cada regra inclui um Effect, uma Action, um Principal, um Resource e uma Condition.

      Elemento da política

      Descrição

      Significado no exemplo

      Effect

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

      Permite a solicitação.

      Action

      A ação específica a ser executada no recurso. O caractere curinga * é suportado.

      Ler e gravar dados vetoriais.

      Principal

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

      Definir o campo Principal como uma lista vazia (Principal:[]) é idêntico a defini-lo para todas as contas (Principal:["*"]).

      A política se aplica apenas ao usuário do RAM 20816353761158****.

      Resource

      Os recursos aos quais a política se aplica.

      A política se aplica à tabela de índice indextest no bucket vector-bucket-example.

      Condition

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

      Ao configurar várias condições, todas as condições devem ser atendidas (uma relação AND).

      Nenhuma.

      Referência completa de elementos de política: Authorization syntax and elements.

  4. Após confirmar que a política de autorização está correta, clique em Save e siga as instruções na tela.

Configurar uma política OSS-HDFS

Para garantir que os usuários do service OSS-HDFS possam acessar o diretório .dlsdata/ e seus objetos, não defina a operação autorizada como Deny Access ao configurar uma Bucket Policy para um bucket com OSS-HDFS ativado. Prerequisites for using OSS-HDFS.

Para restringir o acesso a endereços IP de rede específicos ou a uma VPC, adicione a seguinte condição a todas as instruções Deny. Isso garante que o service de backend do OSS-HDFS possa ler e gravar no bucket pela rede clássica.

"StringNotLike": {
    "oss:ClassicIntranet": [
        "true"
    ]
}

Cenários comuns: Concessão de permissões

Os cenários a seguir demonstram a concessão de acesso a usuários específicos, funções ou todos os usuários. Cada um inclui um exemplo de política adaptável.

Cenário 1: Conceder permissões de leitura/gravação

Conceda aos membros da equipe ou parceiros acesso de leitura/gravação a um bucket. Este exemplo concede permissões de leitura/gravação em example-bucket aos usuários do RAM 27737962156157xxxx e 20214760404935xxxx.

Nota

Esta política não concede permissão para listar buckets. Os usuários do RAM não podem navegar diretamente na página Buckets. Em vez disso, eles podem adicionar o bucket desejado em My Favorite Paths > + no painel de navegação à esquerda.

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Allow",
            "Action":[
                "oss:GetObject",
                "oss:PutObject",
                "oss:GetObjectAcl",
                "oss:PutObjectAcl",
                "oss:AbortMultipartUpload",
                "oss:ListParts",
                "oss:RestoreObject",
                "oss:GetVodPlaylist",
                "oss:PostVodPlaylist",
                "oss:PublishRtmpStream",
                "oss:ListObjectVersions",
                "oss:GetObjectVersion",
                "oss:GetObjectVersionAcl",
                "oss:RestoreObjectVersion"
            ],
            "Principal":[
                "27737962156157xxxx",
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ]
        },
        {
            "Effect":"Allow",
            "Action":[
                "oss:ListObjects"
            ],
            "Principal":[
                "27737962156157xxxx",
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket"
            ],
            "Condition":{
                "StringLike":{
                    "oss:Prefix":[
                        "*"
                    ]
                }
            }
        }
    ]
}

Cenário 2: Conceder permissões somente leitura a diretórios específicos

Conceda acesso somente leitura a diretórios específicos. Este exemplo concede ao usuário do RAM 20214760404935xxxx permissões somente leitura em diretórios com os prefixos hangzhou/2020 e shanghai/2015 em example-bucket.

Nota

Esta política não concede permissão para listar buckets. Os usuários do RAM não podem navegar diretamente na página Buckets. Em vez disso, eles podem adicionar o bucket desejado em My Favorite Paths > + no painel de navegação à esquerda.

{
    "Version":"1",
    "Statement":[
        {
            "Action":[
                "oss:GetObject",
                "oss:GetObjectAcl",
                "oss:GetObjectVersion",
                "oss:GetObjectVersionAcl"
            ],
            "Effect":"Allow",
            "Principal":[
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/hangzhou/2020/*",
                "acs:oss:*:174649585760xxxx:example-bucket/shanghai/2015/*"
            ]
        },
        {
            "Action":[
                "oss:ListObjects",
                "oss:ListObjectVersions"
            ],
            "Condition":{
                "StringLike":{
                    "oss:Prefix":[
                        "hangzhou/2020/*",
                        "shanghai/2015/*"
                    ]
                }
            },
            "Effect":"Allow",
            "Principal":[
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket"
            ]
        }
    ]
}

Cenário 3: Conceder permissões de visualização e listagem

Permita que um usuário visualize informações do bucket e liste objetos. Este exemplo concede a um usuário do RAM permissões de visualização e listagem em example-bucket.

Nota

Esta política não concede permissão para listar buckets. Os usuários do RAM não podem navegar diretamente na página Buckets. Em vez disso, eles podem adicionar o bucket desejado em My Favorite Paths > + no painel de navegação à esquerda.

{
    "Version":"1",
    "Statement":[
        {
            "Action":[
                "oss:Get*",
                "oss:ListObjects",
                "oss:ListObjectVersions"
            ],
            "Effect":"Allow",
            "Principal":[
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket"
            ]
        }
    ]
}

Cenário 4: Conceder permissões de leitura a uma função do RAM

Conceda acesso temporário aos objetos do bucket por meio de uma função do RAM. Um usuário do RAM ou aplicativo assume a função para obter credenciais temporárias. Este exemplo concede permissões de leitura em todos os objetos em example-bucket para todas as sessões sob uma função do RAM e uma sessão específica sob outra.

Nota

Ao conceder permissões a uma função do RAM, o Principal deve seguir este formato: arn:sts::<uid>:assumed-role/<role-name>/<session-name>. Os valores para <role-name> e <session-name> devem estar todos em minúsculas.

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "oss:GetObject"
            ],
            "Effect": "Allow",
            "Principal": [
                "arn:sts::10323xxxxx72056:assumed-role/role-name/session-name",
                "arn:sts::10323xxxxx72056:assumed-role/role2-name/*"
            ],
            "Resource": [
                "acs:oss:*:10323xxxxx72056:example-bucket/*"
            ]
        }
    ]
}

Cenário 5: Conceder permissões de listagem a todos os usuários

Permita que todos os usuários listem objetos sem acessar seu conteúdo. Este exemplo concede a todos os usuários (*) permissões de listagem em example-bucket.

{
    "Version":"1",
    "Statement":[
        {
            "Action":[
                "oss:ListObjects",
                "oss:ListObjectVersions"
            ],
            "Effect":"Allow",
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket"
            ]
        }
    ]
}

Cenários comuns: Restrição de acesso à rede

Os cenários a seguir restringem o acesso ao bucket com base na origem da rede (IP público ou VPC) usando as chaves de condição acs:SourceIp e acs:SourceVpc. A tabela abaixo resume as abordagens comuns.

Origem do acesso

Abordagem da política

Cenário

Qualquer VPC

Negar solicitações onde acs:SourceVpc não começa com vpc-*.

Scenario 1: Restrict public network access

VPC específica

Negar solicitações onde acs:SourceVpc não é igual ao ID da VPC especificada.

Scenario 2: Restrict access to a specific VPC

IP público específico

A Instrução 1 nega solicitações de rede pública de endereços IP não especificados; a Instrução 2 nega todas as solicitações de VPC.

Scenario 3: Restrict access to a specific public IP address

Intervalo de IP específico dentro de uma VPC específica

A Instrução 1 nega solicitações de VPCs não especificadas; a Instrução 2 nega solicitações de intervalos de IP não especificados dentro da VPC especificada.

Scenario 4: Restrict access to an IP range in a VPC

IP público específico ou VPC específica

A Instrução 1 nega solicitações de rede pública de endereços IP não especificados; a Instrução 2 nega solicitações de VPC de VPCs não especificadas.

Scenario 5: Restrict access to a public IP or VPC

Todos, exceto um IP específico (lista de bloqueios)

Negar solicitações do IP especificado e usar um curinga * para SourceVpc para satisfazer a restrição.

Scenario 6: Set an IP blacklist

Rede clássica

Permitir acesso à rede clássica.

Scenario 7: Configure classic network access

Cenário 1: Restringir o acesso à rede pública

Bloqueie todo o acesso da rede pública a um bucket adicionando uma instrução de negação com a chave de condição acs:SourceVpc. Esta instrução nega solicitações que não se originam de uma VPC. O exemplo a seguir nega todo o acesso não-VPC a example-bucket.

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "oss:*",
      "Principal": [
        "*"
      ],
      "Resource": [
        "acs:oss:*:174649585760xxxx:example-bucket/*",
        "acs:oss:*:174649585760xxxx:example-bucket"
      ],
      "Condition": {
        "StringNotLike": {
          "acs:SourceVpc": [
            "vpc-*"
          ]
        }
      }
    }
  ]
}

Cenário 2: Restringir o acesso a uma VPC específica

Restrinja o acesso ao bucket a uma VPC específica usando a chave de condição acs:SourceVpc. Esta instrução bloqueia solicitações de outras VPCs ou da rede pública. O exemplo a seguir nega a todos os usuários fora da VPC t4nlw426y44rd3iq4xxxx a leitura de objetos em example-bucket.

Nota
  • Como o principal na seguinte instrução de negação é um caractere curinga (*) e uma condição está incluída, a instrução de negação se aplica a todos os usuários, incluindo o proprietário do bucket.

  • A seguinte instrução de negação apenas restringe o acesso e não concede nenhuma permissão. Se o principal não tiver recebido permissões, adicione uma instrução de permissão para conceder as permissões necessárias.

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringNotEquals":{
                    "acs:SourceVpc":[
                        "vpc-t4nlw426y44rd3iq4xxxx"
                    ]
                }
            }
        }
    ]
}

Cenário 3: Restringir o acesso a um endereço IP público específico

Para restringir o acesso ao bucket a um endereço IP público específico, crie duas instruções de negação:

  • Instrução 1 (Negar solicitações de rede pública de IPs não especificados): Esta instrução usa StringNotLike: {"acs:SourceVpc": "vpc-*"} para identificar solicitações de rede pública (o valor acs:SourceVpc para uma solicitação de rede pública não começa com vpc-). Em seguida, usa NotIpAddress: {"acs:SourceIp": "..."} para negar solicitações que não sejam do endereço IP especificado. A ação de negação é acionada quando ambas as condições são atendidas.

  • Instrução 2 (Negar todas as solicitações de VPC): Esta instrução usa StringLike: {"acs:SourceVpc": "vpc-*"} para corresponder e negar todas as solicitações de qualquer VPC, já que o objetivo é permitir o acesso apenas do endereço IP público especificado.

Uma solicitação é negada se corresponder a qualquer uma das instruções. O exemplo a seguir nega acesso de leitura a example-bucket para todos os usuários, exceto aqueles provenientes do IP público 203.0.113.5.

Nota
  • Como o principal na seguinte instrução de negação é um caractere curinga (*) e uma condição está incluída, a instrução de negação se aplica a todos os usuários, incluindo o proprietário do bucket.

  • A seguinte instrução de negação apenas restringe o acesso e não concede nenhuma permissão. Se o principal não tiver recebido permissões, adicione uma instrução de permissão para conceder as permissões necessárias.

{
  "Version": "1",
  "Statement": [{
    "Effect": "Deny",
    "Action": [
      "oss:GetObject"
    ],
    "Principal": [
      "*"
    ],
    "Resource": [
      "acs:oss:*:174649585760xxxx:example-bucket/*"
    ],
    "Condition": {
      "NotIpAddress": {
        "acs:SourceIp": [
          "203.0.113.5"
        ]
      },
      "StringNotLike": {
        "acs:SourceVpc": [
          "vpc-*"
        ]
      }
    }
  },
    {
      "Effect": "Deny",
      "Action": [
        "oss:GetObject"
      ],
      "Principal": [
        "*"
      ],
      "Resource": [
        "acs:oss:*:174649585760xxxx:example-bucket/*"
      ],
      "Condition": {
        "StringLike": {
          "acs:SourceVpc": [
            "vpc-*"
          ]
        }
      }
    }
  ]
}

Cenário 4: Restringir o acesso a um intervalo de IPs em uma VPC

Para restringir o acesso ao bucket a um intervalo de IPs específico dentro de uma VPC específica, crie duas instruções de negação:

  • Instrução 1 (Negar todas as solicitações de fora da VPC especificada): Esta instrução usa StringNotEquals: {"acs:SourceVpc": "..."} para negar solicitações de outras VPCs e da rede pública.

  • Instrução 2 (Negar solicitações de fora do intervalo de IPs especificado dentro da VPC): Esta instrução usa StringEquals: {"acs:SourceVpc": "..."} para corresponder a solicitações da VPC especificada e, em seguida, usa NotIpAddress: {"acs:SourceIp": "..."} para negar solicitações de fora do intervalo de endereços IP especificado. A ação de negação é acionada quando ambas as condições são atendidas.

Uma solicitação é negada se corresponder a qualquer uma das instruções. O exemplo a seguir nega acesso de leitura a example-bucket para todos os usuários, exceto aqueles provenientes do intervalo 192.168.0.0/16 dentro da VPC t4nlw426y44rd3iq4xxxx.

Nota
  • Como o principal na seguinte instrução de negação é um caractere curinga (*) e uma condição está incluída, a instrução de negação se aplica a todos os usuários, incluindo o proprietário do bucket.

  • A seguinte instrução de negação apenas restringe o acesso e não concede nenhuma permissão. Se o principal não tiver recebido permissões, adicione uma instrução de permissão para conceder as permissões necessárias.

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringNotEquals":{
                    "acs:SourceVpc":[
                        "vpc-t4nlw426y44rd3iq4xxxx"
                    ]
                }
            }
        },
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringEquals":{
                    "acs:SourceVpc":[
                        "vpc-t4nlw426y44rd3iq4xxxx"
                    ]
                },
                "NotIpAddress":{
                    "acs:SourceIp":[
                        "192.168.0.0/16"
                    ]
                }
            }
        }
    ]
}

Cenário 5: Restringir o acesso a um IP público ou VPC

Para restringir o acesso ao bucket a um IP público específico ou a uma VPC específica, crie duas instruções de negação:

  • Instrução 1 (Para solicitações de rede pública, negar IPs não especificados): Esta instrução usa StringNotLike: {"acs:SourceVpc": "vpc-*"} para identificar solicitações de rede pública e, em seguida, usa NotIpAddress: {"acs:SourceIp": "..."} para negar solicitações de endereços IP públicos não especificados. A ação de negação é acionada quando ambas as condições são atendidas. Solicitações de VPC não correspondem a esta instrução porque seu valor acs:SourceVpc começa com vpc-.

  • Instrução 2 (Para solicitações de VPC, negar VPCs não especificadas): Esta instrução usa StringLike: {"acs:SourceVpc": "vpc-*"} para identificar solicitações de VPC e, em seguida, usa StringNotEquals: {"acs:SourceVpc": "..."} para negar solicitações de VPCs não especificadas. A ação de negação é acionada quando ambas as condições são atendidas. Solicitações de rede pública não correspondem a esta instrução porque seu valor acs:SourceVpc não começa com vpc-.

Uma solicitação é negada se corresponder a qualquer uma das instruções. O exemplo a seguir nega acesso de leitura a example-bucket para todos os usuários, exceto aqueles provenientes do IP público 203.0.113.5 ou da VPC t4nlw426y44rd3iq4xxxx.

Nota
  • Como o principal na seguinte instrução de negação é um caractere curinga (*) e uma condição está incluída, a instrução de negação se aplica a todos os usuários, incluindo o proprietário do bucket.

  • A seguinte instrução de negação apenas restringe o acesso e não concede nenhuma permissão. Se o principal não tiver recebido permissões, adicione uma instrução de permissão para conceder as permissões necessárias.

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringNotLike":{
                    "acs:SourceVpc":[
                        "vpc-*"
                    ]
                },
                "NotIpAddress":{
                    "acs:SourceIp":[
                        "203.0.113.5"
                    ]
                }
            }
        },
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringLike":{
                    "acs:SourceVpc":[
                        "vpc-*"
                    ]
                },
                "StringNotEquals":{
                    "acs:SourceVpc":[
                        "vpc-t4nlw426y44rd3iq4xxxx"
                    ]
                }
            }
        }
    ]
}

Cenário 6: Definir uma lista de bloqueios de IP

Bloqueie o acesso de endereços IP ou intervalos específicos adicionando uma instrução de negação à bucket policy.

A condição StringLike: {"acs:SourceVpc": "*"} usa um curinga para corresponder a todos os valores e não restringe o escopo da VPC. Ela existe apenas para satisfazer a restrição de que acs:SourceIp requer uma condição acs:SourceVpc correspondente.

Nota
  • Como o principal na seguinte instrução de negação é um caractere curinga (*) e uma condição está incluída, a instrução de negação se aplica a todos os usuários, incluindo o proprietário do bucket.

  • É possível configurar vários endereços IP e intervalos de endereços IP. Separe-os por vírgulas.

{
  "Version": "1",
  "Statement": [{
    "Effect": "Deny",
    "Action": "oss:*",
    "Principal": [
      "*"
    ],
    "Resource": [
      "acs:oss:*:174649585760xxxx:example-bucket/*",
      "acs:oss:*:174649585760xxxx:example-bucket"
    ],
    "Condition": {
      "IpAddress": {
        "acs:SourceIp": [
          "101.***.***.100"
        ]
      },
      "StringLike": {
        "acs:SourceVpc": [
          "*"
        ]
      }
    }
  }]
}

Cenário 7: Configurar acesso à rede clássica

A chave de condição oss:ClassicIntranet indica se uma solicitação se origina da rede clássica do OSS. Os valores válidos são true e false. Alguns services de backend do OSS (como entrega de logs e inventário de bucket) acessam buckets pela rede clássica. Use a seguinte condição para corresponder a solicitações da rede clássica.

"Condition": {
    "StringEquals": {
        "oss:ClassicIntranet": [
            "true"
        ]
    }
}

Ao configurar restrições de acesso à rede (políticas Deny), para permitir os services de backend acima, adicione a seguinte condição ao bloco Condition da instrução Deny para excluir solicitações da rede clássica e evitar bloqueios não intencionais.

"StringNotEquals": {
    "oss:ClassicIntranet": [
        "true"
    ]
}

Cenários comuns: Controles de segurança

Os cenários a seguir aplicam controles de segurança: restrições de credenciais, prevenção de acesso público e limites de política de retenção.

Cenário 1: Exigir credenciais temporárias para chamadas de API

Exija credenciais de acesso temporárias para chamadas de API. Esta política usa a chave de condição acs:AccessId para bloquear o acesso de credenciais de longo prazo (conta da Alibaba Cloud ou chaves de acesso de usuário do RAM). O exemplo a seguir nega a todos os usuários sem credenciais temporárias (começando com TMP. ou STS.) a visualização de example-bucket e a listagem de seus objetos.

{
    "Version": "1",
    "Statement": [
        {            
            "Effect": "Deny",
            "Action":[
                "oss:Get*",
                "oss:ListObjects",
                "oss:ListObjectVersions"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "acs:AccessId": [
                        "TMP.*",
                        "STS.*"
                 ]
                }
            }
        }
    ]
}

Cenário 2: Proibir ACLs públicas

Impeça que ACLs de bucket e objeto sejam definidas como públicas. Crie duas instruções de negação:

  • Use a chave de condição oss:x-oss-acl para criar uma instrução de negação que impeça que a ACL do bucket seja definida com qualquer permissão diferente de private. Qualquer tentativa de definir uma ACL de leitura pública ou leitura/gravação pública aciona a regra de negação.

  • Use a chave de condição oss:x-oss-object-acl para criar uma instrução de negação que impeça que uma ACL de objeto seja definida com qualquer permissão diferente de private e default.

Uma solicitação é negada se corresponder a qualquer uma das instruções. O exemplo a seguir nega operações de ACL pública em example-bucket.

{
    "Version": "1",
    "Statement": [
        {            
            "Effect": "Deny",
            "Action": [
                "oss:PutBucketAcl"
            ],
            "Principal": [
                "*"
            ],
            "Resource": [
                "acs:oss:*:*:example-bucket"
            ],
            "Condition": {
                "StringNotEquals": {
                    "oss:x-oss-acl": "private"
                }
            }
        },
        {            
            "Effect": "Deny",
            "Action": [
                "oss:PutObjectAcl"
            ],
            "Principal": [
                "*"
            ],
            "Resource": [
                "acs:oss:*:*:example-bucket/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "oss:x-oss-object-acl": [
                        "private",
                        "default"
                    ]
                }
            }
        }
    ]
}

Cenário 3: Limitar o período de retenção do ObjectWorm

Depois de ativar uma política de retenção no nível do objeto (ObjectWorm) para um bucket, use uma bucket policy para limitar o período máximo de retenção. O exemplo a seguir limita a retenção a 30 dias. Qualquer solicitação PutObjectRetention que exceda 30 dias será negada.

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "oss:PutObjectRetention"
      ],
      "Principal": [
        "*"
      ],
      "Resource": [
        "acs:oss:*:174649585760xxxx:example-bucket/*"
      ],
      "Condition": {
        "NumericGreaterThan": {
          "oss:object-remaining-retention-days": "30"
        }
      }
    }
  ]
}
Nota
  • oss:object-remaining-retention-days é a chave de condição para uma política ObjectWorm. Ela representa o número de dias restantes de retenção especificados na solicitação.

  • Como o principal nesta política é um caractere curinga (*) e uma condição está incluída, a política se aplica a todos os usuários, incluindo o proprietário do bucket.

Desenvolvimento e integração de ferramentas

Além do console, é possível configurar bucket policies usando ferramentas gráficas, ferramentas CLI e SDKs.

  • Usar a ferramenta gráfica ossbrowser

    O ossbrowser oferece uma experiência visual, semelhante ao console, para operações de política no nível do bucket. Instale e faça login no ossbrowser e configure a política.

  • Usar a ferramenta de linha de comando ossutil

    Defina a política de autorização usando o comando put-bucket-policy.

    Nota

    Para definir uma política de autorização para um bucket vetorial, execute o comando ossutil vectors-api put-bucket-policy.

  • Usar um SDK

    Configure políticas usando SDKs como Java SDK, Python SDK, Go SDK e Node.js SDK. O SDK reference abrange todas as linguagens suportadas.

  • Chamar uma API diretamente

    Chame a operação PutBucketPolicy para definir uma política de autorização de bucket.

Cotas e limites

  • Tamanho da política: Um bucket pode ter várias instruções de Bucket Policy, mas o tamanho total de todas as políticas não pode exceder 16 KB.

  • Comprimento do campo: O comprimento de cada campo em uma Bucket Policy não pode exceder 4.095 bytes.

Documentos relacionados