Criando credenciais de serviço
É possível usar IBM Cloud® Secrets Manager para criar credenciais de serviço que podem ser usadas para acessar um recurso IBM Cloud que requer autenticação.
As credenciais de serviço podem conter as credenciais emitidas do Identity and Access Management. As credenciais também podem ser credenciais nativas específicas do serviço, como chaves HMAC, um ID do usuário e senha do banco de dados, credenciais SASL ou certificados TLS.. Para saber mais sobre os tipos de segredos que você pode gerenciar usando Secrets Manager, consulte O que é um segredo?
Serviços do IBM Cloud suportados
É possível criar credenciais de serviço por meio do Secrets Manager para os serviços do IBM Cloud a seguir:
Antes de Iniciar
Antes de começar, certifique-se de ter o nível de acesso necessário. Para criar ou incluir segredos, é necessária a função de serviço Gravador ou superior.
Um administrador de conta ou qualquer entidade com o nível necessário de acesso pode alterar externamente as credenciais de serviço que são criadas e gerenciadas pelo Secrets Manager. Se essa credencial for excluída fora do Secrets Manager, o serviço poderá se comportar inesperadamente. Por exemplo, talvez não seja possível criar ou girar credenciais.
Observe que, no caso de credenciais de serviço criadas para Bancos de dados, se, além da credencial, você também estiver alterando as permissões do banco de dados para a credencial criada, elas não serão sincronizadas quando a credencial de serviço for girada. Ao girar uma credencial de serviço de Bancos de Dados, isso é considerado uma rotação de identidade
Ao mudar o TTL de um segredo de credencial de serviço, ele será aplicado apenas na próxima rotação da versão secreta.
O segredo da credencial de serviço criado por Secrets Manager também será o nome da chave do recurso. Por exemplo, um segredo de credencial de serviço para Cloud Object Storage chamado my-secret-name
terá uma chave de recurso correspondente
em Cloud Object Storage chamado my-secret-name
. Se mais tarde você renomear o segredo em Secrets Manager, essa alteração não será refletida na chave do recurso, mas a funcionalidade não será interrompida.
Designando a função de acesso ao serviço do IAM para credenciais de serviço
Para criar uma credencial de serviço, deve-se selecionar uma função de acesso de serviço do IAM As funções disponíveis das quais selecionar podem diferir entre os serviços suportados Consulte a lista de serviços suportados para obter a documentação relacionada A função selecionada é, então, anexada a um IAM Service ID que pode ser um ID de serviço existente ou um gerado automaticamente.
O ID de serviço continua a ser usado quando a rotação de segredo ocorre. Se excluir um segredo, um ID de serviço pré-existente não será excluído, no entanto, um ID de serviço gerado automaticamente será excluído.
Se você selecionar para usar um ID de serviço pré-existente, também poderá pré-configurar suas políticas de acesso ao serviço. Nesse caso, selecione Nenhum como a Função ao criar o segredo.. Saiba mais sobre as políticas do IAM
Melhores práticas de credenciais de serviço
Recomenda-se aplicar o princípio de acesso de privilégio mínimo para casos de uso de produção:
- Ao configurar a autorização de serviço para serviço, ela deve ser definida entre instâncias de serviço de origem e de destino concretas, não entre todos os serviços.
- Ao configurar manualmente o acesso para os IDs de serviço a serem usados com uma credencial de serviço, ele deve ser aplicado para uma instância de serviço concreta
Criação de credenciais de serviço na interface do usuário
Para criar credenciais de serviço usando a interface Secrets Manager Conclua as etapas a seguir.
-
No console, clique no ícone Menu
> Lista de Recursos.
-
Na lista de serviços, selecione sua instância do Secrets Manager.
-
Na tabela Segredos, clique em Incluir.
-
Na lista de tipos de segredo, clique no bloco Credenciais de serviço.
-
Clique em Avançar.
-
Inclua um nome e uma descrição para identificar facilmente o segredo.
-
Selecione o grupo secretoO ambiente e as restrições que contêm segredos em uma instância devem estar em conformidade com ele. Um usuário pode ser associado a um grupo de segredos para ativar o acesso e a colaboração. que você deseja atribuir ao segredo.
Você não tem um grupo de segredos? No campo Grupo de segredos, é possível clicar em Criar para fornecer um nome e uma descrição para um novo grupo. Seu segredo é incluído no novo grupo automaticamente. Para obter mais informações sobre grupos de segredos, confira Organizando seus segredos.
-
Opcional: inclua rótulos para ajudar a procurar segredos semelhantes em sua instância.
-
Selecione o serviço desejado e a instância de serviço para a qual criar uma credencial
Se essa for a primeira vez que a instância de serviço é selecionada ou um CRN de serviço foi fornecido, primeiro autorize o Secrets Manager para acessá-lo
- Clique em Autorizar e selecione Key Manager
-
Clique em Avançar.
-
Forneça a entrada solicitada dependendo do serviço selecionado.
-
Opcional: inclua metadados em seu segredo ou em uma versão específica de seu segredo
-
Faça o upload de um arquivo ou insira os metadados e os metadados da versão no formato JSON
-
Opcional: Defina uma duração de concessão ou tempo de vida (TTL) para o segredo.
Ao definir uma duração de concessão para sua credencial de serviço, você determina por quanto tempo a credencial associada permanece válida. Depois que a credencial de serviço chega ao fim de sua concessão, ela é revogada automaticamente.
- Opcional: ative a rotação automática do seu segredo.
- Clique em Avançar.
- Revise os detalhes do segredo.
- Clique em Incluir.
Criação de credenciais de serviço na CLI
Para criar um segredo de credencial de Serviço usando o plug-in da CLI Secrets Manager, execute o comando ibmcloud secrets-manager secret-create
.
É possível especificar o tipo de segredo usando a opção --secret-type service_credentials
. Por exemplo, o comando a seguir cria uma credencial de Serviço para uma instância do Cloud Object Storage, com suporte de HMAC Além de
especificar a função do IAM para fornecer essa credencial, por exemplo, Writer
.
ibmcloud secrets-manager secret-create --secret-type="service_credentials" --secret-name="example-service-credentials-secret" --secret-source-service='{"instance": {"crn": "CRN of the instance to create a credential for"},"parameters": {"HMAC": true},"role": {"crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer"}}'
O comando gera o valor do ID do segredo, além de outros metadados. Para obter mais informações sobre as opções de comando, consulte ibmcloud secrets-manager secret-create
.
Criação de credenciais de serviço com a API
Você pode criar credenciais de serviço programaticamente chamando a API Secrets Manager API.
É possível armazenar metadados relevantes para as necessidades de sua organização com os parâmetros de solicitação custom_metadata
e version_custom_metadata
. Os valores do version_custom_metadata
são retornados
apenas para as versões de um segredo Os metadados customizados de seu segredo são armazenados como todos os outros metadados, para até 50 versões e você não deve incluir dados confidenciais.
No exemplo a seguir, uma credencial de serviço para Cloud Object Storage é criada, com parâmetros personalizados com um ID IAM de ID de serviço existente e ativando o HMAC. Além de especificar a função do IAM para fornecer essa credencial, por
exemplo, Writer
.
curl -X POST
-H "Authorization: Bearer {iam_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
{
"name": "example-service-credentials-secret",
"description": "Description of my Service Credentials secret",
"secret_type": "service_credentials",
"secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
"labels": [
"dev",
"us-south"
],
"source_service": {
"instance": {
"crn": "CRN of the instance to create a credential for"
},
"parameters": {
"serviceid_crn": "Existing Service ID's IAM ID",
"HMAC": true
},
"role": {
"crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer"
}
}
}' \ "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"
Uma resposta bem-sucedida retorna o valor de ID do segredo, além de outros metadados. Para obter mais informações sobre os parâmetros de solicitação opcionais e necessários, confira a Referência de API.
Criação de credenciais de serviço com o Terraform
Você pode criar credenciais de serviço de forma programática usando o Terraform para Secrets Manager. O exemplo a seguir mostra uma configuração que você pode usar para criar credenciais de serviço para o Cloud Object Storage.
resource "ibm_sm_service_credentials_secret" "my_service_credentials_secret" {
instance_id = "local.instance_id"
region = "local.region"
name = "example-service-credentials-secret"
secret_group_id = "ibm_sm_secret_group.sm_secret_group_test.secret_group_id"
description = "Description of my Service Credentials secret"
ttl = "24h"
source_service {
role = {
crn = "crn:v1:bluemix:public:iam::::serviceRole:Writer"
},
instance = {
crn = "crn:v1:bluemix:public:cloud-object-storage:global:a/347df6de25020f0fa8b711c6d9881111:f35e85fc-3d4d-476e-8547-51222e3c1111::"
},
parameters = {
HMAC: true
}
}
rotation {
auto_rotate = true
interval = 1
unit = "day"
}
}