Creación de credenciales de servicio
Puede utilizar IBM Cloud® Secrets Manager para crear credenciales de servicio que puede utilizar para acceder a un recurso IBM Cloud que requiere autenticación.
Las credenciales de servicio pueden contener las credenciales emitidas por Identity and Access Management. Las credenciales también pueden ser credenciales nativas específicas del servicio como, por ejemplo, claves HMAC, un ID de usuario y una contraseña de base de datos, credenciales SASL o certificados TLS. Para obtener más información sobre los tipos de secretos que puede gestionar mediante Secrets Manager, consulte ¿Qué es un secreto?
Servicios IBM Cloud soportados
Puede crear credenciales de servicio a través de Secrets Manager para los siguientes servicios de IBM Cloud:
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.
Un administrador de cuentas, o cualquier entidad con el nivel de acceso necesario, puede modificar externamente las credenciales de servicio creadas y gestionadas por Secrets Manager. Si dicha credencial se suprime fuera de Secrets Manager, es posible que el servicio se comporte de forma inesperada. Por ejemplo, es posible que no pueda crear o rotar credenciales.
Tenga en cuenta que en el caso de las credenciales de servicio creadas para bases de datos, si además de la credencial también está alterando los permisos de base de datos para la credencial creada, estas no se sincronizarán una vez que se haya rotado la credencial de servicio. Al rotar una credencial de servicio de bases de datos, esto se considera una rotación de identidad.
Al cambiar el TTL de un secreto de credencial de servicio, sólo se aplicará en la siguiente rotación de versión secreta.
El secreto de credencial de servicio que crea Secrets Manager también será el nombre de la clave de recurso. Por ejemplo, un secreto de credencial de servicio para Cloud Object Storage llamado my-secret-name
tendrá una clave de
recurso coincidente en Cloud Object Storage llamada my-secret-name
. Si más tarde va a cambiar el nombre del secreto en Secrets Manager, este cambio no se reflejará en la clave de recurso, pero la funcionalidad no se romperá.
Asignación del rol de acceso al servicio de IAM para credenciales de servicio
Para crear una credencial de servicio, se debe seleccionar un rol de acceso al servicio de IAM. Los roles disponibles para seleccionar pueden diferir entre los servicios soportados. Consulte la lista de servicios soportados para obtener la documentación relacionada. A continuación, el rol seleccionado se adjunta a un ID deIAM Service que puede ser un ID de servicio existente o uno generado automáticamente.
El ID de servicio continúa utilizándose una vez que tiene lugar la rotación secreta. Si se suprime un secreto, no se suprimirá un ID de servicio preexistente, pero se suprimirá un ID de servicio generado automáticamente.
Si selecciona utilizar un ID de servicio preexistente, también puede preconfigurar sus políticas de acceso al servicio. En tal caso, seleccione Ninguno como rol al crear el secreto. Más información sobre las políticas de IAM.
Procedimientos recomendados de credenciales de servicio
Se recomienda aplicar el principio de acceso con menos privilegios para casos de uso de producción:
- Al establecer la autorización de servicio a servicio, debe definirse entre instancias de servicio de origen y destino concretas, no entre todos los servicios.
- Cuando se establece manualmente el acceso para los ID de servicio que se van a utilizar con una credencial de servicio, se debe aplicar para una instancia de servicio concreta.
Creación de credenciales de servicio en la interfaz de usuario
Para crear credenciales de servicio mediante la interfaz de usuario Secrets Manager Complete los siguientes pasos.
-
En la consola, pulse el icono Menú
> Lista de recursos.
-
En la lista de servicios, seleccione la instancia de Secrets Manager.
-
En la tabla Secretos, pulse Añadir.
-
En la lista de tipos de secreto, haga clic en el mosaico Credenciales de servicio.
-
Pulse Siguiente.
-
Añada un nombre y una descripción para identificar fácilmente su secreto.
-
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.
-
Opcional: añada etiquetas para ayudarle a buscar secretos similares en la instancia.
-
Seleccione el servicio y la instancia de servicio deseados para crear una credencial para
Si es la primera vez que se selecciona la instancia de servicio o se proporciona un CRN de servicio, autorice primero a Secrets Manager a acceder a ella.
- Pulse Autorizar y seleccione Gestor de claves
-
Pulse Siguiente.
-
Proporcione la entrada solicitada, en función del servicio seleccionado.
-
Opcional: añada metadatos a su secreto o a una versión específica de su secreto.
-
Cargue un archivo o especifique los metadatos y los metadatos de versión en formato JSON.
-
Opcional: Establezca una duración de arrendamiento o tiempo de vida (TTL) para el secreto.
Al establecer una duración de arrendamiento para su credencial de Servicio, usted determina cuánto tiempo permanece válida su credencial asociada. Una vez que la credencial de servicio llega al final de su arrendamiento, se revoca automáticamente.
- Opcional: habilite la rotación automática del secreto.
- Pulse Siguiente.
- Revise los detalles de su secreto.
- Pulse Añadir.
Creación de credenciales de servicio desde la CLI
Para crear un secreto de credencial de servicio mediante el complemento de la CLI Secrets Manager CLI, ejecute el comando ibmcloud secrets-manager secret-create
comando Puede especificar el tipo de secreto utilizando la opción --secret-type service_credentials
. Por ejemplo, el mandato siguiente crea una credencial de servicio para una instancia de Cloud Object Storage, con soporte HMAC.
Además de especificar el rol de IAM para proporcionar esta credencial, por ejemplo, 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"}}'
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
.
Creación de credenciales de servicio con la API
Puede crear credenciales de servicio mediante programación llamando a la API Secrets Manager API.
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.
En el siguiente ejemplo, se crea una credencial de servicio para Cloud Object Storage, con parámetros personalizados con el ID de IAM de un ID de servicio existente y habilitando HMAC. Además de especificar el rol de IAM para proporcionar esta
credencial, por ejemplo, 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"
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.
Creación de credenciales de servicio con Terraform
Puede crear credenciales de servicio mediante programación utilizando Terraform para Secrets Manager. El siguiente ejemplo muestra una configuración que puede utilizar para crear credenciales de servicio para 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"
}
}