Une clé API, également appelée identifiant de service dans OpenAPI (ServiceCredential), est un type d'identifiant émis par Resource Access Management (RAM) pour accéder à un service cloud spécifique. Elle sert exclusivement à appeler l'API de ce service. Cette rubrique décrit les clés API et explique comment gérer leur cycle de vie.
Pour authentifier vos appels programmatiques à l'OpenAPI d'un service cloud spécifique, utilisez une clé API. Chaque clé API est associée à un seul service cloud lors de sa création et ne permet d'appeler que les API de ce service. Cette conception réduit la surface d'attaque et offre une alternative plus sécurisée aux AccessKeys.
Principales caractéristiques
Isolation au niveau du service : Chaque clé API est associée à un seul service cloud (spécifié par son
ServiceName) lors de la création. Elle ne permet d'appeler que les API de ce service et interdit les appels inter-services. Vous ne pouvez pas étendre sa portée via des politiques d'autorisation.Portée des autorisations minimisée : Les autorisations effectives d'une clé API correspondent à l'intersection entre les autorisations de l'utilisateur RAM associé et la portée du service cloud lié. Même si l'utilisateur RAM dispose d'autorisations pour plusieurs services, la clé API reste restreinte à son service désigné.
Réservée aux utilisateurs RAM : Seuls les utilisateurs RAM peuvent créer des clés API. Les comptes Alibaba Cloud (comptes racine) ne le peuvent pas. Cette pratique limite l'impact potentiel d'une fuite d'identifiants.
Conventions de dénomination : Le terme
ServiceCredentialest utilisé dans OpenAPI et les SDK, tandis que la console emploie le terme plus convivial API Key. Ces deux termes désignent la même ressource.
Clés API vs AccessKeys
Les clés API et les AccessKeys sont toutes deux des identifiants à long terme pour les utilisateurs RAM. Elles diffèrent toutefois par leur portée de service, leurs méthodes d'émission et leurs cas d'utilisation.
|
Caractéristique |
Clé API |
AccessKey |
|
Portée du service |
Associée à un seul service cloud lors de la création ; ne permet d'appeler que l'OpenAPI de ce service. |
Aucune restriction de service. Permet d'appeler tout service cloud auquel l'utilisateur RAM est autorisé à accéder. |
|
Modèle d'autorisation |
Les autorisations effectives correspondent à l'intersection entre les autorisations de l'utilisateur RAM et la portée du service cloud lié. |
Hérite intégralement de toutes les autorisations accordées à l'utilisateur RAM. |
|
Identités prises en charge |
Seuls les utilisateurs RAM peuvent en créer. Les comptes Alibaba Cloud (comptes racine) ne sont pas pris en charge. |
Les comptes Alibaba Cloud et les utilisateurs RAM peuvent en créer. |
|
Quota |
Deux par utilisateur RAM et par service cloud. Ce quota est fixe. |
Deux par identité. |
|
Période d'expiration |
L'expiration peut être définie de 1 à 36 600 jours ou configurée pour ne jamais expirer. Les clés expirées sont définitivement désactivées et irrécupérables. |
Validité à long terme sans mécanisme d'expiration intégré. |
|
Cas d'utilisation typiques |
Appel de modèles d'IA, intégration avec des plateformes tierces ou des outils de développement, et scénarios nécessitant une isolation des identifiants au niveau du service. |
Appels généraux OpenAPI/SDK, orchestration inter-services et automatisation CI/CD. |
États du cycle de vie
Une clé API peut se trouver dans l'un des trois états suivants au cours de son cycle de vie :
Active : L'identifiant permet d'appeler l'OpenAPI du service cloud lié. Il s'agit de l'état par défaut lors de la création.
Inactive : L'identifiant est temporairement désactivé. Vous pouvez le réactiver à l'état
Active. Une clé doit être inactive avant suppression.Expirée : Le système fait automatiquement passer le statut de la clé à Expirée lorsque l'heure d'expiration est atteinte. L'identifiant devient définitivement invalide et ne peut pas être récupéré. Vous devez créer une nouvelle clé.
Quotas et expiration
Quota : Chaque utilisateur RAM peut créer au maximum deux clés API par service cloud, y compris les clés
ActiveetInactive. Ce quota est fixe. Les clés expirées comptent dans ce quota, contrairement aux clés supprimées.Unité de la période d'expiration : Jours.
Plage de valeurs : La console propose des préréglages de 1, 7, 30 et 90 jours, ou vous pouvez configurer une clé pour qu'elle n'expire jamais. Les valeurs personnalisées sont également prises en charge.
Valeur par défaut OpenAPI : Si vous omettez le paramètre
CredentialAgeDayslors de l'appel à l'opérationCreateServiceCredential, la clé est configurée pour ne jamais expirer.L'expiration est définitive : Lorsqu'une clé expire, son statut passe à
Expiredet elle devient définitivement invalide. Elle ne peut pas être réactivée. Vous devez supprimer la clé expirée et en créer une nouvelle.
Par mesure de sécurité recommandée, définissez une période d'expiration raisonnable pour les clés API en fonction du cycle de vie de votre application, plutôt que de créer des clés qui n'expirent jamais. Renouvelez les identifiants dans votre application avant leur expiration afin d'éviter toute interruption de service.
Services cloud pris en charge
Dans la console RAM, accédez à la page User Details, puis à l'onglet Credential Management et à la section API Keys, et cliquez sur Create API Key. La liste déroulante Cloud Service répertorie les services disponibles pour votre compte. Reportez-vous à la documentation du service spécifique pour obtenir la liste des API prises en charge.
Autogestion pour les utilisateurs RAM
Un compte Alibaba Cloud ou un administrateur RAM disposant des autorisations suffisantes peut utiliser le paramètre AllowUserToManageServiceCredential dans les paramètres de sécurité RAM pour contrôler si les utilisateurs RAM peuvent gérer leurs propres clés API. Ce paramètre présente les deux états suivants :
Autoriser l'autogestion : Un utilisateur RAM peut se connecter à la console ou appeler l'OpenAPI pour créer, mettre à jour ou supprimer ses propres clés API, à condition qu'aucune politique d'autorisation n'interdise explicitement ces actions (c'est-à-dire qu'aucune politique Deny explicite n'existe).
Autogestion non autorisée : Les utilisateurs RAM ne peuvent pas gérer leurs propres clés API. Un administrateur disposant d'autorisations telles que
ram:CreateServiceCredentialdoit créer et maintenir les clés.
Méthodes d'autorisation
Choisissez l'une des trois méthodes suivantes pour accorder des autorisations selon vos exigences en matière de sécurité et de gouvernance :
Accorder une politique système aux administrateurs RAM (gestion centralisée) : Attachez la politique système
AliyunRAMFullAccessà vos administrateurs afin qu'ils puissent créer et maintenir des clés API pour tous les utilisateurs. Cette politique fournit un accès administratif complet à RAM et convient aux environnements où une équipe dédiée gère tous les identifiants des utilisateurs RAM.Activer le paramètre global d'autogestion (non recommandé pour la production) : Après avoir activé
AllowUserToManageServiceCredentialdans les paramètres de sécurité RAM, tous les utilisateurs RAM peuvent gérer leurs propres clés API, sauf restriction explicite par une politiqueDeny. Cette option offre une flexibilité pour les équipes, mais accorde des autorisations larges. Nous vous recommandons de l'utiliser uniquement dans des environnements de test ou sandbox contrôlés.Attacher une politique personnalisée (recommandé) : Laissez le paramètre global d'autogestion désactivé et attachez une politique personnalisée uniquement aux utilisateurs RAM spécifiques qui doivent gérer leurs propres clés API. Restreignez la
Resourceà l'identité propre de l'utilisateur. Si nécessaire, ajoutez une conditionram:ServiceCredentialServiceNamepour restreindre davantage les autorisations à un service cloud spécifique. Cette méthode permet d'accorder des autorisations précises à des utilisateurs individuels sans activer l'autogestion pour l'ensemble du compte.
Lorsque le paramètre global AllowUserToManageServiceCredential est activé, tous les utilisateurs RAM peuvent gérer leurs propres clés API (y compris les opérations de création, d'activation, de désactivation et de suppression), sauf si un administrateur attache une politique d'autorisation qui refuse ces actions. Pour les environnements de production, nous vous recommandons vivement de laisser ce paramètre désactivé et d'utiliser des politiques personnalisées pour accorder des autorisations au cas par cas.
Exemples de politiques personnalisées
Les exemples de politiques suivants restreignent la Resource à l'identité propre de l'utilisateur RAM. Une fois attachée à un utilisateur RAM, la politique lui permet d'effectuer les actions spécifiées sur son propre compte. Avant d'utiliser une politique, remplacez ACCOUNT_ID par votre ID de compte (que vous pouvez trouver dans le Alibaba Cloud Account Center) et remplacez USER_NAME par le nom de connexion de l'utilisateur RAM cible (sans le suffixe @).
Créer des clés API
Cette politique permet à un utilisateur de créer et de lister ses propres clés API, mais ne lui permet pas de modifier ou de supprimer des clés. Cela convient pour accorder des autorisations minimales selon le principe du moindre privilège.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ram:CreateServiceCredential",
"ram:ListServiceCredentials"
],
"Resource": "acs:ram:*:ACCOUNT_ID:user/USER_NAME"
}
]
}
Gestion complète du cycle de vie
Cette politique permet à un utilisateur d'effectuer toutes les opérations de gestion de ses propres clés API, y compris la création, la liste, le renommage, l'activation, la désactivation et la suppression.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ram:CreateServiceCredential",
"ram:ListServiceCredentials",
"ram:GetServiceCredential",
"ram:UpdateServiceCredential",
"ram:DeleteServiceCredential"
],
"Resource": "acs:ram:*:ACCOUNT_ID:user/USER_NAME"
}
]
}
Gestion spécifique au service
Cette politique s'appuie sur les autorisations de gestion complètes en ajoutant une condition ram:ServiceCredentialServiceName. Elle permet uniquement à l'utilisateur de gérer les clés API pour un service cloud spécifique (dans cet exemple, ak.aliyuncs.com). Cela est utile pour les scénarios d'autorisation granulaire où la gestion des identifiants est déléguée en fonction du service cloud.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ram:CreateServiceCredential",
"ram:ListServiceCredentials",
"ram:GetServiceCredential",
"ram:UpdateServiceCredential",
"ram:DeleteServiceCredential"
],
"Resource": "acs:ram:*:ACCOUNT_ID:user/USER_NAME",
"Condition": {
"StringEquals": {
"ram:ServiceCredentialServiceName": "ak.aliyuncs.com"
}
}
}
]
}
Structure des données des clés API
Chaque clé API comprend les champs principaux suivants. Les noms de champs renvoyés par OpenAPI sont préfixés par ServiceCredential, tandis que les noms de champs dans la console sont plus conviviaux.
|
Champ OpenAPI |
Champ Console |
Description |
|
ServiceCredentialId |
ID |
Un ID unique généré par le système, préfixé par |
|
ServiceCredentialName |
Name |
Un nom convivial pour identifier l'objectif de la clé. La console remplit automatiquement ce champ avec un nom tel que |
|
ServiceName |
Cloud Service |
L'identifiant du service cloud lié, tel que |
|
ServiceCredentialSecret |
API Key |
Le secret de l'identifiant. Il n'est affiché qu'une seule fois lors de la création et n'est pas récupérable par la suite via l'API ou la console. |
|
CreateTime |
Creation Time |
L'heure de création en UTC, au format ISO-8601. La console affiche cette valeur dans votre heure locale. |
|
ExpirationTime |
Expiration Time |
L'heure à laquelle l'identifiant expire et dont le statut passe à |
|
Status |
Status |
Le statut de l'identifiant. Les valeurs valides sont |
|
UserPrincipalName |
User |
Le nom de connexion de l'utilisateur RAM (User Principal Name), tel que |
Recommandations de sécurité
Définissez une période d'expiration pour les clés API. Évitez de configurer les clés de test à court terme pour qu'elles n'expirent jamais. Pour les autres cas d'utilisation, définissez une période d'expiration appropriée, telle que 30 ou 90 jours, en fonction du cycle d'utilisation du service, et renouvelez la clé avant son expiration.
Copiez immédiatement le secret de la clé API ou téléchargez le fichier CSV après la création d'une clé. Une fois la fenêtre contextuelle fermée, vous ne pouvez plus récupérer le secret. Si vous perdez le secret, vous devez supprimer la clé et en créer une nouvelle.
Traitez les clés API comme des identifiants hautement sensibles. Ne les commitez pas en texte clair dans les dépôts de code, les fichiers de configuration ou les journaux. Nous vous recommandons d'utiliser un service de gestion des secrets ou de les chiffrer avec KMS avant le stockage.