Crie políticas personalizadas do RAM para controlar quais recursos do OSS os 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.
Se nenhuma dessas políticas atender aos seus requisitos, crie uma política personalizada com os exemplos deste tópico.
Antes de criar políticas, revise as permissões disponíveis do OSS. Para mais informações, consulte Política do RAM.
Conceder acesso ao OSS a um usuário do RAM
Crie um usuário do RAM./@cmd Para mais informações, consulte Criar um usuário do RAM.
Crie uma política personalizada./@cmd Para mais informações, consulte Criar uma política personalizada e Exemplos de políticas.
Anexe a política ao usuário do RAM./@cmd Para mais informações, consulte Gerencie permissões de usuários do RAM.
Exemplos de políticas
-
Exemplo 1: Conceder acesso total de gerenciamento a um bucket específico
Esta política concede ao usuário do RAM todas as operações do OSS (
oss:*) no bucketmyphotose em todos os objetos nele contidos.{ "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 ao usuário do RAM listar objetos e ler o conteúdo no bucket
myphotos. As permissões necessárias variam conforme o acesso ocorre 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 SDK/CLI.
NotaAo fazer login no console do OSS, o sistema chama as operações
ListBuckets,GetBucketAcleGetObjectAclpara 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 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 os endereços IP que podem acessar o bucketmyphotos. Escolha entre uma abordagem de lista de permissões ou de 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 dos blocos CIDR192.168.0.0/16ou172.16.1.0/16. A condição de ip aplica-se somente à instrução de acesso aos dados; a instruçãoAllowpara visibilidade no console permanece irrestrita.{ "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 o acesso e o Deny o sobrepõe 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. Se um usuário do RAM tentar ler dados e seu endereço ip não estiver no bloco CIDR
192.168.0.0/16, o OSS retornará 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 da forma como o usuário 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 ao objeto sem listagem de pastas
O usuário do RAM lê objetos pelo 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 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 à pasta 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 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 à pasta 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 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 em
myphotosPermissão para listar pastas em
myphotos/hangzhou
A primeira instrução concede visibilidade no console para todos os buckets. A segunda concede acesso de leitura à pasta de destino. A terceira usa as condições
DelimiterePrefixpara ative 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/*" ] } } } ] }
-