IBM Cloud Docs
Gerenciando chaves API do usuário

Gerenciando chaves API do usuário

Um usuário federado ou não federado pode criar uma chave de API para usar na CLI ou como parte da automação para fazer login como sua identidade de usuário. Você pode usar o console, a CLI ou a API para gerenciar as chaves da API IBM Cloud® listando-as, criando-as, atualizando-as ou excluindo-as.

A chave de API herda todo o acesso designado para a identidade do usuário para a qual ela é criada e o acesso não se limita apenas à conta em que a chave de API é criada porque herda quaisquer políticas que foram designadas ao usuário. Portanto, se o usuário tiver acesso a recursos de múltiplas contas, a chave de API herdará o acesso de todas as contas. Portanto, é possível que a chave de API de um usuário possa ser usada para gerar um token e acessar recursos aos quais um usuário tem acesso fora da conta na qual a chave de API foi criada.

A chave de API associada à sua identidade de usuário tem todo o acesso a que você tem direito em qualquer conta da qual você seja membro. Por esse motivo, você deve ser cauteloso ao usar sua chave de API. Por exemplo, um serviço do IBM Cloud pode precisar agir em nome de um usuário ou acessar serviços que não são ativados pelo IAM, portanto, o serviço pode solicitar uma chave de API do usuário. Nesses casos, crie uma chave de API associada a uma ID funcional à qual é atribuído o nível mínimo de acesso necessário para trabalhar com o serviço.

Um ID funcional é um ID do usuário criado para representar um programa, um aplicativo ou um serviço. O ID funcional pode ser convidado para uma conta e ter designado somente o acesso para um determinado propósito, como interagir com um recurso ou aplicativo específico. O ID funcional deve ter concedido somente o acesso de nível mínimo em uma única conta que é necessária para a função específica para a qual ele foi criado.

Se você estiver aplicando um perfil confiável, não poderá criar uma chave de API do usuário. Ainda é possível criar e gerenciar todas as outras chaves de API. Por exemplo, chaves API de ID de serviço. Para obter mais informações, consulte as Perguntas frequentes sobre o IAM.

Gerenciando chaves API do usuário

Para gerenciar as chaves de API do IBM Cloud que estão associadas à sua identidade de usuário ou aquelas que você tem acesso para gerenciar para outros usuários na conta, acesse Gerenciar > Acesso (IAM) > Chaves de API no console do IBM Cloud. Na página Chaves de API, você pode criar, editar ou excluir IBM Cloud Chaves de API para você. Você também pode gerenciar todas as chaves de API de infraestrutura clássica para usuários dos quais você é um ancestral na hierarquia de usuários. Além disso, se você for o proprietário da conta ou um usuário designado ao acesso necessário para gerenciar as chaves de API de outro usuário na conta, será possível usar o filtro Visualizar para listar e gerenciar essas chaves de API também.

Acesso necessário para o gerenciamento de chaves de API na página Chaves de API
Opções de filtro Chaves de API exibidas Acesso necessário Ações permitidas
Minhas chaves de API do IBM Cloud Suas chaves de API do IBM Cloud Nenhum acesso necessário Visualizar, criar, editar, excluir
Todas as chaves de API do IBM Cloud do usuário Todas as chaves de API do IBM Cloud criadas por todos os usuários na conta Função de administrador no serviço de Identidade do IAM Visualizar, editar e excluir

Criando uma chave de API no console

Como um usuário do IBM Cloud, você pode desejar usar uma chave API quando ativar um programa ou script sem distribuir sua senha para o script. Um benefício de usar uma chave de API é que um usuário ou organização pode criar várias chaves de API para programas diferentes. As chaves de API podem ser excluídas de forma independente se comprometidas, sem interferir em outras chaves de API ou até mesmo no usuário. É possível criar até 20 chaves API.

Para criar uma chave API para sua identidade do usuário na UI, conclua as etapas a seguir:

  1. No console do IBM Cloud, acesse Gerenciar > Acesso (IAM) > Chaves de API.
  2. Clique em Criar uma chave de API do IBM Cloud.
  3. Insira um nome e uma descrição para sua chave API.
  4. Clique em Criar.
  5. Em seguida, clique em Mostrar para exibir a chave de API. Ou clique em Copiar para copiar e salvá-la para mais tarde ou clique em Download.

Por motivos de segurança, a chave API está disponível apenas para ser copiada ou transferida por download no momento da criação. Se a chave API for perdida, uma nova chave API deverá ser criada.

Criando uma chave de API usando a CLI

Para criar uma chave API usando a CLI, use o comando a seguir:

  1. Digite ibmcloud iam api-key-create NAME [-d DESCRIPTION] [-f, --file FILE] [--action-if-leaked VALUE] e especifique um nome, uma descrição e um arquivo para salvar sua chave. Consulte o seguinte exemplo:
ibmcloud iam api-key-create MyKey -d "this is my API key" --file key_file --action-if-leaked "DELETE"

Para --action-if-leaked, os valores possíveis são "NONE" (nenhum), "DISABLE" (desativar) ou "DELETE" (excluir). A ação padrão é "DISABLE" (Desativar).

  • DISABLE (Desativar ): a desativação da chave bloqueia imediatamente sua capacidade de autenticar e acessar serviços. Você pode reativar a chave posteriormente, se necessário.
  • DELETE: a chave de API é permanentemente excluída de sua conta e não pode mais ser usada para autenticação. Essa ação não pode ser desfeita
  • NONE: A chave permanece ativa e ainda pode ser usada para acessar recursos.

Criando uma chave de API usando a API

Para criar uma chave de API, chame a API IAM Identity Service, conforme mostrado no exemplo a seguir:

curl -X POST 'https://iam.cloud.ibm.com/v1/apikeys' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json' -d '{
  "name": "My-apikey",
  "description": "my personal key",
  "iam_id": "IBMid-123WEREW",
  "account_id": "ACCOUNT_ID"
  "store_value": false
  "action_when_leaked": "delete"
  "support_sessions": false
}'
CreateApiKeyOptions createApiKeyOptions = new CreateApiKeyOptions.Builder()
    .name(apiKeyName)
    .iamId(iamId)
    .description("Example ApiKey")
    .build();

Response<ApiKey> response = service.createApiKey(createApiKeyOptions).execute();
ApiKey apiKey = response.getResult();
apikeyId = apiKey.getId();
System.out.println(apiKey.toString());
const params = {
  name: apikeyName,
  iamId: iamId,
  description: 'Example ApiKey',
};

iamIdentityService.createApiKey(params)
  .then(res => {
    apikeyId = res.result.id
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
api_key = iam_identity_service.create_api_key(
  name=apikey_name,
  iam_id=iam_id
).get_result()

apikey_id = api_key['id']

print(json.dumps(api_key, indent=2))
createAPIKeyOptions := iamIdentityService.NewCreateAPIKeyOptions(apikeyName, iamID)
createAPIKeyOptions.SetDescription("Example ApiKey")

apiKey, response, err := iamIdentityService.CreateAPIKey(createAPIKeyOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(apiKey, "", "  ")
fmt.Println(string(b))
apikeyID = *apiKey.ID

Para action_when_leaked, os valores possíveis são "none" (nenhum), "disable" (desativar) ou "delete" (excluir). A ação padrão é "desativar".

  • desativar: A desativação da chave bloqueia imediatamente sua capacidade de autenticar e acessar serviços. Você pode reativar a chave posteriormente, se necessário.
  • delete: A chave de API é permanentemente excluída de sua conta e não pode mais ser usada para autenticação. Essa ação não pode ser desfeita
  • nenhum: A chave permanece ativa e ainda pode ser usada para acessar recursos.

Para support_sessions, defina se você pode gerenciar sessões de login da CLI para a chave de API:

  • true (verdadeiro ): Cria sessões de login para essa chave de API, que você pode gerenciar revisando ou revogando sessões. Para obter mais informações, consulte Monitoramento de suas sessões de login.
  • falso: Nenhuma sessão é criada ou rastreada. Não é possível revogar ou revisar nenhum login e você deve excluir ou girar a própria chave da API para bloquear o acesso.

Antes de Iniciar

Antes de gerenciar as chaves de API do usuário usando o Terraform, certifique-se de concluir as etapas a seguir:

  • Instale o CLI Terraform e configure o plug-in do Provedor IBM Cloud Provider para Terraform. Para obter mais informações, veja o tutorial para Introdução ao Terraform em IBM Cloud®. O plug-in abstrai as APIs do IBM Cloud que são usadas para concluir esta tarefa.
  • Crie um arquivo de configuração do Terraform que seja denominado main.tf. Neste arquivo, você define recursos usando o HashiCorp Configuration Language. Para obter mais informações, consulte a documentação do Terraform.

Criação de uma chave de API usando o Terraform

Use as etapas a seguir para criar grupos de acesso usando Terraform.

  1. Crie um argumento em seu arquivo main.tf. O exemplo a seguir cria um grupo de acesso usando o recurso ibm_iam_api_key, em que name é um nome exclusivo para identificar a chave de API.

    resource "ibm_iam_api_key" "iam_api_key" {
     name        = "test1234"
    }
    

    A propriedade description só está disponível se uma descrição for fornecida durante a criação de chave API. Para obter mais informações, consulte os detalhes de referência do argumento na página do Terraform Identity and Access Management(IAM).

  2. Após finalizar a construção do seu arquivo de configuração, inicialize o CLI Terraform. Para obter mais informações, consulte Inicializando as Diretorias de Trabalho.

    terraform init
    
  3. Provisionar os recursos a partir do arquivo main.tf. Para obter mais informações, consulte Infraestrutura Provisória com Terraform.

    1. Execute terraform plan para gerar um plano de execução Terraforme para pré-visualizar as ações propostas.

      terraform plan
      
    2. Execute terraform apply para criar os recursos que estão definidos no plano.

      terraform apply
      

Atualização de uma chave de API no console

Se desejar mudar o nome ou a descrição de uma chave API, conclua as etapas a seguir na UI ou na CLI.

Para editar uma chave API, conclua as etapas a seguir:

  1. No console do IBM Cloud, acesse Gerenciar > Acesso (IAM) > Chaves de API.
  2. Identifique a linha da chave de API que deseja atualizar, e clique no ícone Ações Ícone de Ações > Editar.
  3. Atualize as informações de sua chave API.
  4. Clique em Aplicar.

Para editar uma chave de API que não é a sua, mas você tem acesso para gerenciar, acesse a página de chaves de API. Em seguida, selecione a opção Todas as chaves de API do IBM Cloud do usuário no menu Visualizar para localizar a chave de API.

Atualização de uma chave de API usando a CLI

Para editar uma chave API usando a CLI, insira o comando a seguir:

  1. Digite ibmcloud iam api-key-update NAME [-n NAME] [-d DESCRIPTION], especificando o nome antigo, o novo nome e a nova descrição da chave. Para obter mais informações, consulte o exemplo a seguir:
ibmcloud iam api-key-update MyCurrentName -n MyNewName -d "the new description of my key"

Atualizando uma chave de API usando a API

Para editar uma chave de API usando a API, chame a API IAM Identity Service, conforme mostrado no exemplo a seguir:

curl -X PUT 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID' -H 'Authorization: Bearer TOKEN' -H 'If-Match: <value of etag header from GET request>' -H 'Content-Type: application/json' -d '{
  "name": "My-apikey",
  "description": "my personal key"
}'
UpdateApiKeyOptions updateApiKeyOptions = new UpdateApiKeyOptions.Builder()
    .id(apikeyId)
    .ifMatch(apikeyEtag)
    .description("This is an updated description")
    .build();

Response<ApiKey> response = service.updateApiKey(updateApiKeyOptions).execute();
ApiKey apiKey = response.getResult();
System.out.println(apiKey.toString());
const params = {
  id: apikeyId,
  ifMatch: apikeyEtag,
  description: 'This is an updated description',
};

iamIdentityService.updateApiKey(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
api_key = iam_identity_service.update_api_key(
  id=apikey_id,
  if_match=apikey_etag,
  description='This is an updated description'
).get_result()

print(json.dumps(api_key, indent=2))
updateAPIKeyOptions := iamIdentityService.NewUpdateAPIKeyOptions(apikeyID, apikeyEtag)
updateAPIKeyOptions.SetDescription("This is an updated description")

apiKey, response, err := iamIdentityService.UpdateAPIKey(updateAPIKeyOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(apiKey, "", "  ")
fmt.Println(string(b))

Atualização de uma chave de API usando o Terraform

Use as seguintes etapas para atualizar uma chave API usando terraform:

  1. No arquivo de configuração do Terraform main.tf, localize o código do Terraform que você usou para criar o iam_api_key.

  2. O exemplo a seguir atualiza e chave API usando o recurso ibm_iam_api_key, em que name é um nome exclusivo para identificar a chave API.

    resource "ibm_iam_api_key" "iam_api_key" {
     name        = "test1234"
     description = "API key for users"
    }
    

    A propriedade description só está disponível se uma descrição for fornecida durante a criação de chave API. Para obter mais informações, consulte os detalhes de referência do argumento na página do Terraform Identity and Access Management(IAM).

  3. Provisionar os recursos a partir do arquivo main.tf. Para obter mais informações, consulte Infraestrutura Provisória com Terraform.

    1. Execute terraform plan para gerar um plano de execução Terraforme para pré-visualizar as ações propostas.

      terraform plan
      
    2. Execute terraform apply para criar os recursos que estão definidos no plano.

      terraform apply
      

Para obter mais informações, consulte a documentação do Terraform.

Bloqueio e desbloqueio de uma chave de API no console

Para chaves API da plataforma que representam sua identidade do usuário, é possível evitar que a chave API seja excluída bloqueando-a. Uma chave de API bloqueada tem o ícone Locked (Bloqueado) Ícone Locked(Bloqueado) ).

  1. No console do IBM Cloud, acesse Gerenciar > Acesso (IAM) > Chaves de API.
  2. Identifique a linha da chave de API que deseja bloquear, e clique no ícone Ações Ícone de Ações > Bloquear.

É possível desbloquear sua chave de API a qualquer momento para atualizar ou remover a chave de API de sua conta. Selecione a chave de API na tabela que deseja desbloquear e clique no ícone Ações Ícone de Ações > Desbloquear.

Bloqueando e desbloqueando uma chave API usando a CLI

Para chaves API da plataforma que representam sua identidade do usuário, é possível evitar que a chave API seja excluída bloqueando-a. Para bloquear uma chave de API, use o comando a seguir:

ibmcloud iam api-key-lock (NAME|UUID) [-f, --force]

Pré-requisitos: Terminal, Login

Opções de comando:

NAME (necessário)
O nome da chave de API a ser bloqueada, exclusiva com UUID.
UUID (necessário)
UUID da chave de API a ser bloqueada, exclusiva com NAME.
-f, --force
Força o bloqueio sem confirmação.

Exemplo:

Bloquear chave de API test-api-key

ibmcloud iam api-key-lock test-api-key

Para desbloquear uma chave de API, execute o comando a seguir:

ibmcloud iam api-key-unlock (NAME|UUID) [-f, --force]

Pré-requisitos: Terminal, Login

Opções de comando:

NAME (necessário)
Nome da chave API a ser desbloqueada, exclusiva com UUID.
UUID (necessário)
UUID da chave API a ser desbloqueada, exclusiva com NAME.
-f, --force
Forças desbloquear sem confirmação.

Exemplo:

Desbloquear chave de API test-api-key

ibmcloud iam api-key-unlock test-api-key

Bloqueando e desbloqueando uma chave de API usando a API

Para chaves API da plataforma que representam sua identidade do usuário, é possível evitar que a chave API seja excluída bloqueando-a.

Bloqueio de uma chave de API usando a API

Para bloquear uma chave de API usando a API, chame a API IAM Identity Service, conforme mostrado no exemplo a seguir:

curl -X POST 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID/lock' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
LockApiKeyOptions lockApiKeyOptions = new LockApiKeyOptions.Builder()
    .id(apikeyId)
    .build();

service.lockApiKey(lockApiKeyOptions).execute();
const params = {
  id: apikeyId,
};

iamIdentityService.lockApiKey(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
lock_api_key(self,
        id: str,
        **kwargs
    ) -> DetailedResponse

response = iam_identity_service.lock_api_key(id=apikey_id)

print(response)
lockAPIKeyOptions := iamIdentityService.NewLockAPIKeyOptions(apikeyID)

response, err := iamIdentityService.LockAPIKey(lockAPIKeyOptions)
if err != nil {
  panic(err)
}

Desbloqueando uma chave de API

Para desbloquear uma chave de API usando a API, chame a API IAM Identity Service, conforme mostrado no exemplo a seguir:

curl -X DELETE 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID/lock' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
UnlockApiKeyOptions unlockApiKeyOptions = new UnlockApiKeyOptions.Builder()
    .id(apikeyId)
    .build();

service.unlockApiKey(unlockApiKeyOptions).execute();
const params = {
  id: apikeyId,
};

iamIdentityService.unlockApiKey(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
response = iam_identity_service.unlock_api_key(id=apikey_id)

print(response)
unlockAPIKeyOptions := iamIdentityService.NewUnlockAPIKeyOptions(apikeyID)

response, err := iamIdentityService.UnlockAPIKey(unlockAPIKeyOptions)
if err != nil {
  panic(err)
}

Bloqueio e desbloqueio de uma chave de API usando o Terraform

Para chaves API da plataforma que representam sua identidade do usuário, é possível evitar que a chave API seja excluída bloqueando-a.

Bloqueando uma chave API usando Terraform

Use as seguintes etapas para bloquear uma chave API usando Terraform:

  1. No arquivo de configuração do Terraform main.tf, localize o código do Terraform que você usou para criar o iam_api_key.

  2. O exemplo a seguir atualiza e chave API usando o recurso ibm_iam_api_key, em que entity_lock indica se a chave API está bloqueada para mais operações de gravação. O valor padrão é false.

    resource "ibm_iam_api_key" "iam_api_key" {
     entity_lock        = "true"
    }
    
  3. Provisionar os recursos a partir do arquivo main.tf. Para obter mais informações, consulte Infraestrutura Provisória com Terraform.

    1. Execute terraform plan para gerar um plano de execução Terraforme para pré-visualizar as ações propostas.

      terraform plan
      
    2. Execute terraform apply para criar os recursos que estão definidos no plano.

      terraform apply
      

Para obter mais informações, consulte a documentação do Terraform.

Excluindo uma chave API

Se você está usando uma estratégia de rotação de chave, talvez queira excluir uma chave mais antiga e substituí-la por uma nova.

Para excluir uma chave API, conclua as etapas a seguir:

  1. No console do IBM Cloud, acesse Gerenciar > Acesso (IAM) > Chaves de API.
  2. Identifique a linha da chave de API que você deseja excluir e clique no ícone Ações ícone Ações > Delete.
  3. Em seguida, confirme a exclusão clicando em Excluir.

Para excluir uma chave de API que não é a sua, mas você tem acesso para gerenciar, acesse a página de chaves de API. Em seguida, selecione a opção Todas as chaves de API do IBM Cloud do usuário no menu Visualizar para localizar a chave de API.

Excluindo uma chave de API usando a CLI

Para excluir uma chave API usando a CLI:

Digite ibmcloud iam api-key-delete NAME, especificando o nome da chave a ser excluída.

Excluindo uma chave de API usando a API

Para excluir uma chave de API usando a API, chame a API IAM Identity Service, conforme mostrado no exemplo a seguir:

curl -X DELETE 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
DeleteApiKeyOptions deleteApiKeyOptions = new DeleteApiKeyOptions.Builder()
    .id(apikeyId)
    .build();

service.deleteApiKey(deleteApiKeyOptions).execute();
const params = {
  id: apikeyId,
};

iamIdentityService.deleteApiKey(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
delete_api_key(self,
        id: str,
        **kwargs
    ) -> DetailedResponse

response = iam_identity_service.delete_api_key(id=apikey_id)

print(response)
deleteAPIKeyOptions := iamIdentityService.NewDeleteAPIKeyOptions(apikeyID)

response, err := iamIdentityService.DeleteAPIKey(deleteAPIKeyOptions)
if err != nil {
  panic(err)
}