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
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:
Variáveis de ambiente
Arquivo de configuração
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/credentialsWindows:
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
$HOMEou 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()
);