Usando credenciais HMAC

As credenciais HMAC consistem em uma chave de acesso e uma chave secreta emparelhadas para uso com ferramentas e bibliotecas S3-compatible que requerem autenticação.

Credenciais HMAC definidas

A API do IBM Cloud® Object Storage é uma API baseada em REST para objetos de leitura e composição. Ela usa o IBM Cloud® Identity and Access Management para autenticação e autorização e suporta um subconjunto da API S3 para fácil migração de aplicativos para o IBM Cloud.

Criar credenciais HMAC no console

Os usuários podem criar um conjunto de credenciais HMAC como parte de uma Credencial de serviço alternando o Include HMAC Credential para On durante a criação de credenciais no console. A Figura 1 mostra a opção para configurar o parâmetro HMAC escolhendo "Opções avançadas".

configuração HMAC das opções avançadas
incluir credencial HMAC

Após a criação da Credencial de serviço, a chave HMAC é incluída no campo cos_hmac_keys. Essas chaves HMAC são, então, associadas a um ID de serviço e podem ser usadas para acessar quaisquer recursos ou operações permitidos pela função do ID de serviço.

Ao criar uma credencial de serviço, é possível fornecer um valor de None para a função. Isso evitará a criação de políticas de acesso do IAM indesejadas ou desnecessárias.. Qualquer política de acesso para o ID de serviço associado precisará ser gerenciada usando o console ou as APIs do IAM.

Criar credenciais HMAC usando a CLI

Também é possível usar a CLI do IBM Cloud® Object Storage para criar suas credenciais. Deve-se ter o IBM Cloud Platform Command Line Instructions já instalado antes de poder usar o exemplo.

ibmcloud resource service-key-create <key-name-without-spaces> Writer --instance-name "<instance name--use quotes if your instance name has spaces>" --parameters '{"HMAC":true}'

Um exemplo de credenciais HMAC

Se desejar armazenar os resultados da chave gerada, será possível anexar > file.skey ao final do exemplo. Para os propósitos deste conjunto de instruções, é necessário apenas localizar o título cos_hmac_keys com as chaves filhas, access_key_id e secret_access_key.

    cos_hmac_keys:
        access_key_id:      7exampledonotusea6440da12685eee02
        secret_access_key:  8not8ed850cddbece407exampledonotuse43r2d2586

Configurando credenciais HMAC como variáveis de ambiente

Depois de ter criado suas credenciais, é possível configurá-las como variáveis de ambiente (cujas instruções são específicas para o sistema operacional envolvido). Por exemplo, no Exemplo 3, um script .bash_profile contém COS_HMAC_ACCESS_KEY_ID e COS_HMAC_SECRET_ACCESS_KEY que são exportados ao iniciar um shell e usados no desenvolvimento.

export COS_HMAC_ACCESS_KEY_ID="7exampledonotusea6440da12685eee02"
export COS_HMAC_SECRET_ACCESS_KEY="8not8ed850cddbece407exampledonotuse43r2d2586"

Próximas etapas

Observe que ao usar credenciais HMAC para criar assinaturas a serem usadas com chamadas de API de REST diretas, estes cabeçalhos extras são necessários:

  1. Todas as solicitações devem ter um cabeçalho x-amz-date com a data no formato %Y%m%dT%H%M%SZ.
  2. Qualquer solicitação que possua uma carga útil (uploads de objetos, exclusão de vários objetos e assim por diante) deve fornecer um cabeçalho x-amz-content-sha256 com um hash SHA256 do conteúdo da carga útil
  3. As ACLs (diferentes de public-read) não são suportadas.

Nem todas as ferramentas compatíveis com S3 são suportadas atualmente. Algumas ferramentas tentam configurar ACLs diferentes de public-read na criação do depósito. A criação do depósito por meio dessas ferramentas falhará. Se uma solicitação " PUT bucket falhar com um erro de ACL não suportado, primeiro use o console, conforme mostrado na introdução, com IBM Cloud Object Storage para criar o bucket e, em seguida, configure a ferramenta para ler e gravar objetos nesse bucket. As ferramentas que configuram ACLs em gravações de objetos não são suportadas atualmente.