Réponses aux questions fréquentes sur les rôles RAM et les jetons STS, notamment concernant les autorisations, la validité, les limites de débit et la sécurité.
Pourquoi l'erreur « You are not authorized... » s'affiche-t-elle lors de l'appel à AssumeRole ?
L'appel à AssumeRole peut renvoyer l'erreur suivante :
Error message: You are not authorized to do this action. You should be authorized by RAM.
Causes possibles :
-
Vous effectuez l'appel en tant que compte Alibaba Cloud.
Un compte Alibaba Cloud ne peut pas appeler AssumeRole. Utilisez un utilisateur ou un rôle RAM.
-
L'identité appelante ne dispose pas des autorisations nécessaires pour endosser le rôle.
Attachez la stratégie AliyunSTSAssumeRoleAccess ou une stratégie personnalisée à l'identité appelante. La stratégie personnalisée doit autoriser l'action sts:AssumeRole, comme illustré dans l'exemple de stratégie ci-dessous.
-
La politique de confiance du rôle n'inclut pas l'identité appelante en tant que principal.
Mettez à jour la politique de confiance du rôle cible pour autoriser l'identité appelante à l'endosser. Pour plus d'informations, consultez Modifier la politique de confiance d'un rôle RAM.
Qui peut appeler l'opération API AssumeRole ?
Seuls les utilisateurs ou les rôles RAM peuvent appeler AssumeRole afin d'obtenir des identifiants de sécurité temporaires pour un rôle RAM. Les comptes Alibaba Cloud ne peuvent pas appeler cette opération.
Quels sont les types de rôles RAM et qui peut les endosser ?
RAM propose les types de rôles suivants, selon le principal :
|
Type |
Description |
Cas d'utilisation courants |
|
Compte Alibaba Cloud |
Toute identité au sein du compte (le compte lui-même, les utilisateurs RAM ou d'autres rôles RAM) peut endosser le rôle. Le compte peut être le propriétaire du rôle ou un compte différent. |
Un utilisateur RAM change d'identité dans la console ou appelle |
|
Service Alibaba Cloud |
Un service cloud spécifié peut endosser le rôle. On parle alors de rôle de service. |
Déléguer l'exécution d'actions à un service cloud en votre nom. Par exemple, attachez un rôle RAM d'instance à une instance ECS afin que ses applications puissent accéder à un compartiment Object Storage Service (OSS). De nombreux services cloud utilisent également un rôle lié au service, c'est-à-dire un rôle prédéfini lié au service, pour activer ses fonctionnalités. |
|
Fournisseur d'identité (IdP) |
Les utilisateurs d'un IdP spécifié (prenant en charge SAML 2.0 ou OIDC) peuvent endosser le rôle. Cela permet la fédération d'identités. |
Les utilisateurs de votre IdP d'entreprise peuvent utiliser l'authentification unique (SSO) basée sur les rôles pour se connecter à la console Alibaba Cloud. Les utilisateurs fédérés peuvent appeler les opérations |
Comment empêcher un utilisateur RAM spécifique d'endosser un rôle RAM spécifique ?
-
Mettez à jour la politique de confiance du rôle RAM.
Dans la politique de confiance du rôle RAM, utilisez l'élément
Principalpour spécifier l'utilisateur RAM autorisé à endosser le rôle. Dans la stratégie, remplacez<account-id>par l'ID de votre compte Alibaba Cloud et<user-name>par le nom de l'utilisateur RAM. Pour plus d'informations, consultez Modifier la politique de confiance d'un rôle RAM.Exemple de stratégie :
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<account-id>:user/<user-name>" ] } } ], "Version": "1" } -
Accordez à l'utilisateur RAM l'autorisation d'endosser le rôle.
Attachez la stratégie AliyunSTSAssumeRoleAccess ou une stratégie personnalisée à l'utilisateur RAM. Une stratégie personnalisée vous permet de restreindre les rôles que l'utilisateur peut endosser.
Dans la stratégie personnalisée, utilisez l'élément
Resourcepour spécifier l'ARN du rôle RAM pouvant être endossé. Dans la stratégie, remplacez<account-id>par l'ID de votre compte Alibaba Cloud et<role-name>par le nom du rôle RAM. Pour plus d'informations, consultez Créer une stratégie personnalisée et Gérer les autorisations des utilisateurs RAM.Exemple de stratégie :
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Resource": "acs:ram:*:<account-id>:role/<role-name>" } ], "Version": "1" }
Comment consulter l'ARN d'un rôle RAM ?
Connectez-vous à la console RAM.
Dans le volet de navigation de gauche, choisissez .
Cliquez sur le nom du rôle RAM cible.
Dans la section Basic Information, recherchez et copiez l'ARN du rôle.

Existe-t-il des limites de requêtes API pour STS ?
AssumeRole est limité à 100 requêtes par seconde par compte Alibaba Cloud (partagé entre tous les utilisateurs et rôles RAM).
Si vous dépassez cette limite, STS renvoie l'un des messages d'erreur suivants :
-
Messages d'erreur
Code d'erreur
Message d'erreur
Throttling.Api
Request was denied due to api flow control.
Throttling.User
Request was denied due to user flow control.
Throttling
Request was denied due to flow control.
Un code d'état
302
Pour résoudre ces erreurs, réduisez votre fréquence de requêtes. Pour demander un quota plus élevé, soumettez un ticket.
Quelles sont les limites d'autorisations d'un jeton STS ?
Les autorisations d'un jeton STS correspondent à l'intersection des stratégies basées sur l'identité du rôle et de la stratégie de session que vous transmettez dans le paramètre Policy de l'appel AssumeRole.
Si vous ne spécifiez pas de stratégie de session lors de l'appel à AssumeRole, le jeton STS renvoyé dispose des mêmes autorisations que le rôle.
Quelle est la durée de validité d'un jeton STS ?
Les jetons STS ont une durée de validité par défaut de 3 600 secondes (1 heure). La plage valide s'étend de 900 secondes (15 minutes) à la durée maximale de session du rôle.
Définissez la validité du jeton avec le paramètre DurationSeconds de AssumeRole.
Pour configurer la durée maximale de session d'un rôle, consultez Définir la durée maximale de session pour un rôle RAM.
Plusieurs jetons STS pour le même rôle peuvent-ils être valides simultanément ?
Oui. Chaque jeton reste valide jusqu'à son expiration. La création d'un nouveau jeton n'invalide pas les jetons existants.
Que faire en cas de fuite d'un jeton STS ?
Si un jeton STS est compromis, invalidez tous les jetons actifs pour ce rôle en supprimant ses autorisations ou en supprimant le rôle :
Connectez-vous à la console RAM.
-
Détachez toutes les stratégies du rôle RAM.
Pour plus d'informations, consultez Révoquer les autorisations d'un rôle RAM.
-
Ou bien, supprimez entièrement le rôle RAM.
Pour plus d'informations, consultez Supprimer un rôle RAM.
Cette action invalide immédiatement tous les jetons STS non expirés pour ce rôle.
Pour continuer à utiliser le rôle par la suite, créez un nouveau rôle portant le même nom et disposant des mêmes stratégies.
Existe-t-il une longueur maximale pour un jeton STS ?
Non. La longueur du jeton est variable. Ne supposez pas qu'il existe une longueur maximale dans votre code.