Criando credenciais de serviço

Você pode usar o site IBM Cloud® Secrets Manager para criar credenciais de serviço que poderão ser usadas para acessar um recurso IBM Cloud que exija 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, ID e senha de usuário do banco de dados, credenciais SASL ou certificados TLS. Para saber mais sobre os tipos de segredos que você pode gerenciar usando o 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 de acesso necessário, pode alterar externamente as credenciais de serviço criadas e gerenciadas pelo site Secrets Manager. Se essa credencial for excluída fora do site Secrets Manager, o serviço poderá se comportar de forma inesperada. 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 chamada my-secret-name. Se, posteriormente, 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, é necessário selecionar uma função de acesso ao 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:

  1. 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.
  2. 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 do usuário do Secrets Manager, siga as etapas a seguir.

  1. No console, clique no ícone Menu Ícone do menu > Lista de Recursos.

  2. Na lista de serviços, selecione sua instância do Secrets Manager.

  3. Na tabela Segredos, clique em Incluir.

  4. Na lista de tipos de segredos, clique no bloco “Credenciais de serviço ”.

  5. Clique em Avançar.

  6. Inclua um nome e uma descrição para identificar facilmente o segredo.

  7. Selecione o grupo de segredosO 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. ao qual você deseja atribuir o 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.

  8. Opcional: inclua rótulos para ajudar a procurar segredos semelhantes em sua instância.

  9. Selecione o serviço e a instância de serviço para 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

    1. Clique em Authorize e selecione Key Manager
  10. Clique em Avançar.

  11. Forneça a entrada solicitada dependendo do serviço selecionado.

  12. Opcional: inclua metadados em seu segredo ou em uma versão específica de seu segredo

    1. Faça o upload de um arquivo ou insira os metadados e os metadados da versão no formato JSON
  13. Opcional: Defina uma duração de validade ou tempo de vida (TTL) para o segredo.

    Ao definir a duração do contrato de locação da sua credencial de serviço, você determina por quanto tempo a credencial associada permanecerá válida. Após o término do prazo de validade da credencial do Serviço, ela é revogada automaticamente.

  14. Opcional: ative a rotação automática do seu segredo.

  15. Clique em Avançar.

  16. Revise os detalhes do segredo.

  17. Clique em Incluir.

Criação de credenciais de serviço pela 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 de IAM a ser fornecida para 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

É possível criar credenciais de serviço por meio de programação, chamando a API Secrets Manager.

É 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, é criada uma credencial de serviço para Cloud Object Storage, com parâmetros personalizados com uma ID de IAM de ID de serviço existente e ativação do HMAC. Além de especificar a função de IAM a ser fornecida para 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"
      }
    }

Implante credenciais de serviço com rotação automatizada usando o Terraform IBM Modules (TIM) para Secrets Manager Secret. Consulte o Terraform IBM Modules para obter exemplos.