Cette rubrique explique comment utiliser les identifiants d'accès temporaires fournis par Security Token Service (STS) ou une URL pré-signée pour accéder temporairement aux ressources Object Storage Service (OSS).
Vous devez spécifier une durée de validité pour les identifiants d'accès temporaires et les URL pré-signées. Lorsque vous utilisez des identifiants d'accès temporaires pour générer une URL pré-signée destinée à effectuer des opérations telles que le téléchargement ou le téléversement d'objets, la durée de validité la plus courte s'applique. Par exemple, si vous définissez la durée de validité de vos identifiants d'accès temporaires à 1 200 secondes et celle de l'URL pré-signée générée avec ces identifiants à 3 600 secondes, l'URL pré-signée ne pourra pas être utilisée pour téléverser des objets après l'expiration des identifiants d'accès temporaires, même si l'URL est encore valide.
Notes
Dans cette rubrique, le point de terminaison public de la région Chine (Hangzhou) est utilisé. Si vous souhaitez accéder à OSS depuis d'autres services Alibaba Cloud situés dans la même région qu'OSS, utilisez un point de terminaison interne. Pour plus d'informations sur les régions et les points de terminaison OSS, consultez Régions et points de terminaison.
Cette rubrique montre comment créer une instance OSSClient avec un point de terminaison OSS. Pour d'autres configurations, comme l'utilisation d'un nom de domaine personnalisé ou l'authentification via des identifiants provenant de Security Token Service (STS), consultez Créer une instance OssClient.
Utiliser STS pour autoriser un accès temporaire
Vous pouvez utiliser Alibaba Cloud STS pour autoriser un accès temporaire à OSS. STS est un service web qui fournit des jetons d'accès temporaires aux utilisateurs du cloud computing. Vous pouvez utiliser STS pour accorder à une application tierce ou à un sous-utilisateur un identifiant d'accès temporaire avec une durée de validité et des permissions personnalisées. Pour plus d'informations sur STS, consultez Qu'est-ce que STS ?.
STS offre les avantages suivants :
Il vous suffit de générer un jeton de sécurité et de l'envoyer à l'application tierce. Vous n'avez pas besoin de fournir votre paire AccessKey à l'application tierce. Vous pouvez spécifier les permissions d'accès et la durée de validité de ce jeton de sécurité.
Le jeton de sécurité expire automatiquement à la fin de sa période de validité. Vous n'avez donc pas besoin de révoquer manuellement les permissions d'accès associées au jeton.
Pour accéder à OSS en utilisant des identifiants d'accès temporaires issus de STS, procédez comme suit :
-
Obtenez des identifiants d'accès temporaires.
Les identifiants d'accès temporaires comprennent un jeton de sécurité et une paire AccessKey temporaire. Une paire AccessKey se compose d'un AccessKey ID et d'un AccessKey Secret. La durée de validité des identifiants d'accès temporaires est exprimée en secondes. La durée minimale est de 900 secondes. La durée maximale correspond à la durée de session maximale spécifiée pour le rôle actuel. Pour plus d'informations, consultez Spécifier la durée de session maximale pour un rôle RAM.
Vous pouvez utiliser l'une des méthodes suivantes pour obtenir des identifiants d'accès temporaires :
-
Méthode 1
Appelez l'opération AssumeRole.
-
Méthode 2
Utilisez les SDK STS pour obtenir des identifiants d'accès temporaires. Pour plus d'informations, consultez Présentation des SDK STS.
-
-
Utilisez les identifiants d'accès temporaires obtenus via STS pour créer une requête signée.
#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; }
Utiliser une URL pré-signée pour autoriser un accès temporaire
Remarques d'utilisation
-
Lorsque vous utilisez un SDK OSS pour générer une URL pré-signée, le SDK utilise un algorithme spécifique basé sur les informations clés stockées sur l'ordinateur local pour calculer une signature et l'ajouter à l'URL, garantissant ainsi la validité et la sécurité de celle-ci. Les opérations de calcul et de construction de l'URL sont effectuées côté client. Vous n'avez pas besoin d'envoyer de requêtes au serveur via le réseau. Ainsi, vous n'avez pas besoin d'accorder des permissions spécifiques à l'appelant lors de la génération de l'URL pré-signée. Toutefois, pour permettre aux utilisateurs tiers d'effectuer les opérations pertinentes sur les ressources autorisées par l'URL pré-signée, vous devez vous assurer que l'entité appelant les API pour générer l'URL pré-signée dispose des permissions correspondantes.
Par exemple, si une entité souhaite téléverser un objet à l'aide d'une URL pré-signée, vous devez lui accorder la permission oss:PutObject. Si une entité souhaite télécharger ou prévisualiser un objet via une URL pré-signée, vous devez lui accorder la permission oss:GetObject.
Vous pouvez générer une URL pré-signée et la fournir à un visiteur pour un accès temporaire. Lors de la génération de l'URL pré-signée, vous pouvez spécifier sa durée de validité afin de limiter la période pendant laquelle le visiteur peut accéder aux données spécifiques.
Pour générer une URL pré-signée permettant d'accéder aux ressources via HTTPS, définissez le protocole dans le point de terminaison sur HTTPS.
L'URL pré-signée générée à l'aide de l'exemple de code suivant peut contenir un signe plus (
+). Dans ce cas, remplacez le signe plus (+) dans l'URL par%2B. Sinon, l'URL pré-signée risque de ne pas fonctionner correctement pour accéder à l'objet.