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 à des opérations telles que le téléversement ou le téléchargement d'objets, la durée de validité minimale s'applique en priorité. 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 à 3 600 secondes, l'URL ne permettra plus de téléverser des objets après l'expiration des identifiants, même si elle reste théoriquement valide.
Remarques
Cette rubrique utilise le point de terminaison public de la région Chine (Hangzhou). Pour accéder à OSS depuis d'autres services Alibaba Cloud situés dans la même région, privilégiez 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 domaine personnalisé ou l'authentification via des identifiants Security Token Service (STS), consultez Créer une instance OssClient.
Utiliser STS pour autoriser un accès temporaire
Alibaba Cloud STS permet d'autoriser un accès temporaire à OSS. Ce service web fournit des jetons d'accès temporaires aux utilisateurs du cloud. Vous pouvez ainsi accorder à une application tierce ou à un sous-utilisateur un identifiant d'accès temporaire, doté d'une durée de validité et de permissions personnalisées. Pour en savoir plus sur STS, consultez Qu'est-ce que STS ?.
STS offre les avantages suivants :
Générez simplement un jeton de sécurité et transmettez-le à l'application tierce. Inutile de communiquer votre paire AccessKey. Vous définissez vous-même les permissions d'accès et la durée de validité du jeton.
Le jeton expire automatiquement à la fin de sa période de validité. Aucune révocation manuelle des permissions n'est nécessaire.
Pour accéder à OSS avec des identifiants temporaires issus de STS, suivez ces étapes :
-
Obtenez des identifiants d'accès temporaires.
Ces identifiants comprennent un jeton de sécurité et une paire AccessKey temporaire (AccessKey ID et AccessKey secret). La durée de validité s'exprime en secondes, avec un minimum de 900 secondes. Le maximum correspond à la durée de session maximale configurée pour le rôle actuel. Pour plus d'informations, consultez Spécifier la durée de session maximale pour un rôle RAM.
Deux méthodes permettent d'obtenir ces identifiants :
-
Méthode 1
Appelez l'opération AssumeRole.
-
Méthode 2
Utilisez les SDK STS. Pour plus d'informations, consultez Présentation des SDK STS.
-
-
Créez une requête signée à l'aide des identifiants temporaires obtenus via STS.
#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
Notes d'utilisation
-
Lorsqu'un SDK OSS génère une URL pré-signée, il calcule une signature à partir des clés stockées localement et l'intègre à l'URL pour en garantir la validité et la sécurité. Ces calculs s'effectuent côté client, sans requête réseau vers le serveur. Ainsi, aucune permission spécifique n'est requise pour l'appelant lors de la génération de l'URL. Toutefois, pour que les tiers puissent exploiter les ressources via cette URL, l'entité qui génère l'URL doit disposer des permissions API correspondantes.
Par exemple, accordez la permission oss:PutObject à l'entité si elle doit téléverser un objet via une URL pré-signée. Accordez la permission oss:GetObject si elle doit télécharger ou prévisualiser un objet.
Générez une URL pré-signée et communiquez-la au visiteur pour un accès temporaire. En définissant la durée de validité de l'URL, vous limitez la fenêtre d'accès aux données.
Pour générer une URL pré-signée permettant d'accéder aux ressources via HTTPS, configurez le protocole du point de terminaison sur HTTPS.
L'URL pré-signée générée par l'exemple de code suivant peut contenir un signe plus (
+). Remplacez alors le signe plus (+) par%2Bdans l'URL. Sans cette modification, l'accès à l'objet pourrait échouer.