Crie políticas personalizadas do RAM para controlar quais recursos do OSS seus usuários do RAM podem acessar e como.
Políticas do sistema e pré-requisitos
-
Duas políticas do sistema cobrem padrões comuns de acesso ao OSS:
AliyunOSSFullAccess: concede permissões totais de gerenciamento em todos os buckets do OSS.
AliyunECSReadOnlyAccess: concede permissões somente leitura nos buckets do OSS.
O Alibaba Cloud gerencia as políticas do sistema (como AliyunOSSFullAccess e AliyunOSSReadOnlyAccess); portanto, não é possível modificá-las. Se as permissões de uma política do sistema não atenderem aos seus requisitos, crie uma política personalizada para obter controle de acesso granular. Você pode editar e modificar políticas personalizadas.
Antes de escrever políticas, revise as permissões disponíveis do OSS. Para mais informações, consulte RAM Policy.
Conceder acesso ao OSS a um usuário do RAM
Crie um usuário do RAM./@cmd Para mais informações, consulte Create a RAM user.
Crie uma política personalizada./@cmd Para mais informações, consulte Create a custom policy e Policy examples.
Anexe a política ao usuário do RAM./@cmd Para mais informações, consulte Manage RAM user permissions.
Exemplos de políticas
-
Exemplo 1: Conceder acesso total de gerenciamento a um bucket específico
Esta política concede a um usuário do RAM todas as operações do OSS (
oss:*) no bucketmyphotose em todos os objetos contidos nele.{ "Version": "1", "Statement": [ { "Sid": "AllowFullAccessToMyphotos", "Effect": "Allow", "Action": "oss:*", "Resource": [ "acs:oss:*:*:myphotos", "acs:oss:*:*:myphotos/*" ] } ] } -
Exemplo 2: Conceder acesso somente leitura a um bucket
Esta política permite que um usuário do RAM liste objetos e leia seu conteúdo no bucket
myphotos. As permissões necessárias variam conforme o usuário acessa o OSS via SDK/CLI ou pelo console do OSS.-
Acesso via SDK e CLI
São necessárias duas instruções: uma para listar objetos no bucket e outra para ler objetos individuais.
{ "Version": "1", "Statement": [ { "Sid": "AllowListObjectsInMyphotos", "Effect": "Allow", "Action": "oss:ListObjects", "Resource": "acs:oss:*:*:myphotos" }, { "Sid": "AllowGetObjectsInMyphotos", "Effect": "Allow", "Action": "oss:GetObject", "Resource": "acs:oss:*:*:myphotos/*" } ] } -
Acesso pelo console do OSS
O console exige permissões adicionais além das necessárias para o SDK/CLI.
NotaQuando um usuário do RAM faz login no console do OSS, as operações
ListBuckets,GetBucketAcleGetObjectAclsão chamadas para verificar se o bucket é público.A primeira instrução concede operações de visibilidade no nível do console para todos os buckets. A segunda e a terceira instruções concedem acesso de listagem e leitura restritos ao bucket
myphotos.{ "Version": "1", "Statement": [ { "Sid": "AllowConsoleVisibility", "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": "acs:oss:*:*:*" }, { "Sid": "AllowListObjectsInMyphotos", "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetBucketAcl" ], "Resource": "acs:oss:*:*:myphotos" }, { "Sid": "AllowGetObjectsInMyphotos", "Effect": "Allow", "Action": [ "oss:GetObject", "oss:GetObjectAcl" ], "Resource": "acs:oss:*:*:myphotos/*" } ] }
-
-
Exemplo 3: Restringir acesso a endereços IP específicos
Use o elemento
Conditionpara limitar quais endereços IP podem acessar o bucketmyphotos. Escolha entre uma abordagem de lista de permissões ou lista de bloqueios.-
Lista de permissões de IP (Allow com condição de IP)
Esta política concede acesso de leitura ao bucket
myphotosapenas quando a solicitação se origina do bloco CIDR192.168.0.0/16ou172.16.1.0/16. A condição de IP aplica-se somente à instrução de acesso a dados; a instruçãoAllowpara visibilidade no console permanece sem restrições.{ "Version": "1", "Statement": [ { "Sid": "AllowConsoleVisibility", "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": [ "acs:oss:*:*:*" ] }, { "Sid": "AllowReadFromAllowedIPs", "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetObject" ], "Resource": [ "acs:oss:*:*:myphotos", "acs:oss:*:*:myphotos/*" ], "Condition": { "IpAddress": { "acs:SourceIp": ["192.168.0.0/16", "172.16.1.0/16"] } } } ] } -
Lista de bloqueios de IP (Deny com condição de IP)
Esta política nega explicitamente todas as operações do OSS quando a solicitação vem de um endereço IP fora do bloco CIDR
192.168.0.0/16. Um usuário do RAM fora desse intervalo não consegue acessar nem gerenciar o bucketmyphotos.As duas primeiras instruções concedem as permissões
Allownecessárias; a terceira aplica o Deny. Ambas são obrigatórias: o Allow concede acesso e o Deny o substitui para IPs fora do intervalo permitido.{ "Version": "1", "Statement": [ { "Sid": "AllowConsoleVisibility", "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": [ "acs:oss:*:*:*" ] }, { "Sid": "AllowReadFromMyphotos", "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetObject" ], "Resource": [ "acs:oss:*:*:myphotos", "acs:oss:*:*:myphotos/*" ] }, { "Sid": "DenyAccessFromOutsideAllowedIP", "Effect": "Deny", "Action": "oss:*", "Resource": [ "acs:oss:*:*:*" ], "Condition": { "NotIpAddress": { "acs:SourceIp": ["192.168.0.0/16"] } } } ] }NotaUma instrução Deny tem prioridade sobre uma instrução Allow. Quando um usuário do RAM tenta ler dados e seu endereço IP não está no bloco CIDR
192.168.0.0/16, o OSS retorna um erro de permissão negada, mesmo que ele tenha acesso ao bucketmyphotos.
-
-
Exemplo 4: Conceder acesso somente leitura a uma pasta específica
A autorização no nível de pasta é um uso avançado das políticas do RAM. As permissões necessárias dependem de como o usuário do RAM acessa o OSS.
O bucket a seguir armazena fotos organizadas por local e ano:
O bucket
myphotoscontém pastas nomeadas por local, cada uma com subpastas nomeadas por ano.myphotos[Bucket] ├── beijing │ ├── 2014 │ └── 2015 ├── hangzhou │ ├── 2013 │ ├── 2014 │ └── 2015 // Grant read-only permissions on this folder to a RAM user. └── qingdao ├── 2014 └── 2015O objetivo é conceder acesso somente leitura à pasta
myphotos/hangzhou/2015/. Escolha o cenário correspondente ao seu caso de uso:-
Cenário 1: Acesso direto a objetos sem listagem de pastas
O usuário do RAM lê objetos usando o caminho completo, mas não pode listar o conteúdo da pasta. Anexe esta política a serviços de aplicação que buscam objetos por caminhos conhecidos.
Neste cenário, o usuário do RAM usa o caminho completo para ler os dados do objeto.
{ "Version": "1", "Statement": [ { "Sid": "AllowGetObjectsInHangzhou2015", "Effect": "Allow", "Action": [ "oss:GetObject" ], "Resource": [ "acs:oss:*:*:myphotos/hangzhou/2015/*" ] } ] } -
Cenário 2: Acesso a pastas via CLI do OSS
O usuário do RAM lista e lê objetos em
myphotos/hangzhou/2015/usando a CLI do OSS ou chamando operações do OSS diretamente. Use esta política para conceder acesso a desenvolvedores de software.Neste cenário, o usuário do RAM utiliza a CLI do OSS ou chama operações para ler dados da pasta.
A permissão
ListObjectsé necessária para enumerar objetos na pasta. A condiçãoPrefixrestringe a listagem apenas à pasta de destino.{ "Version": "1", "Statement": [ { "Sid": "AllowGetObjectsInHangzhou2015", "Effect": "Allow", "Action": [ "oss:GetObject" ], "Resource": [ "acs:oss:*:*:myphotos/hangzhou/2015/*" ] }, { "Sid": "AllowListObjectsInHangzhou2015", "Effect": "Allow", "Action": [ "oss:ListObjects" ], "Resource": [ "acs:oss:*:*:myphotos" ], "Condition": { "StringLike": { "oss:Prefix": "hangzhou/2015/*" } } } ] } -
Cenário 3: Acesso a pastas pelo console do OSS
O usuário do RAM navega até
myphotos/hangzhou/2015/usando o console do OSS ou um cliente visual, como o Windows File Explorer.Neste cenário, o usuário do RAM utiliza um cliente visual do OSS (por exemplo, Windows File Explorer) para acessar a pasta
myphotos/hangzhou/2015/.Três conjuntos de permissões são necessários para que a navegação no console funcione corretamente:
Permissão para listar todos os
bucketsPermissão para listar pastas sob
myphotosPermissão para listar pastas sob
myphotos/hangzhou
A primeira instrução concede visibilidade no console em todos os buckets. A segunda concede acesso de leitura à pasta de destino. A terceira usa as condições
DelimiterePrefixpara habilitar a navegação pasta por pasta atéhangzhou/2015/.{ "Version": "1", "Statement": [ { "Sid": "AllowConsoleVisibility", "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": [ "acs:oss:*:*:*" ] }, { "Sid": "AllowGetObjectsInHangzhou2015", "Effect": "Allow", "Action": [ "oss:GetObject", "oss:GetObjectAcl" ], "Resource": [ "acs:oss:*:*:myphotos/hangzhou/2015/*" ] }, { "Sid": "AllowFolderNavigationInMyphotos", "Effect": "Allow", "Action": [ "oss:ListObjects" ], "Resource": [ "acs:oss:*:*:myphotos" ], "Condition": { "StringLike": { "oss:Delimiter": "/", "oss:Prefix": [ "", "hangzhou/", "hangzhou/2015/*" ] } } } ] }
-