Criando credenciais do IAM

É possível usar o IBM Cloud® Secrets Manager para gerar credenciais do IAM dinamicamente para acessar um recurso do IBM Cloud que requer autenticação IAM.

As credenciais do IAM são segredos dinâmicosUm valor exclusivo, como uma senha ou uma chave de API, que é criado dinamicamente e cedido em forma de lease para um aplicativo que requer acesso a um recurso protegido. Depois que um segredo dinâmico chega ao fim de seu lease, o acesso ao recurso protegido é revogado e o segredo é excluído automaticamente. que você pode usar para acessar um recurso do IBM Cloud. Um conjunto de credenciais do IAM consiste em um ID de serviço e uma chave de API gerados sempre que o recurso protegido é lido ou acessado. É possível definir um tempo de vida (TTL) ou uma duração de lease para sua credencial do IAM na criação dela para reduzir o período de tempo de existência do segredo.

Para saber mais sobre os tipos de segredos que podem ser gerenciados no Secrets Manager, consulte O que é um segredo?

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.

As credenciais do IAM exigem uma etapa de configuração antes que você possa começar a criá-las ou gerenciá-las no serviço. Para obter mais informações, consulte Configurando o mecanismo de credenciais do IAM.

Ao mudar o TTL de um segredo de credencial do IAM, ele será aplicado apenas na próxima rotação de versão secreta.

O segredo da credencial do IAM criado por Secrets Manager também será o nome da chave da API do IAM. Por exemplo, um segredo chamado my-secret-name terá uma chave de API correspondente chamada Secrets-Manager-IAM-Secret-my-secret-name. Se mais tarde você renomear o segredo em Secrets Manager, essa alteração não será refletida no IAM, mas a funcionalidade não será interrompida.

Um administrador de conta (ou qualquer entidade com o nível de acesso necessário) pode alterar externamente as credenciais do IAM que são criadas e gerenciadas pelo site Secrets Manager. Se essa ID de serviço ou chave de API 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.

Criando credenciais do IAM na IU

Para criar credenciais do IAM usando a IU do Secrets Manager, conclua 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 quadro Credenciais do IAM.

  5. Clique em Avançar.

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

  7. 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.

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

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

    1. Faça o upload de um arquivo ou insira os metadados e os metadados da versão no formato JSON.
  10. Clique em Avançar.

  11. Configure uma duração de lease ou um tempo de vida (TTL) para o segredo.

Ao configurar uma duração de lease para sua credencial do IAM, você determina por quanto tempo sua chave de API associada permanecerá válida. Depois que a credencial do IAM chegar ao término do lease, ela será revogada automaticamente.

A duração mínima é de 1 minuto. A máxima é 90 dias.

  1. Opcional: determine se as credenciais do IAM podem ser reutilizadas para o seu segredo.
  2. Opcional: Habilite a rotação automática do seu segredo. Os segredos podem ser rotacionados automaticamente somente se a opção reutilizar credenciais do IAM estiver selecionada.
  3. Clique em Avançar.
  4. Determine a conta de origem.
  5. Determine o escopo do acesso a ser atribuído.
  6. Clique em Avançar.
  7. Revise os detalhes do segredo.
  8. Clique em Incluir.

Reutilizando a mesma chave de API até que o lease expire

As credenciais do IAM consistem em um ID de serviço e uma chave de API. Por padrão, o ID de serviço e a chave de API são valores efêmeros de uso único que são gerados e excluídos toda vez que um segredo de credenciais do IAM é lido ou acessado.

Se desejar continuar a usar essas credenciais até o final do lease do seu segredo, configure a opção Reutilizar as credenciais do IAM até que o lease expire para Ativar. Quando você ativa essa opção, seu segredo retém o ID de serviço atual e os valores da chave de API e os reutiliza em cada leitura enquanto o segredo permanecer válido. Depois que o segredo chegar ao término de seu lease, as credenciais serão revogadas automaticamente.

Se a opção reutilizar credenciais do IAM estiver definida como Desativado, não haverá suporte para a rotação manual do segredo. Para obter mais informações, consulte Segredos de rotação manual

Determinar a conta de origem

O Secrets Manager pode criar e gerenciar segredos de credenciais do IAM a partir da conta atual IBM Cloud ou de uma conta específica IBM Cloud. Ao selecionar a criação de uma conta específica, forneça o ID da conta.

Determinar o escopo do acesso a ser atribuído

Talvez você já tenha um ID de serviço em sua conta para o qual deseja gerar uma chave de API, selecionando o ID de serviço. Como alternativa, você pode gerar uma ID de serviço e uma chave de API atribuindo acesso a um grupo de acesso.

Na etapa Atribuir acesso do assistente Criar credenciais do IAM, escolha um escopo de acesso para o seu segredo.

  1. Para usar um ID de serviço existente, selecione um ID na lista. Se a conta de origem for uma outra conta específica, forneça a ID da ID do serviço, no seguinte formato: ServiceId-c0c7cfa4-b24e-4917-ad74-278f2fee5ba0.

    Escolha esta opção quando precisar que o Secrets Manager gere e gerencie apenas uma chave de API para o seu segredo de credenciais do IAM, e não o próprio ID de serviço. A chave de API herda a política de acesso do ID de serviço que você seleciona de sua conta. Apenas os IDs de serviço aos quais você tem acesso são exibidos.

  2. Para gerar um novo ID de serviço e chave de API para o segredo, selecione um grupo de acesso. Se a conta de origem for uma conta específica, forneça as IDs dos grupos de acesso desejados.

    Ao selecionar um grupo de acesso, você determina o escopo das permissões atribuídas ao ID do serviço e à chave de API usando o grupo de acesso. A ID de serviço e a chave de API são geradas e associadas à sua nova credencial de IAM. É possível designar até 10 grupos de acesso.

    As políticas de acesso devem ser atribuídas ao(s) grupo(s) de acesso selecionado(s) e não diretamente aos IDs de serviço. O ID do serviço e a chave de API são excluídos e novos são criados quando o TTL da credencial do IAM é atingido.

Se você usou uma ID de serviço existente, a chave de API gerada pelo site Secrets Manager será automaticamente bloqueada. Se você selecionou um grupo de acesso, o novo ID de serviço e a chave de API que o Secrets Manager cria para o segredo são automaticamente bloqueados. Toda vez que você recupera um segredo de credenciais do IAM usando a API, a chave da API e o ID do serviço que o Secrets Manager gera são bloqueados, mesmo que você os desbloqueie manualmente antes de recuperar o segredo.

Criando credenciais do IAM por meio da CLI

Antes de começar, siga os documentos da CLI para definir seu endpoint de API.

Para criar um ID de serviço e uma chave de API usando o plug-in Secrets Manager CLI, execute o comando ibmcloud secrets-manager secret-create comando. Para criá-lo em uma outra conta específica, adicione a opção --iam-credentials-account-id.

ibmcloud secrets-manager secret-create --secret-type iam_credentials --secret-name "example-iam-credentials-secret" --secret-description "Description of my IAM credentials secret" --iam-credentials-access-groups ["<access_group_id>, ..."] --secret-ttl 30m --iam-credentials-reuse-apikey true

Para usar um ID de serviço existente e criar uma chave de API usando o plug-in da CLI Secrets Manager, execute o comando ibmcloud secrets-manager secret-create. Para criá-lo em uma outra conta específica, adicione a opção --iam-credentials-account-id.

ibmcloud secrets-manager secret-create --secret-type iam_credentials --secret-name "example-iam-credentials-secret" --secret-description "Description of my IAM credentials secret" --iam-credentials-service-id "ServiceId-c0c7cfa4-b24e-4917-ad74-278f2fee5ba0" --secret-ttl 90d --iam-credentials-reuse-apikey true

É possível encontrar o valor do ID de um ID de serviço na seção IAM do console. Vá para Gerenciar > Acesso (IAM) > IDs de serviço > nome. Clique em Details (Detalhes ) para visualizar o ID.

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.

Reutilizando a mesma chave de API até que o lease expire

Se quiser continuar a usar as credenciais do IAM até o final do contrato de locação do seu segredo, você poderá usar a opção --iam-credentials-reuse-apikey. Se definido como true, seu segredo retém os valores atuais de ID de serviço e chave de API e os reutiliza em cada leitura enquanto o segredo permanecer válido; caso contrário, defina-o como false. Por exemplo, o comando de exemplo a seguir cria credenciais IAM que podem ser reutilizadas até expirarem.

ibmcloud secrets-manager secret-create --secret-type iam_credentials --secret-name "example-iam-credentials-secret" --secret-description "Description of my IAM credentials secret" --iam-credentials-service-id "<iam_id_of_service_id>" --secret-ttl 30m --iam-credentials-reuse-apikey true

O comando gera o valor do ID do segredo, além de outros metadados. Depois que o segredo chegar ao término de seu lease, as credenciais serão revogadas automaticamente. Para obter mais informações sobre as opções de comando, consulte ibmcloud secrets-manager secret-create.

Se --iam-credentials-reuse-apikey estiver definido como false para credenciais do IAM, não haverá suporte para a rotação manual do segredo. Para obter mais informações, consulte Girando segredos manualmente.

Criando credenciais do IAM com a API

É possível criar credenciais do IAM programaticamente chamando a API do Secrets Manager.

O exemplo a seguir mostra uma consulta que você pode usar para criar um ID de serviço e uma chave de API. Ao chamar a API, substitua as variáveis de ID e o token IAM pelos valores que são específicos para a sua instância do Secrets Manager. Para criá-lo em uma outra conta específica, adicione o campo account_id.

Você pode armazenar metadados que são 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 personalizados do seu segredo são armazenados como todos os outros metadados, para versões de até 50 bits e você não deve incluir dados confidenciais.

curl -X POST
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
      {
        "name": "example-iam-credentials-secret",
        "description": "Description of my IAM Credentials secret",
        "secret_type": "iam_credentials",
        "secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
        "labels": [
          "dev",
          "us-south"
        ],
        "ttl": "30m",
        "access_groups": [
          "AccessGroupId-45884031-54be-4dd7-86ff-112511e92699",
          "AccessGroupId-8c0ed733-dfee-4a94-992b-e2247b86e2a2"
        ],
        "reuse_api_key": false,
        "custom_metadata": {
          "metadata_custom_key": "metadata_custom_value"
        },
        "version_custom_metadata": {
          "custom_version_key": "custom_version_value"
        }
      }' \ "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.

Reutilizando a mesma chave de API até que o lease expire

Se quiser usar as credenciais do IAM até o final do período de concessão do seu segredo, você poderá usar o campo reuse_api_key. Se configurado como true, seu segredo mantém seus valores de ID de serviço e de chave de API atuais e os reutilizará em cada leitura enquanto o segredo permanecer válido. Por exemplo, o comando de exemplo a seguir cria credenciais IAM que podem ser reutilizadas até expirarem.

Você pode armazenar metadados que são 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 personalizados do seu segredo são armazenados como todos os outros metadados, para versões de até 50 bits e você não deve incluir dados confidenciais.

curl -X POST
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
      {
        "name": "example-iam-credentials-secret",
        "description": "Description of my IAM Credentials secret",
        "secret_type": "iam_credentials",
        "secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
        "labels": [
          "dev",
          "us-south"
        ],
        "ttl": "30m",
        "access_groups": [
          "AccessGroupId-45884031-54be-4dd7-86ff-112511e92699",
          "AccessGroupId-8c0ed733-dfee-4a94-992b-e2247b86e2a2"
        ],
        "reuse_api_key": true,
        "custom_metadata": {
          "metadata_custom_key": "metadata_custom_value"
        },
        "version_custom_metadata": {
          "custom_version_key": "custom_version_value"
        }
      }' \
    "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"

Uma solicitação bem-sucedida retorna o valor de ID do segredo, juntamente com outros metadados. Depois que o segredo chegar ao término de seu lease, as credenciais serão revogadas automaticamente. Para obter mais informações, confira a Referência da API.

Se o reuse_api_key for false para credenciais do IAM, a rotação manual para o segredo não será suportada. Para obter mais informações, consulte Girando segredos manualmente.

Usando um ID de serviço existente em sua conta

Talvez você já tenha um ID de serviço em sua conta que deseja usar para gerar uma chave de API dinamicamente. Neste cenário, é possível optar por criar um segredo de credenciais do IAM, trazendo seu próprio ID de serviço. Por exemplo, o comando a seguir cria uma credencial do IAM usando o campo service_id. Para criá-lo em uma outra conta específica, adicione o campo account_id.

Você pode armazenar metadados que são 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 personalizados do seu segredo são armazenados como todos os outros metadados, para versões de até 50 bits e você não deve incluir dados confidenciais.

É possível encontrar o valor do ID de um ID de serviço na seção IAM do console. Vá para Gerenciar > Acesso (IAM) > IDs de serviço > nome. Clique em Details (Detalhes ) para visualizar o ID.

curl -X POST
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
          "name": "example-iam-credentials-secret",
          "description": "Description of my IAM Credentials secret",
          "secret_type": "iam_credentials",
          "secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
          "labels": [
            "dev",
            "us-south"
          ],
          "ttl": "30m",
          "service_id": "ServiceId-c0c7cfa4-b24e-4917-ad74-278f2fee5ba0,
          "reuse_api_key": false,
          "custom_metadata": {
            "metadata_custom_key": "metadata_custom_value"
          },
          "version_custom_metadata": {
            "custom_version_key": "custom_version_value"
          }
        }' \
  "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"

Uma solicitação bem-sucedida retorna o valor de ID do segredo, juntamente com outros metadados. Para obter mais informações, confira a Referência da API.

Criando credenciais do IAM com o Terraform

É possível criar credenciais do IAM programaticamente usando o Terraform for Secrets Manager.

Deve-se incluir um metaargumento do Terraform do depends_on e encaminhá-lo para seu recurso de configuração do IAM. O metaargumento depends_on instrui o Terraform a concluir todas as ações na configuração do IAM antes de você executar ações nos segredos de credenciais do IAM Ao criar um segredo de credenciais IAM entre contas, inclua a propriedade account_id, apontando para a conta IBM Cloud na qual a ID de serviço foi criada.

O exemplo a seguir mostra uma configuração que pode ser usada para criar as credenciais do IAM:

    resource "ibm_sm_iam_credentials_secret" "test_iam_credentials_secret" {
        instance_id = local.instance_id
        region = local.region
        service_id = "ServiceId-f4b2deac-fbb5-4bf7-85de-88426701db97"
        ttl = "1800"
        name = "test-iam-credentials-secret"
        reuse_api_key = true
        secret_group_id = ibm_sm_secret_group.sm_secret_group_test.secret_group_id
        depends_on = [
            ibm_sm_iam_credentials_configuration.iam_credentials_configuration
        ]
    }

Automatize a geração de credenciais IAM com o Terraform IBM Modules (TIM) para Secrets Manager Secret para implantações consistentes e com controle de versão. Saiba mais sobre o Terraform IBM Modules.

Como excluir credenciais do IAM

Se você tiver uma ID de serviço ou chave API que foi gerada pelo mecanismo secreto de credenciais do IAM e excluir sua instância de Secrets Manager, você também deve excluir o segredo do IAM. Para obter mais informações, consulte Gerenciando as chaves de API do usuário.