Creación de credenciales de IAM

Puede utilizar IBM Cloud® Secrets Manager para generar de forma dinámica credenciales de IAM para acceder a un recurso de IBM Cloud que requiere autenticación de IAM.

Las credenciales IAM son secretos dinámicosUn valor exclusivo, como una contraseña o una clave de API, que se crea dinámicamente y se cede a una aplicación que requiere acceso a un recurso protegido. Una vez que finaliza la cesión del secreto dinámico, el acceso al recurso protegido se revoca y el secreto se suprime automáticamente. que se pueden utilizar para acceder a un recurso de IBM Cloud. Un conjunto de credenciales de IAM consta de un ID de servicio y una clave de API que se genera cada vez que se accede o se lee el recurso protegido. Puede definir un tiempo de vida (TTL) o una duración de arrendamiento para la credencial de IAM en su creación, de modo que acorte el intervalo de tiempo durante el que existe el secreto.

Para obtener más información sobre los tipos de secretos que puede gestionar en Secrets Manager, consulte ¿Qué es un secreto?

Antes de empezar

Antes de empezar, asegúrese de que tiene el nivel de acceso necesario. Para crear o añadir secretos, necesita el rol de servicio Escritor o superior.

Las credenciales IAM requieren un paso de configuración antes de poder empezar a crearlas o gestionarlas en el servicio. Para obtener más información, consulte Configuración del motor de credenciales de IAM.

Al cambiar el TTL de un secreto de credencial de IAM, sólo se aplicará en la siguiente rotación de versión secreta.

El secreto de la credencial IAM creado por Secrets Manager será también el nombre de la clave API IAM. Por ejemplo, un secreto llamado my-secret-name tendrá una clave API coincidente llamada Secrets-Manager-IAM-Secret-my-secret-name. Si más tarde cambia el nombre del secreto en Secrets Manager, este cambio no se reflejará en IAM pero la funcionalidad no se romperá.

Un administrador de cuentas (o cualquier entidad con el nivel de acceso requerido) puede alterar externamente las Credenciales IAM creadas y gestionadas por Secrets Manager. Si se elimina un ID de servicio o una clave API de este tipo fuera de Secrets Manager, el servicio podría comportarse de forma inesperada. Por ejemplo, es posible que no pueda crear o rotar credenciales.

Creación de credenciales de IAM en la interfaz de usuario

Para crear credenciales de IAM utilizando la interfaz de usuario de Secrets Manager, realice los pasos siguientes.

  1. En la consola, pulse el icono Menú Icono de menú > Lista de recursos.

  2. En la lista de servicios, seleccione la instancia de Secrets Manager.

  3. En la tabla Secretos, pulse Añadir.

  4. En la lista de tipos secretos, pulse el mosaico Credenciales de IAM.

  5. Pulse Siguiente.

  6. Añada un nombre y una descripción para identificar fácilmente su secreto.

  7. Seleccione el grupoEl entorno y las restricciones a los que se deben ajustar los secretos contenidos en una instancia. Se puede asociar un usuario con un grupo de secretos para permitir el acceso y la colaboración. secreto que desea asignar al secreto.

    ¿No tiene ningún grupo de secretos? En el campo Grupo de secretos, puede pulsar Crear para proporcionar un nombre y una descripción para un grupo nuevo. Su secreto se añade automáticamente al nuevo grupo. Para obtener más información sobre grupos de secretos, consulte Organización de los secretos.

  8. Opcional: añada etiquetas para ayudarle a buscar secretos similares en la instancia.

  9. Opcional: añada metadatos a su secreto o a una versión específica de su secreto.

    1. Cargue un archivo o especifique los metadatos y los metadatos de versión en formato JSON.
  10. Pulse Siguiente.

  11. Establezca una duración de arrendamiento o un tiempo de vida (TTL) para el secreto.

Al establecer una duración de arrendamiento para la credencial de IAM, se determina durante cuánto tiempo sigue siendo válida su clave de API asociada. Cuando la credencial de IAM alcanza el final de su arrendamiento, se revoca automáticamente.

La duración mínima es 1 minuto. El máximo es 90 días.

  1. Opcional: Determine si las credenciales de IAM se pueden reutilizar para su secreto.
  2. Opcional: habilite la rotación automática del secreto. Los secretos se pueden rotar automáticamente sólo si la opción de reutilizar credenciales IAM está seleccionada.
  3. Pulse Siguiente.
  4. Determine la cuenta de origen.
  5. Determina el ámbito de acceso a asignar.
  6. Pulse Siguiente.
  7. Revise los detalles de su secreto.
  8. Pulse Añadir.

Reutilizar la misma clave de API hasta que caduque la concesión

Las credenciales de IAM constan de un ID de servicio y una clave de API. De forma predeterminada, el ID de servicio y la clave de API son valores efímeros que se generan y se suprimen cada vez que se lee o se accede a un secreto de credenciales de IAM.

Si desea continuar utilizando esas credenciales hasta el final de la cesión de su secreto, puede establecer Reutilizar credenciales de IAM hasta que caduque la cesión en On (Encendido). Cuando activas esta opción, tu secreto retiene su ID de servicio actual, y los valores de la clave API y los reutiliza en cada lectura mientras el secreto siga siendo válido. Una vez que el secreto alcanza el final de su arrendamiento, las credenciales se revocan automáticamente.

Si la opción de reutilización de credenciales IAM está desactivada, no se admite la rotación manual del secreto. Para obtener más información, consulte Secretos de rotación manual.

Determinar la cuenta de origen

Secrets Manager puede crear y gestionar secretos de credenciales IAM desde la cuenta IBM Cloud actual o desde una cuenta IBM Cloud específica. Cuando seleccione crear una desde una cuenta específica, proporcione el ID de la cuenta.

Determinar el alcance del acceso a asignar

Es posible que ya tenga un ID de servicio en su cuenta para el que desee generar una clave API seleccionando el ID de servicio. Alternativamente, puede generar tanto un ID de servicio como una clave API asignando el acceso a un grupo de acceso.

En el paso Asignar acceso del asistente Crear credenciales IAM, elija un ámbito de acceso para su secreto.

  1. Para utilizar un ID de servicio existente, seleccione un ID de la lista. Si la cuenta de origen es otra cuenta específica, proporcione el ID del ID de servicio, con el siguiente formato: ServiceId-c0c7cfa4-b24e-4917-ad74-278f2fee5ba0.

    Elija esta opción cuando necesite que Secrets Manager genere y gestione solo una clave de API para el secreto de credenciales de IAM, y no el ID de servicio. La clave de API hereda la política de acceso del ID de servicio que seleccione en la cuenta. Solo se muestran los ID de servicio a los que tiene acceso.

  2. Para generar un nuevo ID de servicio y una clave de API para el secreto, seleccione un grupo de acceso. Si la cuenta de origen es una cuenta específica, proporcione los ID de los grupos de acceso deseados.

    Al seleccionar un grupo de acceso, se determina el alcance de los permisos que se asignan al ID de servicio y a la clave API mediante el grupo de acceso. El ID de servicio y la clave API se generan y se asocian a su nueva credencial IAM. Puede asignar hasta 10 grupos de acceso.

    Las políticas de acceso deben asignarse a los grupos de acceso seleccionados y no directamente a los ID de servicio. Tanto el ID de servicio como la clave API se eliminan y se crean otros nuevos una vez que se alcanza el TTL de la credencial IAM.

Si ha utilizado un ID de servicio existente, la clave API generada por Secrets Manager se bloquea automáticamente. Si ha seleccionado un grupo de acceso, tanto el nuevo ID de servicio como la clave API que Secrets Manager crea para el secreto se bloquean automáticamente. Cada vez que recupera un secreto de credenciales de IAM mediante la API, la clave de API y el ID de servicio que genera Secrets Manager se bloquean, incluso si los desbloquea manualmente antes de recuperar el secreto.

Creación de credenciales de IAM desde la CLI

Antes de empezar, siga las instrucciones de la CLI para configurar el punto final de la API.

Para crear un ID de servicio y una clave de API mediante el complemento CLI de Secrets Manager, ejecute el comando ibmcloud secrets-manager secret-create comando. Para crearla en otra cuenta específica añade la opción --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 utilizar un ID de servicio existente y crear una clave de API mediante el complemento Secrets Manager CLI, ejecute el comando ibmcloud secrets-manager secret-create. Para crearla en otra cuenta específica añade la opción --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

Puede encontrar el valor ID de un servicio ID en la sección IAM de la consola. Vaya a Gestionar > Acceso (IAM) > ID de servicio > nombre. Haga clic en Detalles para ver el ID.

El mandato genera el valor de ID del secreto, junto con otros metadatos. Para obtener más información sobre las opciones de mandato, consulte ibmcloud secrets-manager secret-create.

Reutilizar la misma clave de API hasta que caduque la concesión

Si desea seguir utilizando las credenciales de IAM hasta el final del contrato de arrendamiento de su secreto, puede utilizar la opción --iam-credentials-reuse-apikey. Si se establece en true, su secreto conserva su ID de servicio actual y los valores de la clave API y los reutiliza en cada lectura mientras el secreto siga siendo válido, de lo contrario, establézcalo en false. Por ejemplo, el siguiente comando ejemplo crea credenciales IAM que pueden reutilizarse hasta que caduquen.

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

El mandato genera el valor de ID del secreto, junto con otros metadatos. Una vez que el secreto alcanza el final de su arrendamiento, las credenciales se revocan automáticamente. Para obtener más información sobre las opciones de mandato, consulte ibmcloud secrets-manager secret-create.

Si --iam-credentials-reuse-apikey está configurado como false para las credenciales IAM, no se admite la rotación manual del secreto. Para obtener más información, consulte Rotar secretos manualmente.

Creación de credenciales de IAM con la API

Puede crear credenciales de IAM mediante programación llamando a la API de Secrets Manager.

El siguiente ejemplo muestra una consulta que puede utilizar para crear un ID de servicio y una clave de API. Cuando llame a la API, sustituya las variables de ID y la señal de IAM por los valores que son específicos de la instancia de Secrets Manager. Para crearla en otra cuenta específica añade el campo account_id.

Puede almacenar metadatos que sean relevantes para las necesidades de su organización con los parámetros de solicitud custom_metadata y version_custom_metadata. Los valores de version_custom_metadata sólo se devuelven para las versiones de un secreto. Los metadatos personalizados del secreto se almacenan como todos los demás metadatos, para un máximo de 50 versiones, y no debe incluir datos confidenciales.

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"

Una respuesta correcta devuelve el valor de ID del secreto, junto con otros metadatos. Para obtener más información sobre los parámetros de solicitud obligatorios y opcionales, consulte el apartado Referencia de API.

Reutilizar la misma clave de API hasta que caduque la concesión

Si desea utilizar las credenciales IAM hasta el final del arrendamiento de su secreto, puede utilizar el campo reuse_api_key. Si está establecido en true, el secreto conserva su ID de servicio actual y sus valores de clave de API y los vuelve a utilizar en cada lectura mientras el secreto siga siendo válido. Por ejemplo, el siguiente comando ejemplo crea credenciales IAM que pueden reutilizarse hasta que caduquen.

Puede almacenar metadatos que sean relevantes para las necesidades de su organización con los parámetros de solicitud custom_metadata y version_custom_metadata. Los valores de version_custom_metadata sólo se devuelven para las versiones de un secreto. Los metadatos personalizados del secreto se almacenan como todos los demás metadatos, para un máximo de 50 versiones, y no debe incluir datos confidenciales.

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"

Una solicitud correcta devuelve el valor de ID del secreto, junto con otros metadatos. Una vez que el secreto alcanza el final de su arrendamiento, las credenciales se revocan automáticamente. Para obtener más información, consulte la Referencia de API.

Si reuse_api_key es false para credenciales de IAM, no se da soporte a la rotación manual del secreto. Para obtener más información, consulte Rotar secretos manualmente.

Utilizar un ID de servicio existente en su cuenta

Es posible que ya tenga un ID de servicio en la cuenta que desee utilizar para generar dinámicamente una clave de API. En este caso, puede elegir crear un secreto de credenciales de IAM aportando su propio ID de servicio. Por ejemplo, el mandato siguiente crea una credencial de IAM utilizando el campo service_id. Para crearlo en otra cuenta específica añade el campo account_id.

Puede almacenar metadatos que sean relevantes para las necesidades de su organización con los parámetros de solicitud custom_metadata y version_custom_metadata. Los valores de version_custom_metadata sólo se devuelven para las versiones de un secreto. Los metadatos personalizados del secreto se almacenan como todos los demás metadatos, para un máximo de 50 versiones, y no debe incluir datos confidenciales.

Puede encontrar el valor ID de un servicio ID en la sección IAM de la consola. Vaya a Gestionar > Acceso (IAM) > ID de servicio > nombre. Haga clic en Detalles para ver el 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"

Una solicitud correcta devuelve el valor de ID del secreto, junto con otros metadatos. Para obtener más información, consulte la Referencia de API.

Creación de credenciales de IAM con Terraform

Puede crear credenciales de IAM mediante programación utilizando Terraform para Secrets Manager.

Debe añadir un meta-argumento de Terraform de depends_on y hacer referencia a su recurso de configuración de IAM. El meta-argumento depends_on indica a Terraform que complete todas las acciones en la configuración de IAM antes de realizar acciones en los secretos de credenciales de IAM. Al crear un secreto de credenciales IAM entre cuentas, incluya la propiedad account_id, que apunta a la cuenta IBM Cloud en la que se creó el ID de servicio.

El ejemplo siguiente muestra una configuración que puede utilizar para crear credenciales de 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
        ]
    }

Automatice la generación de credenciales de IAM con los módulos Terraform IBM (TIM) para Secrets Manager Secret para obtener implementaciones coherentes y controladas por versiones. Más información sobre los módulos de Terraform IBM.

Supresión de credenciales de IAM

Si tiene un ID de servicio o una clave de API que ha generado el motor de secretos de credenciales de IAM y suprime la instancia de Secrets Manager, también debe suprimir el secreto de IAM. Para obtener más información, consulte Gestión de claves de API de usuario.