Este tópico descreve como usar credenciais de acesso temporárias fornecidas pelo Security Token service (STS) ou uma url pré-assinada para acessar temporariamente os recursos do object storage service (OSS).
especifique um período de validade para as credenciais de acesso temporárias e para a url pré-assinada. Quando você usa credenciais de acesso temporárias para gerar uma url pré-assinada usada em operações como upload e baixe de objetos, o menor período de validade tem precedência. Por exemplo, é possível defina o período de validade das suas credenciais de acesso temporárias como 1.200 segundos e o período de validade da url pré-assinada gerada com essas credenciais como 3.600 segundos. Nesse caso, não será possível usar a url pré-assinada para fazer upload de objetos após a expiração das credenciais de acesso temporárias, mesmo que a url pré-assinada ainda esteja dentro do seu período de validade.
Observações
Este tópico usa o endpoint público da região china (Hangzhou). Para acessar o OSS a partir de outros service da alibaba cloud na mesma região do OSS, use um endpoint interno. Para obter mais informações sobre as regiões e os endpoints do OSS, consulte Regions and endpoints.
Este tópico demonstra como crie uma instância OSSClient com um endpoint do OSS. Para configurações alternativas, como o uso de um domínio personalizado ou autenticação com credenciais do Security Token service (STS), consulte Create an OssClient instance.
Use o STS para autorizar o acesso temporário
Use o STS da alibaba cloud para autorizar o acesso temporário ao OSS. O STS é um service web que fornece tokens de acesso temporário para usuários de computação em cloud. Com o STS, você pode conceder a um aplicativo de terceiros ou a um subusuário uma credencial de acesso temporária com período de validade e permissões personalizadas. Para saber mais sobre o STS, consulte What is STS?.
O STS oferece os seguintes benefícios:
É necessário apenas gerar um token de segurança e enviá-lo ao aplicativo de terceiros, sem fornecer o seu par de AccessKey. Também é possível especifique as permissões de acesso e o período de validade desse token de segurança.
O token de segurança expira automaticamente após o fim do período de validade. Portanto, não é necessário revogar manualmente as permissões de acesso de um token de segurança.
Para acessar o OSS usando credenciais de acesso temporárias do STS, execute as etapas a seguir:
-
Obtenha as credenciais de acesso temporárias.
As credenciais de acesso temporárias contêm um token de segurança e um par de AccessKey temporário. Um par de AccessKey consiste em um AccessKey id e um AccessKey secret. O período de validade das credenciais de acesso temporárias é medido em segundos. O período mínimo de validade é de 900 segundos, e o período máximo é a duração máxima da sessão especifique para a função atual. Para mais detalhes, consulte Specify the maximum session duration for a RAM role.
Use um dos seguintes métodos para obter as credenciais de acesso temporárias:
-
Método 1
Chame a operação AssumeRole.
-
Método 2
Use os sdk do STS para obter as credenciais de acesso temporárias. Para mais informações, consulte STS SDK overview.
-
-
Use as credenciais de acesso temporárias obtidas do STS para criar uma requisição assinada.
#include <alibabacloud/oss/OssClient.h> using namespace AlibabaCloud::OSS; int main(void) { /* Initialize information about the account that is used to access OSS. */ /* Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. */ std::string Endpoint = "yourEndpoint"; /* 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. */ std::string Region = "yourRegion"; /* Initialize resources, such as network resources. */ InitializeSdk(); ClientConfiguration conf; conf.signatureVersion = SignatureVersionType::V4; /* Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET, and OSS_SESSION_TOKEN environment variables are configured. */ auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>(); OssClient client(Endpoint, credentialsProvider, conf); client.SetRegion(Region); /* Release resources, such as network resources. */ ShutdownSdk(); return 0; }
Use uma url pré-assinada para autorizar o acesso temporário
Observações de uso
-
Ao usar um sdk do OSS para gerar uma url pré-assinada, o sdk utiliza um algoritmo específico com base nas informações de chave armazenadas no computador local para calcular uma assinatura e adicioná-la à url. Isso garante a validade e a segurança da url. O cliente conclui as operações de cálculo e construção da url. Não é necessário enviar requisições ao servidor pela rede. Assim, não é necessário conceder permissões específicas ao chamador ao gerar a url pré-assinada. No entanto, para permitir que usuários de terceiros execute operações relevantes nos recursos autorizados pela url pré-assinada, certifique-se de que a entidade responsável por chamar as operações de api para gerar a url pré-assinada tenha as permissões correspondentes.
Por exemplo, se uma entidade deseja fazer upload de um objeto usando uma url pré-assinada, conceda a permissão oss:PutObject a essa entidade. Se a entidade deseja baixe ou visualize um objeto usando uma url pré-assinada, conceda a permissão oss:GetObject.
Gere uma url pré-assinada e forneça-a a um visitante para acesso temporário. Ao gerar a url, especifique o período de validade para limitar o tempo durante o qual o visitante pode acessar dados específicos.
Para gerar uma url pré-assinada usada para acessar recursos via HTTPS, defina o protocolo no endpoint como HTTPS.
A url pré-assinada gerada pelo código de exemplo a seguir pode conter um sinal de mais (
+). Nesse caso, substitua o sinal de mais (+) na url por%2B. Caso contrário, não será possível usar a url pré-assinada para acessar o objeto conforme o esperado.