Todos os produtos
Search
Central de documentação

Object Storage Service:Use the AccessKey pair of a RAM user to access OSS resources

Última atualização: Jul 03, 2026

Acessar o OSS com o par de AccessKey de um usuário do RAM (Resource Access Management) é mais seguro do que usar as credenciais da conta raiz da Alibaba Cloud, pois permite conceder ao usuário apenas as permissões necessárias.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Uma conta Alibaba Cloud com acesso de administrador ao RAM

  • Um bucket do OSS para upload de objetos

Etapa 1: Crie um usuário do RAM

  1. Faça login no console do RAM com sua conta Alibaba Cloud ou como administrador do RAM.

  2. No painel de navegação à esquerda, escolha Identities > Users.

  3. Na página Users, clique em Create User.

  4. Na seção User Account Information, configure os seguintes campos:

    Nota

    Para criar vários usuários do RAM simultaneamente, clique em Add User.

    Campo

    Descrição

    Logon Name

    Até 64 caracteres. Pode conter letras, dígitos, pontos (.), hifens (-) e sublinhados (_).

    Display Name

    Até 128 caracteres.

    Tag

    Clique no ícone de edição e insira uma chave e um valor de tag. As tags ajudam a categorizar e gerenciar usuários do RAM.

  5. Na seção Access Mode, selecione Using permanent AccessKey to access e clique em OK.

  6. Clique em Copy para salvar o par de AccessKey.

    Importante

    O segredo do AccessKey aparece apenas na criação do par e não pode ser recuperado posteriormente. Copie agora o ID e o segredo do AccessKey para um local seguro. Se perder o segredo, crie um novo par de AccessKey.

Etapa 2: Conceder permissão de upload de objetos ao usuário do RAM

Crie uma política personalizada

  1. No painel de navegação à esquerda, escolha Permissions > Policies.

  2. Na página Policies, clique em Create Policy.

  3. Na página Create Policy, clique na aba JSON e insira o seguinte documento de política. Este exemplo concede a permissão oss:PutObject ao diretório exampledir no bucket examplebucket.

    Aviso

    Este exemplo serve apenas como referência. Configure políticas do RAM granulares conforme suas necessidades reais para evitar concessão de permissões excessivas. Para mais detalhes, consulte Exemplo 9: Usar RAM ou STS para autorizar usuários a acessar recursos do OSS.

       {
         "Version": "1",
         "Statement": [
           {
             "Effect": "Allow",
             "Action": "oss:PutObject",
             "Resource": "acs:oss:*:*:examplebucket/exampledir/*"
           }
         ]
       }
  4. Clique em OK.

  5. Defina o Policy Name como RamTestPolicy e clique em OK.

Anexar a política ao usuário do RAM

  1. No painel de navegação à esquerda, escolha Identities > Users.

  2. Na página Users, localize o usuário do RAM e clique em Add Permissions na coluna Actions.

  3. No painel Grant Permission, clique na aba Custom Policy, selecione RamTestPolicy e clique em OK.

Etapa 3: Fazer upload de um objeto com o par de AccessKey do usuário do RAM

O exemplo abaixo faz o upload de um arquivo local (examplefile.txt) para exampledir/exampleobject.txt no bucket examplebucket, com o SDK para Java e Signature Version 4.

Defina variáveis de ambiente

Configure o par de AccessKey como variáveis de ambiente para que o SDK carregue as credenciais sem codificá-las diretamente no código.

Linux/macOS:

export OSS_ACCESS_KEY_ID=<your-accesskey-id>
export OSS_ACCESS_KEY_SECRET=<your-accesskey-secret>

Windows (Prompt de Comando):

setx OSS_ACCESS_KEY_ID "<your-accesskey-id>"
setx OSS_ACCESS_KEY_SECRET "<your-accesskey-secret>"

Substitua <your-accesskey-id> e <your-accesskey-secret> pelos valores copiados na Etapa 1.

Fazer upload de um objeto

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.File;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Endpoint for the China (Hangzhou) region. Replace with your actual endpoint.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Load credentials from the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Bucket name.
        String bucketName = "examplebucket";
        // Full object path in the bucket. Do not include the bucket name.
        String objectName = "exampledir/exampleobject.txt";
        // Full path to the local file to upload.
        String filePath = "D:\\localpath\\examplefile.txt";
        // Region where the bucket is located.
        String region = "cn-hangzhou";

        // Create an OSSClient instance with Signature Version 4.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
            .endpoint(endpoint)
            .credentialsProvider(credentialsProvider)
            .clientConfiguration(clientBuilderConfiguration)
            .region(region)
            .build();

        try {
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath));
            PutObjectResult result = ossClient.putObject(putObjectRequest);
        } catch (OSSException oe) {
            System.out.println("OSS rejected the request: " + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Client error (e.g., network issue): " + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Para exemplos em outras linguagens, consulte:

Perguntas frequentes

Onde visualizo meu ID do AccessKey? É possível recuperar o segredo do AccessKey posteriormente?

Para visualizar o ID do AccessKey de um usuário do RAM, consulte Visualizar informações sobre pares de AccessKey de um usuário do RAM.

O segredo do AccessKey aparece apenas uma vez, na criação do par. Se perdê-lo, acesse o console do RAM e crie um novo par de AccessKey. Consulte Criar um par de AccessKey.

Recebi um erro AccessDenied durante o upload. O que verificar?

O erro AccessDenied geralmente indica que o par de AccessKey está incorreto ou que o usuário do RAM não tem permissão de upload.

  1. Verifique o par de AccessKey. Consulte Visualizar informações sobre pares de AccessKey de um usuário do RAM. Se perdeu o segredo, crie um novo par de AccessKey no console do RAM.

  2. No console do RAM, confirme se o usuário do RAM tem a permissão oss:PutObject para o bucket de destino. Caso contrário, anexe a política apropriada.

Como identifico um tipo específico de erro?

O OSS fornece uma referência de códigos de erro para ajudar na identificação de falhas. Para erros relacionados à autenticação, consulte 02-AUTH.

Recebi um erro NoSuchBucket. Qual é o problema?

O nome do bucket no código não corresponde a nenhum bucket existente na região especificada. Verifique o nome e confirme se o bucket existe.

Recebi a mensagem "The bucket you are attempting to access must be addressed using the specified endpoint." Qual é o problema?

O endpoint no código não corresponde à região onde o bucket está localizado. Consulte o endpoint correto para a região do bucket em Regiões e endpoints e atualize o código.

Próximos passos

Para compartilhar objetos enviados com terceiros sem expor suas credenciais, gere URLs pré-assinadas que permitam acesso temporário. Consulte Baixe um objeto usando uma URL pré-assinada.