Todos os produtos
Search
Central de documentação

Alibaba Cloud SDK:Gerencie credenciais de acesso

Última atualização: Jun 28, 2026

Configure as credenciais de acesso do Alibaba Cloud SDK V1.0 for PHP para autenticar chamadas de API com segurança.

Usar um par de AccessKey

Importante

Um par de AccessKey da conta Alibaba Cloud concede acesso total a todos os recursos da conta. Para minimizar o impacto de um vazamento de credenciais, use o par de AccessKey de um usuário RAM com permissões concedidas conforme o princípio do menor privilégio (PoLP) e alterne o par de AccessKey regularmente. Para obter informações sobre como criar um par de AccessKey para um usuário RAM, consulte Crie um par de AccessKey.

Crie um cliente padrão chamado default usando um par de 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');

Usar um token STS

Use credenciais temporárias do Security Token Service (STS) quando precisar de acesso de curta duração e escopo limitado. Solicite credenciais temporárias no STS e crie um cliente temporário:

<?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');

Usar uma função RAM

Atribua uma função RAM a um cliente para que ele obtenha e atualize automaticamente os tokens STS antes de cada solicitação de API. Isso gera um cliente STS com tempo limitado, sem necessidade de gerenciamento manual de tokens. Caso prefira usar tokens STS diretamente, solicite-os manualmente e crie um cliente STS explicitamente.

Crie um cliente chamado ramRoleArnClient usando uma função RAM:

<?php

use AlibabaCloud\Client\AlibabaCloud;

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

Usar a função RAM de uma instância ECS

Ao executar código em uma instância do Elastic Compute Service (ECS), o cliente pode buscar um token STS no servidor de metadados da ECS usando a função RAM associada à instância. Essa abordagem elimina a necessidade de armazenar credenciais no código ou no ambiente.

Crie um cliente chamado ecsRamRoleClient usando a função RAM da instância ECS:

<?php

use AlibabaCloud\Client\AlibabaCloud;

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

Usar um bearer token

O suporte a bearer tokens é exclusivo do Cloud Call Center (CCC). Solicite e gerencie esses tokens manualmente.

Crie um cliente chamado bearerTokenClient usando um bearer token:

<?php

use AlibabaCloud\Client\AlibabaCloud;

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

Usar a cadeia de provedores de credenciais padrão

A cadeia de provedores de credenciais padrão busca as credenciais na seguinte ordem:

  1. Variáveis de ambiente

  2. Arquivo de configuração

  3. Função RAM da instância (metadados da ECS)

1. Usar credenciais de variáveis de ambiente

Se ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET estiverem definidos com valores não nulos, a cadeia de provedores os usará para criar um cliente padrão. Caso a solicitação tenha como alvo um cliente não padrão, a cadeia passará para o arquivo de configuração.

2. Usar o arquivo de configuração

Quando existe um arquivo de credenciais no diretório inicial, a cadeia de provedores cria automaticamente clientes com base no type e no nome especificados no arquivo.

Caminhos padrão do arquivo:

  • Linux/macOS: ~/.alibabacloud/credentials

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

Comportamentos principais:

  • Os nomes dos clientes não diferenciam maiúsculas de minúsculas. Se dois clientes compartilharem o mesmo nome, o último definido terá precedência.

  • O sistema lançará uma exceção caso o arquivo exista, mas não possa ser analisado.

  • Armazene o arquivo fora dos projetos e jamais o envie para repositórios públicos.

  • Substitua o caminho padrão do arquivo definindo a variável de ambiente ALIBABA_CLOUD_CREDENTIALS_FILE.

  • Carregue arquivos específicos manualmente usando AlibabaCloud::load('/data/credentials', 'vfs://AlibabaCloud/credentials', ...);

Referências ao diretório inicial:

  • Windows: use a variável de ambiente %UserProfile%

  • Sistemas Unix-like: use a variável de ambiente $HOME ou um til (~)

O exemplo a seguir mostra um arquivo de credenciais com múltiplas configurações de clientes:

[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. Usar uma função RAM de instância

Quando ALIBABA_CLOUD_ECS_METADATA está definido com um valor não nulo, a cadeia de provedores trata esse valor como o nome da função RAM e consulta http://100.100.100.200/latest/meta-data/ram/security-credentials/ em busca de credenciais de segurança temporárias. Essas credenciais são então usadas para criar um cliente padrão.

Cadeia de provedores de credenciais personalizada

Construa uma cadeia de provedores personalizada ou passe um closure como provedor de credenciais:

<?php

use AlibabaCloud\Client\Credentials\Providers\CredentialsProvider;

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