Todos os produtos
Search
Central de documentação

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

Última atualização: Oct 09, 2026

Conceda permissões específicas a um usuário do RAM e use o par de AccessKey desse usuário para acessar seus recursos do OSS a longo prazo. O uso do par de AccessKey de um usuário do RAM é mais seguro do que o uso do par de AccessKey da conta Alibaba Cloud.

Etapa 1: Crie um usuário do RAM

  1. Faça login no RAM console com sua conta Alibaba Cloud ou como um usuário do RAM com permissões administrativas (um usuário com a política AliyunRAMFullAccess anexada).

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

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

  4. Na página Create User, na seção User Account Information, configure as informações básicas do usuário.

    • Logon Name (obrigatório): Até 64 caracteres. Permite letras, dígitos, pontos (.), hifens (-) e sublinhados (_).

    • Display Name (opcional): O nome pode ter até 128 caracteres.

    • Tag (opcional): Clique em edit e insira uma chave de tag e um valor de tag para categorizar e gerencie usuários.

    Nota

    Clique em Add User para crie vários usuários do RAM em massa.

  5. Na seção Access Mode, selecione um modo de acesso conforme o tipo de usuário.

    Importante
    • Como prática recomendada de segurança, selecione apenas um modo de acesso por usuário para separar o acesso humano pelo console do acesso programático por aplicações. Se o usuário do RAM precisar tanto de login no console quanto de capacidade de chamada de API, selecione ambos os modos de acesso. Após selecione Permanent AccessKey, marque a caixa de seleção I confirm that I must create an AccessKey para continuar.

    • Um par de AccessKey vazado compromete sua conta. Use tokens do Security Token Service (STS) (credenciais temporárias) para reduzir riscos. Best practices for using access credentials to call Alibaba Cloud APIs.

    Acesso pelo console

    Selecione Console Access.

    • Set Logon Password: Gere automaticamente ou defina uma senha personalizada. Senhas personalizadas devem atender aos requisitos de complexidade configurados. Set a password policy for RAM users.

    • Password Reset: Especifique se o usuário deve redefinir a senha no próximo login.

    • Enable MFA: O MFA é obrigatório para todos os usuários por padrão. Para alterar essa configuração, consulte Manage RAM user security settings. Os usuários devem vincular um dispositivo MFA no primeiro login. Bind an MFA device.

    Acesso programático

    Selecione Permanent AccessKey.

    O sistema cria automaticamente um AccessKey ID e um AccessKey secret para o usuário do RAM.

    Importante

    O AccessKey secret é exibido apenas no momento da criação e não pode ser recuperado posteriormente. Baixe ou copie e salve o AccessKey secret imediatamente. Um par de AccessKey vazado compromete todos os recursos da sua conta. Create an AccessKey pair.

Etapa 2: Conceder ao usuário do RAM permissões para fazer upload de objetos

  1. Crie uma política personalizada para upload de objetos.

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

    2. Clique em Create Policy.

    3. Na página Create Policy, clique em Edit Script e insira uma política na caixa de entrada do documento de política para conceder ao usuário do RAM permissões de upload de objetos no diretório exampledir do bucket de destino examplebucket. A configuração de exemplo a seguir serve como referência.

      Aviso

      O exemplo abaixo é apenas para referência. Configure uma política de autorização mais granular com base nas suas necessidades reais para evitar riscos de permissões excessivas. Para obter informações sobre configurações de políticas de autorização mais granulares, consulte Use RAM policies or STS to grant other users permissions.

      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "oss:PutObject",
            "Resource": "acs:oss:*:*:examplebucket/exampledir/*"
          }
        ]
      }
    4. Após configure a política, clique em Continue to Edit Basic Information.

    5. Na seção Basic Information, defina o Name da política como RamTestPolicy e clique em OK.

  2. Conceda a política personalizada 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 desejado.

    3. Clique em Add Permissions no lado direito do usuário do RAM.

    4. Na página Add Permissions, clique na aba Custom Policy e selecione a política personalizada criada: RamTestPolicy.

    5. Clique em Confirm Authorization.

Etapa 3: Usar o par de AccessKey do usuário do RAM para fazer upload de um objeto no OSS

O código de exemplo Java a seguir faz o upload do arquivo local examplefile.txt para o diretório exampledir no bucket de destino examplebucket com o nome exampleobject.txt.

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 {
        // In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Specify the name of the bucket. Example: examplebucket. 
        String bucketName = "examplebucket";
        // Specify the key in PutObjectRequest, which is the complete object name. Do not include the bucket name, for example, exampledir/exampleobject.txt. 
        String objectName = "exampledir/exampleobject.txt";
        // Specify the full path of the local file that you want to upload. Example: D:\\localpath\\examplefile.txt. 
        // By default, if the path of the local file is not specified, the local file is uploaded from the path of the project to which the sample program belongs. 
        String filePath= "D:\\localpath\\examplefile.txt";
        // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
        String region = "cn-hangzhou";
        
        // Create an OSSClient instance. 
        // Call the shutdown method to release associated resources when the OSSClient is no longer in use.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Create a PutObjectRequest object. 
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath));
            // The following sample code provides an example on how to specify the storage class and ACL of an object when you upload the object: 
            // ObjectMetadata metadata = new ObjectMetadata();
            // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
            // metadata.setObjectAcl(CannedAccessControlList.Private);
            // putObjectRequest.setMetadata(metadata);
            
            // Upload the local file. 
            PutObjectResult result = ossClient.putObject(putObjectRequest);           
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + 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("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Para exemplos de SDK em outras linguagens, consulte:

Perguntas frequentes

Como visualize o par de AccessKey de um usuário do RAM? Posso visualize o AccessKey Secret antigo?

Use um par de AccessKey existente ou crie um novo. Para mais informações, consulte Create an AccessKey. Nota: Para reduzir o risco de vazamento de AccessKey, o AccessKey Secret é exibido apenas uma vez durante a criação e não pode ser visualize posteriormente. Guarde-o com segurança.

Como soluciono o erro AccessDenied ao fazer upload de objetos usando o par de AccessKey de um usuário do RAM?

O erro AccessDenied durante o upload de objetos geralmente ocorre devido ao uso de informações de AccessKey incorretas ou à falta de concessão de permissões de upload ao usuário do RAM. Solucione o problema seguindo estas etapas:

  1. Verifique se o par de AccessKey do usuário do RAM está correto. Use um par de AccessKey existente ou crie um novo. Para mais informações, consulte Create an AccessKey. Nota: Para reduzir o risco de vazamento de AccessKey, o AccessKey Secret é exibido apenas uma vez durante a criação e não pode ser visualize posteriormente. Guarde-o com segurança.

  2. Faça login no RAM console, selecione o usuário específico e conceda a ele as permissões para fazer upload de objetos no OSS.

Como consulto tipos específicos de erros quando ocorrem falhas?

Para obter informações sobre como consultar tipos de erros, consulte a documentação do OSS Error codes. Por exemplo, para erros comuns de autenticação, consulte 02-AUTH.

Como lido com o erro NoSuchBucket?

Esse erro ocorre porque o bucket especificado não existe. Verifique e especifique o nome correto do bucket.

Como lido com o erro The bucket you are attempting to access must be addressed using the specified endpoint.?

Esse erro ocorre porque o parâmetro endpoint está incorreto. Especifique o endpoint correto com base na região onde o bucket está localizado. Para obter informações sobre o mapeamento entre regiões e endpoints, consulte Regions and endpoints.

Documentação relacionada