La divulgation d'identifiants d'accès peut compromettre vos ressources cloud et vos opérations commerciales. Sécurisez vos identifiants en choisissant la méthode d'authentification adaptée à chaque scénario de déploiement.
Qu'est-ce qu'un identifiant d'accès ?
Un identifiant d'accès permet de vérifier votre identité lorsque vous utilisez des outils de développement (API, CLI, SDK ou Terraform) pour accéder à Alibaba Cloud.
Paire AccessKey : composée d'un AccessKey ID et d'un AccessKey Secret. Il s'agit d'un identifiant permanent pour les comptes Alibaba Cloud et les utilisateurs RAM. Créer une paire AccessKey.
Jeton STS : un jeton Security Token Service (STS) est un identifiant temporaire délivré à un rôle RAM, avec une période de validité et une étendue d'autorisations personnalisées. Qu'est-ce que STS ?.
Causes courantes de fuite d'identifiants
Les paires AccessKey codées en dur dans le code applicatif sont exposées à toute personne disposant d'un accès en lecture au référentiel et deviennent publiques si le code est publié sur des communautés open source ou des services d'hébergement de code.
Les paires AccessKey intégrées dans le code côté client peuvent être extraites par décompilation de l'application.
La documentation technique ou les documents partagés contiennent des informations sur les paires AccessKey.
Les exemples de code fournis dans la documentation produit contiennent des informations sur les paires AccessKey.
Les réponses d'API qui manquent de contrôles d'autorisation appropriés renvoient des informations d'identification d'accès.
Méthodes sécurisées pour l'utilisation des identifiants d'accès
Réduisez au minimum la durée d'exposition et l'étendue des identifiants. Choisissez une méthode sécurisée en fonction de votre scénario de déploiement.
|
Méthode |
Scénario |
|
Applications déployées dans un cluster ACK. RRSA isole les autorisations au niveau du rôle RAM, de sorte que chaque application assume un rôle unique. |
|
|
Applications déployées sur une instance ECS. L'instance assume un rôle RAM pour accéder aux API OpenAPI d'Alibaba Cloud. |
|
|
Personnel de développement, d'exploitation et de produit ayant besoin d'identifiants pour les opérations, la gestion ou le débogage. Utilisez le SSO basé sur les rôles pour assumer un rôle RAM et obtenir un jeton STS. |
|
|
Applications déployées dans Function Compute (FC) nécessitant un accès à d'autres ressources cloud. Associez la fonction FC à un rôle RAM pour utiliser un jeton STS plutôt que des identifiants permanents. |
|
|
Scénarios où les solutions précédentes ne s'appliquent pas. Stockez les identifiants dans des variables d'environnement système. |
Utiliser les rôles RAM pour comptes de service (RRSA)
Prérequis
Cette méthode s'applique aux services cloud compatibles avec RAM.
Le SDK Alibaba Cloud V2.0 est utilisé.
Les SDK personnalisés pour les produits de passerelle auto-gérés ne peuvent pas être utilisés.
Fonctionnement

Procédure
Activer RRSA pour votre cluster ACK.
Utiliser RRSA dans votre cluster ACK.
Exemples de code
Utiliser un rôle RAM d'instance
Prérequis
Cette méthode s'applique aux services cloud compatibles avec RAM.
Le SDK Alibaba Cloud V2.0 est utilisé.
Les SDK personnalisés pour les produits de passerelle auto-gérés ne peuvent pas être utilisés.
Fonctionnement
Vous pouvez attacher un rôle Resource Access Management (RAM) d'instance à une instance Elastic Compute Service (ECS). L'instance ECS peut alors utiliser l'identifiant temporaire Security Token Service (STS) du rôle RAM d'instance pour accéder aux API d'autres services Alibaba Cloud. L'identifiant temporaire STS est mis à jour périodiquement. Cela garantit la sécurité de votre paire AccessKey et met en œuvre un contrôle d'accès et une gestion des autorisations granulaires via RAM.

Flux de travail :
L'application récupère un jeton STS en accédant aux métadonnées de l'instance ECS.
L'application utilise le jeton STS pour accéder aux ressources cloud. Qu'est-ce que STS ?.
Procédure
Attribuez un rôle RAM à une instance ECS. Rôles RAM d'instance.
Exemples de code
Alibaba Cloud Credentials simplifie l'utilisation des rôles RAM d'instance. Ces exemples appellent l'opération DescribeRegions d'ECS avec un rôle RAM d'instance.
|
Langage de programmation |
Exemple de code |
|
Go |
|
|
Java |
|
|
Python |
|
|
PHP |
|
|
Node.js |
|
|
.NET |
Jeton STS pour le développement et le débogage
Scénario
Pour le personnel de développement, d'exploitation et de produit ayant besoin d'identifiants pour les opérations, la gestion ou le débogage, utilisez le SSO basé sur les rôles pour assumer un rôle RAM et obtenir un jeton STS au lieu d'une paire AccessKey permanente.
Procédure
Pour les scénarios mono-compte, nous vous recommandons de configurer le SSO de rôle basé sur SAML au sein du compte cloud et d'attribuer des rôles RAM aux employés en fonction de leurs fonctions. Les employés peuvent ensuite utiliser l'outil saml2alibabacloud en ligne de commande pour obtenir un jeton STS après s'être authentifiés auprès du fournisseur d'identité (IdP).
Pour les scénarios multi-comptes, nous vous recommandons d'utiliser CloudSSO pour configurer la connexion unique pour plusieurs comptes. Après configuration, les employés peuvent utiliser la CLI pour se connecter à CloudSSO et accéder aux ressources Alibaba Cloud.
Utiliser un jeton STS dans Function Compute
Scénario
Au lieu de coder en dur la paire AccessKey d'un utilisateur RAM dans une fonction FC, associez la fonction à un rôle RAM. L'application utilise alors un jeton STS pour accéder aux ressources cloud, évitant ainsi la fuite d'identifiants permanents.
Architecture de la solution
Les rôles de fonction FC gèrent les identifiants temporaires au moment de l'exécution, évitant ainsi l'exposition à long terme de la paire AccessKey. Configurez le rôle et les autorisations une seule fois ; les fonctions obtiennent automatiquement des identifiants temporaires.
Un administrateur crée un rôle approuvé par Function Compute et lui accorde les autorisations requises (1), puis associe le rôle à la fonction FC (2). L'application récupère un jeton STS à partir du contexte de la fonction (3). Au cours de ce processus, Function Compute appelle AssumeRole pour obtenir le jeton STS auprès de RAM/STS (i). L'application utilise le jeton STS pour appeler l'API de la ressource cloud cible (4), et l'API de la ressource renvoie le résultat à l'application cliente.

Procédure
Accorder à Function Compute les autorisations d'accès à d'autres services Alibaba Cloud.
Configurer des variables d'environnement système
Procédure
Configurez les variables d'environnement ALIBABA_CLOUD_ACCESS_KEY_ID et ALIBABA_CLOUD_ACCESS_KEY_SECRET.
-
Linux et macOS
Exécutez les commandes suivantes :
export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>Remplacez
<access_key_id>par votre AccessKey ID et<access_key_secret>par votre AccessKey Secret. -
Windows
Créez un fichier de variables d'environnement, ajoutez les variables d'environnement
ALIBABA_CLOUD_ACCESS_KEY_IDetALIBABA_CLOUD_ACCESS_KEY_SECRETau fichier, puis spécifiez votre AccessKey ID pour ALIBABA_CLOUD_ACCESS_KEY_ID et votre AccessKey Secret pour ALIBABA_CLOUD_ACCESS_KEY_SECRET.Redémarrez le système d'exploitation Windows.
Exemples de code du SDK Alibaba Cloud
Les SDK Alibaba Cloud créent un identifiant par défaut à partir des variables d'environnement ALIBABA_CLOUD_ACCESS_KEY_ID et ALIBABA_CLOUD_ACCESS_KEY_SECRET et l'utilisent pour authentifier automatiquement les requêtes. Ces exemples appellent l'opération DescribeRegions d'ECS.
|
Langage de programmation |
Exemple de code |
|
Go |
|
|
Java |
|
|
Python |
|
|
PHP |
|
|
Node.js |
|
|
.NET |
Exemple de code générique
Si vous ne pouvez pas utiliser les SDK Alibaba Cloud (par exemple, des SDK personnalisés pour des produits de passerelle auto-gérés), chargez directement les variables d'environnement. Exemple en Java :
import com.aliyun.credentials.Client;
import com.aliyun.credentials.models.Config;
public class DemoTest {
public static void main(String[] args) throws Exception{
Config config = new Config();
// Specify the type of credential you want to use.
config.setType("access_key");
// The AccessKeyId of your RAM user.
config.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
// The AccessKeySecret of your RAM user.
config.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
Client client = new Client(config);
}
}
Remédier aux fuites d'identifiants
Fuite de paire AccessKey : Remédier à une paire AccessKey compromise.
Fuite de jeton STS : Que faire en cas de fuite d'un jeton STS ?.
Références
Bonnes pratiques connexes en matière de sécurité cloud :