Configurez les identifiants d'authentification du client Alibaba Cloud Python SDK V1.0 pour effectuer des requêtes API.
Le SDK prend en charge cinq types d'identifiants. Choisissez celui qui correspond à votre environnement de déploiement :
|
Type d'identifiant |
Cas d'usage |
|
Paire d'AccessKey |
Développement local et tests avec un compte d'utilisateur RAM |
|
Identifiants STS |
Accès de courte durée requis ou octroi de permissions temporaires à d'autres services |
|
Identifiants de rôle RAM |
Votre application endosse un rôle RAM et nécessite un renouvellement automatique du jeton STS |
|
Identifiants de rôle RAM ECS |
Votre code s'exécute sur une instance ECS associée à un rôle RAM |
|
Identifiants par défaut |
Découverte automatique des identifiants par le SDK via les variables d'environnement |
Ne codez jamais vos identifiants en dur dans le code source et ne les validez pas dans un système de contrôle de version. Stockez-les dans des variables d'environnement ou dans un gestionnaire de secrets.
Utiliser une paire d'AccessKey
Utilisez cette méthode pour le développement local et les tests lors d'une authentification en tant qu'utilisateur RAM. Stockez l'AccessKey ID et l'AccessKey secret dans des variables d'environnement, puis transmettez-les à AcsClient.
import os
from aliyunsdkcore.client import AcsClient
from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest
# Initialize the client.
client = AcsClient(
os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'), # Get the AccessKey ID of the RAM user from an environment variable.
os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'), # Get the AccessKey secret of the RAM user from an environment variable.
'<region_id>' # The region ID.
)
# Create an API request and set parameters.
request = DescribeRegionsRequest()
# Send the request.
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))
Utiliser des identifiants STS
Utilisez cette méthode lorsque vous avez besoin d'un accès temporaire. Security Token Service (STS) émet des identifiants de sécurité temporaires (AccessKey ID, AccessKey secret et jeton de sécurité) qui expirent automatiquement.
import os
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.auth.credentials import StsTokenCredential
from aliyunsdkecs.request.v20140526.AcceptInquiredSystemEventRequest import AcceptInquiredSystemEventRequest
cred = StsTokenCredential(
sts_access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'), # Obtain the AccessKey ID provided by STS from environment variables.
sts_access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'), # Obtain the AccessKey secret provided by STS from environment variables.
sts_token=os.environ.get('ALIBABA_CLOUD_SECURITY_TOKEN') # Obtain the STS token provided by STS from environment variables.
)
client = AcsClient(
region_id='<region_id>',
credential=cred
)
request = AcceptInquiredSystemEventRequest()
request.set_accept_format('json')
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))
Utiliser des identifiants de rôle RAM
Utilisez cette méthode lorsque votre application doit endosser un rôle RAM. Le client sollicite et renouvelle automatiquement les jetons STS avant chaque appel API. Vous pouvez également demander manuellement des jetons STS et créer un client STS.
import os
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.auth.credentials import RamRoleArnCredential
from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest
cred = RamRoleArnCredential(
sts_access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'), # Get the AccessKey ID of the RAM user from an environment variable.
sts_access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'), # Get the AccessKey secret of the RAM user from an environment variable.
role_arn='<ram_role_arn>',
session_role_name='<session_role_name>'
)
client = AcsClient(
region_id='<region_id>',
credential=cred
)
request = DescribeRegionsRequest()
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))
Utiliser des identifiants de rôle RAM ECS
Utilisez cette méthode lorsque votre code s'exécute sur une instance ECS dotée d'un rôle RAM attaché. Le SDK récupère automatiquement les identifiants de sécurité temporaires depuis l'endpoint de métadonnées de l'instance à l'adresse http://100.100.100.200/latest/meta-data/ram/security-credentials/<role_name>. Aucune configuration d'identifiants n'est nécessaire dans votre code.
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.auth.credentials import EcsRamRoleCredential
from aliyunsdkecs.request.v20140526.AcceptInquiredSystemEventRequest import AcceptInquiredSystemEventRequest
cred = EcsRamRoleCredential(
role_name='<ram_role_name>'
)
client = AcsClient(
region_id='<region_id>',
credential=cred
)
request = AcceptInquiredSystemEventRequest()
request.set_accept_format('json')
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))
Utiliser les identifiants par défaut
Utilisez cette méthode pour permettre au SDK de découvrir automatiquement les identifiants. Le SDK vérifie les variables d'environnement ALIYUN_ACCESS_KEY_ID et ALIYUN_ACCESS_KEY_SECRET. Si toutes deux sont définies et non vides, le SDK les utilise pour créer un identifiant par défaut.
from aliyunsdkcore.client import AcsClient
from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest
# Initialize the client.
client = AcsClient(
region_id='<region_id>' # The region ID.
)
# Create an API request and set parameters.
request = DescribeRegionsRequest()
# Send the request.
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))
Bonnes pratiques de sécurité
Utilisez des variables d'environnement ou un gestionnaire de secrets. Ne codez jamais vos identifiants en dur dans le code source et ne les validez pas dans un dépôt.
Appliquez le principe du moindre privilège. N'accordez aux utilisateurs et rôles RAM que les permissions strictement nécessaires.
Privilégiez les identifiants de rôle RAM ou de rôle RAM ECS en production. Ces deux types génèrent des jetons STS éphémères avec rotation automatique, limitant ainsi les risques de fuite d'identifiants.
Renouvelez régulièrement vos paires d'AccessKey. Révoquez toute paire d'AccessKey inutilisée.
Utilisez des identifiants STS pour les accès temporaires. Lors de l'octroi d'accès à un tiers ou à un processus éphémère, émettez des identifiants STS avec une expiration adaptée plutôt que de partager une paire d'AccessKey permanente.