Uma bucket policy é uma política de autorização baseada em recursos anexada a um bucket. Use bucket policies para conceder acesso entre contas, ative acesso anônimo ou restringir o acesso por endereço IP ou VPC.
Como funciona
Uma bucket policy utiliza um modelo baseado em recursos: ela é anexada 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 negação (Deny) explícita bloqueia a solicitação, independentemente das regras de permissão (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 é 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 sejam o proprietário do bucket.
Quando o principal é 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 (statements) 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.
A chave de condição
acs:SourceIpcorresponde apenas ao endereço IP de source de uma solicitação e não distingue se o endereço IP proviene da rede pública ou de uma VPC. Isso significa que, se você usar apenasacs:SourceIppara restringir o acesso, solicitações de outra VPC que utilize a mesma faixa de endereços IP também serão permitidas, o que cria um risco de acesso não autorizado. Portanto, configure uma Bucket Policy e especifiqueacs:SourceIpe também especifiqueacs:SourceVpcpara identificar explicitamente a source 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, a modificação de uma Bucket Policy existente é tratada como um novo envio e está sujeita a essa restrição.
Configure 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 oferece suporte a todos os recursos de política e combinações complexas de condições.
Método gráfico
Para começar, acesse a lista de Buckets e clique no bucket de destino.
No painel de navegação à esquerda, clique em .
-
selecione Add in GUI e, em seguida, 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
Por favor, especifique o principal ao qual deseja conceder permissões.
All Accounts (*): Concede permissões a qualquer pessoa, incluindo usuários anônimos.
RAM User: Selecione um usuário do RAM que pertença à conta atual do Alibaba Cloud.
A conta conectada deve ser uma conta do Alibaba Cloud (conta raiz) ou um usuário do RAM com permissões de gerenciamento de bucket e a permissão
ListUsersno RAM. Caso contrário, a lista de usuários do RAM não ficará visível.Other Accounts: Insira o UID de outra conta ou usuário do RAM a ser autorizado, ou um usuário temporário com credenciais que comecem com
arn:sts, comoarn:sts::1798**:assumed-role/role-name/session-name. Você pode 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. Em vez disso, use o 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 utilizam 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 provenientes 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 provenham 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 provenientes 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 provenham da VPC especificada.
Ao configurar várias condições, todas as condições devem ser atendidas (uma relação E/AND).
confirme que a configuração está correta e clique em OK para aplicar a Bucket Policy.
Método de sintaxe
Para começar, acesse a lista de Buckets e clique no bucket de destino.
No painel de navegação à esquerda, clique em .
-
Selecione Add by Syntax e, em seguida, clique em Edit e edite a política. No editor, insira a política de autorização no formato JSON.
Exemplo de política: Negar ao usuário
20214760404935xxxxtodas as operações noexample-bucketse uma solicitação de acesso não se originar da VPCvpc-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
1e não pode ser alterado.-
Statement: O corpo principal da política. Contém uma ou mais regras específicas. Cada regra oferece suporte a 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 (Statement). Um identificador exclusivo e legível por humanos para cada instrução na política. Ajuda na diferenciação, no gerenciamento e na 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
AlloweDeny.Nega a solicitação.
Action
A ação específica a ser executada no recurso. O caractere curinga
*é suportado.Nega todas as ações do OSS (
oss:*).Principal
O usuário, conta ou função ao qual a política se aplica.
defina 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-buckete 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 E/AND).
Esta política Deny entra em vigor apenas quando a VPC de source da solicitação não é
vpc-t4nlw426y44rd3iq4xxxx.Referência completa dos elementos da política: Authorization syntax and elements.
Após confirmar que a política de autorização está correta, clique em Save e salve a política. Siga as instruções na tela.
Configure uma vector bucket policy
Os vector buckets suportam apenas o método de sintaxe para configuração de bucket policy.
Para começar, acesse a lista de Vector Buckets e clique no vector bucket de destino.
No painel de navegação à esquerda, clique em .
-
Clique em Edit e edite a política. 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 índiceindextestemvector-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
1e 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
AlloweDeny.Permite a solicitação.
Action
A ação específica a ser executada no recurso. O caractere curinga
*é suportado.Lê e grava dados vetoriais.
Principal
O usuário, conta ou função ao qual a política se aplica.
defina 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
indextestno bucketvector-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 E/AND).
Nenhuma.
Referência completa dos elementos da política: Authorization syntax and elements.
Após confirmar que a política de autorização está correta, clique em Save e salve a política. Siga as instruções na tela.
Configure uma política do 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 habilitado. 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, funções ou todos os usuários específicos. Cada um inclui um exemplo de política que você pode adaptar.
Cenário 1: Conceder permissões de leitura e gravação
Conceda aos membros da equipe ou parceiros acesso de leitura e gravação a um bucket. Este exemplo concede permissões de leitura e gravação no example-bucket aos usuários do RAM 27737962156157xxxx e 20214760404935xxxx.
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 de destino em 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 de somente leitura a diretórios específicos
Conceda acesso de somente leitura a diretórios específicos. Este exemplo concede ao usuário do RAM 20214760404935xxxx permissões de somente leitura em diretórios com os prefixos hangzhou/2020 e shanghai/2015 no example-bucket.
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 de destino em 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 as informações do bucket e visualize os objetos. Este exemplo concede a um usuário do RAM permissões de visualização e listagem no example-bucket.
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 de destino em 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 ou aplicativo do RAM assume a função para obter credenciais temporárias. Este exemplo concede permissões de leitura em todos os objetos no example-bucket para todas as sessões sob uma função do RAM e uma sessão específica sob outra.
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 no 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 source 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.
|
Source do acesso |
Abordagem da política |
Cenário |
|
Qualquer VPC |
Nega solicitações onde acs:SourceVpc não começa com |
|
|
VPC específica |
Nega solicitações onde acs:SourceVpc não é igual ao ID da VPC especificada. |
|
|
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. |
|
|
Faixa de IP específica 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 faixas de IP não especificadas dentro da VPC especificada. |
|
|
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. |
|
|
Todos, exceto um IP específico (lista de bloqueios) |
Nega solicitações do IP especificado e usa um curinga |
|
|
Rede clássica |
Permite o acesso à rede clássica. |
Cenário 1: Restringir o acesso à rede pública
Bloqueie todo o acesso à 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 proveniente de VPC ao 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 no example-bucket.
Como o principal na instrução de negação a seguir é 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 instrução de negação a seguir apenas restringe o acesso e não concede nenhuma permissão. Se o principal não tiver recebido permissões, você pode adicionar 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 endereços IP não especificados): Esta instrução usa
StringNotLike: {"acs:SourceVpc": "vpc-*"}para identificar solicitações de rede pública (o valoracs:SourceVpcpara uma solicitação de rede pública não começa comvpc-). Em seguida, usaNotIpAddress: {"acs:SourceIp": "..."}para negar solicitações que não provenham 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, pois o objetivo é permitir o acesso apenas a partir 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 ao example-bucket para todos os usuários, exceto aqueles provenientes do IP público 203.0.113.5.
Como o principal na instrução de negação a seguir é 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 instrução de negação a seguir apenas restringe o acesso e não concede nenhuma permissão. Se o principal não tiver recebido permissões, você pode adicionar 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 uma faixa de IP em uma VPC
Para restringir o acesso ao bucket a uma faixa de IP específica 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 da faixa de IP especificada dentro da VPC): Esta instrução usa
StringEquals: {"acs:SourceVpc": "..."}para corresponder a solicitações da VPC especificada e, em seguida, usaNotIpAddress: {"acs:SourceIp": "..."}para negar solicitações de fora da faixa de endereços IP especificada. 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 ao example-bucket para todos os usuários, exceto aqueles provenientes da faixa 192.168.0.0/16 dentro da VPC t4nlw426y44rd3iq4xxxx.
Como o principal na instrução de negação a seguir é 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 instrução de negação a seguir apenas restringe o acesso e não concede nenhuma permissão. Se o principal não tiver recebido permissões, você pode adicionar 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, usaNotIpAddress: {"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. As solicitações de VPC não correspondem a esta instrução porque seu valoracs:SourceVpccomeça comvpc-.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, usaStringNotEquals: {"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. As solicitações de rede pública não correspondem a esta instrução porque seu valoracs:SourceVpcnão começa comvpc-.
Uma solicitação é negada se corresponder a qualquer uma das instruções. O exemplo a seguir nega acesso de leitura ao example-bucket para todos os usuários, exceto aqueles provenientes do IP público 203.0.113.5 ou da VPC t4nlw426y44rd3iq4xxxx.
Como o principal na instrução de negação a seguir é 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 instrução de negação a seguir apenas restringe o acesso e não concede nenhuma permissão. Se o principal não tiver recebido permissões, você pode adicionar 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: Defina uma lista de bloqueios de IP
Bloqueie o acesso de endereços IP ou faixas específicas 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.
Como o principal na instrução de negação a seguir é 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.Você pode configurar vários endereços IP e faixas de endereços IP. Separe-os com 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: Configure o 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 service 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 service 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 do 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 do 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 as 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-aclpara criar uma instrução de negação que impede que a ACL do bucket seja definida com qualquer permissão diferente deprivate. 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-aclpara criar uma instrução de negação que impede que uma ACL de objeto seja definida com qualquer permissão diferente deprivateedefault.
Uma solicitação é negada se corresponder a qualquer uma das instruções. O exemplo a seguir nega operações de ACL pública no 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 habilitar 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 é negada.
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"oss:PutObjectRetention"
],
"Principal": [
"*"
],
"Resource": [
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition": {
"NumericGreaterThan": {
"oss:object-remaining-retention-days": "30"
}
}
}
]
}
oss:object-remaining-retention-daysé a chave de condição para uma política ObjectWorm. Ela representa o número de dias de retenção restantes 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, você pode configurar bucket policies usando ferramentas gráficas, ferramentas de CLI e SDKs.
-
Usar a ferramenta gráfica ossbrowser
O ossbrowser fornece 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, em seguida, 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.
NotaPara definir uma política de autorização para um vector bucket, 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.