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.
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:
- No console do IBM Cloud, acesse Gerenciar > Acesso (IAM) > Chaves de API.
- Clique em Criar uma chave de API do IBM Cloud.
- Insira um nome e uma descrição para sua chave API.
- Clique em Criar.
- 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:
- 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.
-
Crie um argumento em seu arquivo
main.tf
. O exemplo a seguir cria um grupo de acesso usando o recursoibm_iam_api_key
, em quename
é 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). -
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
-
Provisionar os recursos a partir do arquivo
main.tf
. Para obter mais informações, consulte Infraestrutura Provisória com Terraform.-
Execute
terraform plan
para gerar um plano de execução Terraforme para pré-visualizar as ações propostas.terraform plan
-
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:
- No console do IBM Cloud, acesse Gerenciar > Acesso (IAM) > Chaves de API.
- Identifique a linha da chave de API que deseja atualizar, e clique no ícone Ações
> Editar.
- Atualize as informações de sua chave API.
- 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:
- 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:
-
No arquivo de configuração do Terraform
main.tf
, localize o código do Terraform que você usou para criar oiam_api_key
. -
O exemplo a seguir atualiza e chave API usando o recurso
ibm_iam_api_key
, em quename
é 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). -
Provisionar os recursos a partir do arquivo
main.tf
. Para obter mais informações, consulte Infraestrutura Provisória com Terraform.-
Execute
terraform plan
para gerar um plano de execução Terraforme para pré-visualizar as ações propostas.terraform plan
-
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 ).
- No console do IBM Cloud, acesse Gerenciar > Acesso (IAM) > Chaves de API.
- Identifique a linha da chave de API que deseja bloquear, e clique no ícone 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 > 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:
-
No arquivo de configuração do Terraform
main.tf
, localize o código do Terraform que você usou para criar oiam_api_key
. -
O exemplo a seguir atualiza e chave API usando o recurso
ibm_iam_api_key
, em queentity_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" }
-
Provisionar os recursos a partir do arquivo
main.tf
. Para obter mais informações, consulte Infraestrutura Provisória com Terraform.-
Execute
terraform plan
para gerar um plano de execução Terraforme para pré-visualizar as ações propostas.terraform plan
-
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:
- No console do IBM Cloud, acesse Gerenciar > Acesso (IAM) > Chaves de API.
- Identifique a linha da chave de API que você deseja excluir e clique no ícone Ações
> Delete.
- 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)
}