Tous les produits
Search
Centre de documentation

Alibaba Cloud SDK:Gérer les identifiants d'accès

Dernière mise à jour :Aug 11, 2026

Configurez les identifiants d'accès pour Alibaba Cloud SDK V1.0 for PHP afin d'authentifier les appels API de manière sécurisée.

Utiliser une paire d'AccessKey

Important

Une paire d'AccessKey associée à un compte Alibaba Cloud accorde un accès complet à toutes les ressources de ce compte. Afin de limiter l'impact d'une éventuelle fuite d'identifiants, utilisez la paire d'AccessKey d'un utilisateur RAM dont les permissions respectent le principe du moindre privilège (PoLP), et renouvelez cette paire régulièrement. Pour plus d'informations sur la création d'une paire d'AccessKey pour un utilisateur RAM, consultez Créer une paire d'AccessKey.

Créez un client par défaut nommé default à l'aide d'une paire d'AccessKey :

<?php

use AlibabaCloud\Client\AlibabaCloud;

AlibabaCloud::accessKeyClient(getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'))->asDefaultClient();
AlibabaCloud::accessKeyClient(getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'))->name('default');

Utiliser un jeton STS

Recourez aux identifiants temporaires du Security Token Service (STS) lorsque vous avez besoin d'un accès limité dans le temps et restreint en termes de périmètre. Demandez des identifiants temporaires auprès de STS puis créez un client temporaire :

<?php

use AlibabaCloud\Client\AlibabaCloud;

AlibabaCloud::stsClient(getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'), getenv('ALIBABA_CLOUD_SECURITY_TOKEN'))->name('sts');

Utiliser un rôle RAM

Attribuez un rôle RAM à un client pour que celui-ci obtienne et actualise automatiquement les jetons STS avant chaque requête API. Vous disposez ainsi d'un client STS à durée limitée, sans aucune gestion manuelle des jetons. Si vous préférez utiliser directement des jetons STS, demandez-les manuellement et créez un client STS explicitement.

Créez un client nommé ramRoleArnClient en utilisant un rôle RAM :

<?php

use AlibabaCloud\Client\AlibabaCloud;

AlibabaCloud::ramRoleArnClient(getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'), 'roleArn', 'roleSessionName')
              ->name('ramRoleArnClient');

Utiliser le rôle RAM d'une instance ECS

Lorsque le code s'exécute sur une instance Elastic Compute Service (ECS), le client peut récupérer un jeton STS depuis le serveur de métadonnées ECS via le rôle RAM attaché à l'instance. Cette approche évite de stocker des identifiants dans votre code ou votre environnement.

Créez un client nommé ecsRamRoleClient en exploitant le rôle RAM de l'instance ECS :

<?php

use AlibabaCloud\Client\AlibabaCloud;

AlibabaCloud::ecsRamRoleClient('roleName')->name('ecsRamRoleClient');

Utiliser un jeton bearer

Les jetons bearer sont pris en charge exclusivement par Cloud Call Center (CCC). Leur demande et leur gestion doivent être effectuées manuellement.

Créez un client nommé bearerTokenClient à partir d'un jeton bearer :

<?php

use AlibabaCloud\Client\AlibabaCloud;

AlibabaCloud::bearerTokenClient('bearerToken')->name('bearerTokenClient');

Utiliser la chaîne de fournisseurs d'identifiants par défaut

La chaîne de fournisseurs d'identifiants par défaut recherche les identifiants selon l'ordre suivant :

  1. Variables d'environnement

  2. Fichier de configuration

  3. Rôle RAM d'instance (métadonnées ECS)

1. Exploiter les identifiants issus des variables d'environnement

Si ALIBABA_CLOUD_ACCESS_KEY_ID et ALIBABA_CLOUD_ACCESS_KEY_SECRET possèdent des valeurs non nulles, la chaîne de fournisseurs s'en sert pour créer un client par défaut. Lorsque la requête cible un client autre que celui par défaut, la chaîne passe au fichier de configuration.

2. Recourir au fichier de configuration

Si un fichier d'identifiants est présent dans le répertoire personnel, la chaîne de fournisseurs crée automatiquement des clients en fonction du type et du nom indiqués dans ce fichier.

Chemins d'accès par défaut :

  • Linux/macOS : ~/.alibabacloud/credentials

  • Windows : C:\Users\USER_NAME\.alibabacloud\credentials

Comportements clés :

  • Les noms de clients ne tiennent pas compte de la casse. En cas de doublon, le dernier défini prévaut.

  • Une exception est levée si le fichier existe mais ne peut pas être analysé.

  • Ce fichier doit rester en dehors des projets et ne jamais être publié dans des dépôts publics.

  • Modifiez le chemin par défaut en définissant la variable d'environnement ALIBABA_CLOUD_CREDENTIALS_FILE.

  • Chargez manuellement des fichiers spécifiques avec AlibabaCloud::load('/data/credentials', 'vfs://AlibabaCloud/credentials', ...);

Références au répertoire personnel :

  • Windows : utilisez la variable d'environnement %UserProfile%

  • Systèmes de type Unix : utilisez la variable d'environnement $HOME ou le tilde (~)

L'exemple ci-dessous présente un fichier d'identifiants contenant plusieurs configurations de clients :

[default]                          # The default client.
enable = true                      # Enable the client. By default, the client is enabled if this parameter is not specified.
type = access_key                  # The authentication is based on AccessKey pairs.
access_key_id = foo                # Key
access_key_secret = bar            # Secret
region_id = cn-hangzhou            # Optional. The region ID.
debug = true                       # Optional. Specifies whether to enable the debug mode. The detailed information is displayed on the CLI in debug mode.
timeout = 0.2                      # Optional. The timeout period. If the value is greater than 1, the unit is seconds. If the value is smaller than 1, the value is multiplied by 1,000 and the unit is milliseconds.
connect_Timeout = 0.03             # Optional. The timeout period for connection requests. If the value is greater than 1, the unit is seconds. If the value is smaller than 1, the value is multiplied by 1,000 and the unit is milliseconds.
cert_file = /path/server.pem       # Optional. The certificate file.
cert_password = password           # Optional. The password of the certificate.
proxy = tcp://localhost:8125       # Optional. The common proxy.
proxy_http = tcp://localhost:8125  # Optional. The HTTP proxy.
proxy_https = tcp://localhost:9124 # Optional. The HTTPS proxy.
proxy_no = example.com             # Optional. The domain name that is ignored by the proxy.

[client1]                          # The client named client1.
type = ecs_ram_role                # The authentication is based on EcsRamRole credentials.
role_name = EcsRamRoleTest         # Role Name
#..................................# The other parameters are the same as those of the default client.

[client2]                          # The client named client2.
enable = false                     # The client is disabled.
type = ram_role_arn                # The authentication is based on RamRoleArn credentials.
access_key_id = foo
access_key_secret = bar
role_arn = role_arn
role_session_name = session_name
#..................................# The other parameters are the same as those of the default client.

[client3]                          # The client named client3.
type = rsa_key_pair                # The authentication is based on Rivest-Shamir-Adleman (RSA) key pairs.
public_key_id = publicKeyId        # Public Key ID
private_key_file = /your/pk.pem    # The private key file.
#..................................# The other parameters are the same as those of the default client.

3. Exploiter un rôle RAM d'instance

Lorsque ALIBABA_CLOUD_ECS_METADATA contient une valeur non nulle, la chaîne de fournisseurs interprète cette valeur comme le nom du rôle RAM et interroge http://100.100.100.200/latest/meta-data/ram/security-credentials/ pour obtenir des identifiants de sécurité temporaires. Ces identifiants servent ensuite à créer un client par défaut.

Chaîne de fournisseurs d'identifiants personnalisée

Construisez une chaîne de fournisseurs personnalisée ou transmettez une closure comme fournisseur d'identifiants :

<?php

use AlibabaCloud\Client\Credentials\Providers\CredentialsProvider;

CredentialsProvider::chain(
        CredentialsProvider::ini(),
        CredentialsProvider::env(),
        CredentialsProvider::instance()
);