Conexión de servicios a aplicaciones

Conecte sus aplicaciones o herramientas de terceros a los servicios de IBM Cloud generando un nuevo conjunto de credenciales de servicio. Estas credenciales actúan como puente entre su aplicación, ya esté alojada en IBM Cloud® o en una plataforma externa como AWS, y el servicio IBM Cloud® que desea utilizar. Por ejemplo, si está integrando una aplicación alojada en AWS con watsonx Assistant, genera una credencial de servicio que proporciona el acceso necesario. A continuación, puede añadirlo a la configuración de su aplicación para establecer la conexión.

Para añadir credenciales a sus aplicaciones, consulte la documentación del tipo de aplicación u opción de cálculo que esté utilizando.

Creación de una credencial de servicio

Las credenciales que sólo pueden consultarse una vez deben guardarse de forma segura por si necesita recuperarlas más adelante. Esta propiedad no afecta a las credenciales existentes. Para más información, consulte Credenciales únicas.

Los servicios gestionados por IBM Cloud Identity and Access Management (IAM) pueden generar una clave de recurso, también conocida como credencial. Las credenciales son específicas del servicio y varían en función de cómo define cada servicio las credenciales que necesita generar. Una credencial puede contener un nombre de usuario, una contraseña, un nombre de host, un puerto y un identificador de sesión ( URL ), pero el contenido de cada credencial es exclusivo del servicio que lo genera.

Algunos servicios pueden generar más datos que requieren que se pasen parámetros. Por ejemplo, un servicio puede necesitar que especifique un parámetro de idioma para establecer el idioma predeterminado devuelto en la clave de recurso que se genera.

Las credenciales de un solo uso están desactivadas por defecto para todos los servicios que admiten credenciales de servicio (también conocidas como claves de recursos). Para obtener más información sobre los servicios que admiten credenciales de servicio, consulte Servicios admitidos IBM Cloud.

Para añadir credenciales a su servicio:

Complete los siguientes pasos para agregar una credencial a un servicio:

  1. En la lista de recursos, seleccione el nombre del servicio para abrir la página de detalles del servicio.

  2. Pulse Credenciales de servicio.

  3. Marque la opción Vista única, que determina si puede recuperar los valores de la clave de recurso más tarde.

    1. Actívelo o desactívelo en función de su uso. Los usuarios con el rol de Administrador en la instancia del recurso pueden gestionar esta configuración utilizando la API del Controlador de Recursos.

      Actívala para ayudar a garantizar el cumplimiento de las mejores prácticas y normativas de seguridad, como PCI DSS, impidiendo el acceso compartido a las credenciales.

  4. Haga clic en Crear credencial.

  5. Introduzca un nombre.

  6. Asignar un rol de acceso al servicio de IAM. Para obtener más información sobre los roles, consulte Roles de IAM(IBM Cloud ).

    1. Especifique None para no asignar ninguna función a la nueva credencial si desea gestionar el acceso asociando un ID de servicio nuevo o existente a la credencial de servicio.
  7. (Opcional) Seleccione un ID de servicio existente o Cree un nuevo ID de servicio para asociarlo con la credencial. De esta manera, puede gestionar el acceso directamente dentro de IAM yendo a Gestionar > Acceso (IAM) > ID de servicio. Para obtener más información, consulte Cómo crear y trabajar con ID de servicio.

    En el caso de los servicios con acceso a recursos de grano más fino, es posible que desee utilizar un ID de servicio para conceder acceso únicamente a un subrecurso, como un cubo de Object Storage.

  8. Haga clic en Opciones avanzadas para proporcionar más parámetros como un objeto JSON válido que contenga parámetros de configuración específicos del servicio, proporcionados en línea o en un archivo.

    La mayoría de los servicios no requieren parámetros adicionales, y para los servicios que sí los requieren, cada servicio define su propia lista exclusiva de parámetros. Para obtener una lista de los parámetros de configuración admitidos, consulte la documentación del servicio en cuestión.

  9. Haga clic en Crear para generar la nueva credencial de servicio.

    Las credenciales de servicio son de sólo lectura. El usuario puede copiar o descargar las credenciales.

  10. Si la credencial está configurada como vista una sola vez, no se puede volver a ver.

  11. Amplíe los detalles de su nueva credencial de servicio. Copie las propiedades de credenciales que necesita su aplicación o consumidor externo. Por ejemplo, la clave o contraseña de la API y URL.

Creación de una credencial de servicio mediante la API

Las credenciales que sólo pueden consultarse una vez deben guardarse de forma segura por si necesita recuperarlas más adelante. Esta propiedad no afecta a las credenciales existentes. Para más información, consulte Credenciales únicas.

IBM Cloud pueden generar una clave de recurso, también conocida como credencial. Las credenciales son específicas del servicio y varían en función de cómo define cada servicio las credenciales que necesita generar. Una credencial puede contener un nombre de usuario, una contraseña, un nombre de host, un puerto y un identificador de sesión ( URL ), pero el contenido de cada credencial es exclusivo del servicio que lo genera.

Algunos servicios pueden generar más datos que requieren que se pasen parámetros. Por ejemplo, un servicio puede necesitar que especifique un parámetro de idioma para establecer el idioma predeterminado devuelto en la clave de recurso que se genera.

Puede asignar un rol de acceso al servicio IAM a las nuevas credenciales que genere para un servicio IBM Cloud. Este rol otorga acceso a toda la instancia de servicio, no a un recurso específico. En el caso de los servicios con acceso a recursos de grano más fino, es posible que desee conceder acceso únicamente a un subrecurso, como un cubo de Object Storage. En este caso, no asigne ninguna función a la nueva credencial. De esta manera, puede gestionar el acceso granular asociando la credencial con un ID de servicio y crear una política de IAM que se aplique a un recurso específico, como un bucket. Para ello, vaya a Administrar > Acceso (IAM) > ID de servicio. Seleccione el ID de servicio con el mismo nombre que la clave de credencial de servicio y haga clic en Asignar acceso.

Para crear una clave de recurso, llame a la API del controlador de recursos, tal como se muestra en el ejemplo siguiente:

curl -X POST https://resource-controller.cloud.ibm.com/v2/resource_keys -H 'Authorization: Bearer <IAM_TOKEN>' -H 'Content-Type: application/json' -d '{
  "name": "my-instance-key-1",
  "source": "267bf377-7fa2-43f6-94ec-09103a8e89d4",
  "role": "Writer"
}'
ResourceKeyPostParameters parameters = new ResourceKeyPostParameters.Builder()
  .add("exampleParameter", "exampleValue")
  .build();
CreateResourceKeyOptions createResourceKeyOptions = new CreateResourceKeyOptions.Builder()
  .name(keyName)
  .source(instanceGuid)
  .parameters(parameters)
  .build();

Response<ResourceKey> response = service.createResourceKey(createResourceKeyOptions).execute();
ResourceKey resourceKey = response.getResult();

System.out.printf("createResourceKey() response:\n%s\n", resourceKey.toString());
const parameters = {
  'exampleParameter': 'exampleValue'
};

const params = {
  name: keyName,
  source: instanceGuid,
  parameters: parameters,
};

resourceControllerService.createResourceKey(params)
  .then(res => {
    instanceKeyGuid = res.result.guid;
    console.log('createResourceKey() response:\n' + JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
parameters = {
    'exampleParameter': 'exampleValue'
}
resource_key = resource_controller_service.create_resource_key(
    name=key_name,
    source=instance_guid,
    parameters=parameters
).get_result()

print('\ncreate_resource_key() response:\n',
      json.dumps(resource_key, indent=2))
createResourceKeyOptions := resourceControllerService.NewCreateResourceKeyOptions(
  keyName,
  instanceGUID,
)

parameters := &resourcecontrollerv2.ResourceKeyPostParameters{}
parameters.SetProperty("exampleParameter", "exampleValue")
createResourceKeyOptions.SetParameters(parameters)

resourceKey, response, err := resourceControllerService.CreateResourceKey(createResourceKeyOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(resourceKey, "", "  ")
fmt.Printf("\nCreateResourceKey() response:\n%s\n", string(b))

Utilice la clave API u otras propiedades de credenciales para conectar la instancia de servicio a su aplicación u otro consumidor externo.

Creación de una credencial de servicio mediante Terraform

Las credenciales que sólo pueden consultarse una vez deben guardarse de forma segura por si necesita recuperarlas más adelante. Esta propiedad no afecta a las credenciales existentes. Para más información, consulte Credenciales únicas.

Una credencial puede contener un nombre de usuario, contraseña, nombre de host, puerto y un URL, sin embargo el contenido de cada credencial es único para el servicio que genera it.Before puedes crear una credencial para conectar tu app o consumidor externo a un servicio IBM Cloud utilizando Terraform, asegúrate de que has completado lo siguiente:

  • Instale la CLI de Terraform y configure el plugin de proveedor de IBM Cloud para Terraform. Para obtener más información, consulte la guía de aprendizaje de Iniciación a Terraform en IBM Cloud®. El plug-in abstrae las API de IBM Cloud que se utilizan para completar esta tarea.
  • Cree un archivo de configuración de Terraform denominado main.tf. En este archivo, puede definir recursos utilizando HashiCorp Configuration Language. Para más información, consulte la documentación de Terraform.

Siga los pasos siguientes para crear una credencial para conectar su aplicación o consumidor externo a un servicio de IBM Cloud:

  1. Cree un argumento en el archivo main.tf. El ejemplo siguiente crea credenciales para un recurso sin un ID de servicio utilizando el recurso ibm_resource_instance, donde name es un nombre exclusivo que identifica la credencial.

    data "ibm_resource_instance" "resource_instance" {
     name = "myobjectsotrage"
    }
    
    resource "ibm_resource_key" "resourceKey" {
     name                 = "myobjectkey"
     role                 = "Viewer"
     resource_instance_id = data.ibm_resource_instance.resource_instance.id
    
     //User can increase timeouts
     timeouts {
       create = "15m"
      delete = "15m"
     }
    }
    

    De forma predeterminada, el recurso ibm_resource_key crea credenciales de servicio que utilizan el punto final de servicio público de un servicio

    Puede especificar tags asociadas con la instancia del grupo de recursos. Para obtener más información, consulte los detalles de referencia de los argumentos en la página Gestión de recursos de Terraform.

  2. Después de terminar de crear el archivo de configuración, inicialice la CLI de Terraform. Para obtener más información, consulte Inicialización de directorios de trabajo.

    terraform init
    
  3. Suministre los recursos desde el archivo main.tf. Para obtener más información, consulte Infraestructura de suministro con Terraform.

    1. Ejecute terraform plan para generar un plan de ejecución de Terraform para obtener una vista previa de las acciones propuestas.

      terraform plan
      
    2. Ejecute terraform apply para crear los recursos definidos en el plan.

      terraform apply
      

Utilice la clave API u otras propiedades de credenciales para conectar la instancia de servicio a su aplicación u otro consumidor externo.

Visualización de una credencial mediante Terraform

Puede recuperar una credencial después de crearla sólo si onetime_credentials es false para esa credencial. Los usuarios con el siguiente acceso en la instancia de recurso pueden ver los valores de clave de servicio para las credenciales que tienen onetime_credentials configurado en false.

  • Usuarios con acceso a la instancia de servicio igual o superior al acceso de la credencial de servicio. Para más información, consulte Acceso a nivel de credenciales.
  • Usuarios con el rol de Administrador en la instancia de servicio
  • Usuarios con la acción IAM resource-controller.credential.retrieve_all. Esta acción se realiza con el rol de Administrador.

Para ver una credencial de servicio existente para un servicio, siga estos pasos:

  1. Cree un argumento en el archivo main.tf. El siguiente ejemplo recupera una credencial existente para un recurso. Para obtener más información, consulte la documentación de ibm_resource_key Terraform.

    data "ibm_resource_key" "resourceKeydata" {
      name                  = "myobjectKey"
      resource_instance_id  = ibm_resource_instance.resource.id
    }
    
  2. Después de terminar de crear el archivo de configuración, inicialice la CLI de Terraform. Para obtener más información, consulte Inicialización de directorios de trabajo.

    terraform init
    
  3. Suministre los recursos desde el archivo main.tf. Para obtener más información, consulte Infraestructura de suministro con Terraform.

    1. Ejecute terraform plan para generar un plan de ejecución de Terraform para obtener una vista previa de las acciones propuestas.

      terraform plan
      
    2. Ejecute terraform apply para crear los recursos definidos en el plan.

      terraform apply
      

Credenciales únicas

Una instancia de recurso tiene una propiedad onetime_credentials que determina si las credenciales que se crean para esa instancia son de vista única. La configuración de la instancia en el momento de su creación determina cómo se establece la propiedad de cada credencial y no se puede modificar posteriormente.

  • Si esta propiedad se establece en false, la credencial puede ser recuperada en cualquier momento por los usuarios con acceso. Para obtener más información sobre cómo recuperar una credencial, consulte la documentación de Terraform ibm_resource_key.

  • Si esta propiedad se establece en true, sólo podrá ver la credencial en el momento de la creación

    Guarde las credenciales de vista única de forma segura utilizando un gestor de secretos, un gestor de contraseñas o un almacenamiento seguro, como Object Storage, en su aplicación para evitar pérdidas.

Habilite la vista única en las instancias de servicio para alinearse con el modelo de mínimo privilegio y evitar el acceso compartido a las credenciales. Las claves compartidas pueden dificultar la auditoría de cómo las identidades de su cuenta acceden a los recursos.

Gestión de la configuración de vista única para una instancia de recurso

Los usuarios con el rol de Administrador o la acción IAM resource-controller.instance.update_onetime_credential_off en la instancia de servicio pueden gestionar la configuración de vista única para una instancia de recurso.

 {
      "displayName": {
        "default": "Resource Instance Update Onetime Credential Off"
      },
      "description": {
        "default": "The ability to change onetime_credential from On to Off for existing instances."
      },
      "id": "resource-controller.instance.update_onetime_credential_off",
      "roles": [
        "crn:v1:bluemix:public:iam::::role:Administrator"
      ],
      "apiTypes": [
        "crn:v1:bluemix:public:context-based-restrictions::::platform-api-type:resource-management"
      ]
    }

Para obtener más información, consulte la documentación de ibm_resource_instance Terraform para actualizar la propiedad onetime_credentials. Cuando se cambia la configuración de una instancia, las credenciales existentes conservan la configuración que tenían en el momento de la creación.

Acceso a nivel de credencial

El acceso del usuario debe ser igual o superior al del acceso de la credencial de servicio. Por ejemplo, si la credencial tiene el rol de servicio IAM Writer, el usuario que está intentando ver la credencial debe tener el rol de servicio IAM Writer o Manager para ese servicio determinado asignado. Cuando un usuario no tiene el acceso correcto, se ocultan detalles como el valor de la clave de API:

    "credentials": {
        "REDACTED": "REDACTED"
    },

Acceso a nivel de IAM

Cuando el acceso a nivel de credencial no se puede determinar comparando el acceso del usuario y la credencial, la credencial se oculta:

    "credentials": {
        "REDACTED": "REDACTED_EXPLICIT"
    },

Visualización de una credencial

Después de crear una credencial para un servicio que tiene onetime_credentials configurado a false, se puede ver en cualquier momento para los usuarios que necesitan los valores de la credencial. Sin embargo, todos los usuarios deben tener el nivel correcto de acceso para ver los detalles de una credencial que incluye el valor de clave de API. Puede recuperar una credencial después de crearla sólo si la vista única está desactivada para esa credencial. Los usuarios con el siguiente acceso en la instancia de recurso pueden ver los valores de clave de servicio para las credenciales con la vista única desactivada.

  • Usuarios con acceso a la instancia de servicio igual o superior al acceso de la credencial de servicio. Para más información, consulte Acceso a nivel de credenciales.
  • Usuarios con el rol de Administrador en la instancia de servicio.
  • Usuarios con la acción IAM resource-controller.credential.retrieve_all. Esta acción se realiza con el rol de Administrador.

Para ver una credencial de servicio existente para un servicio, siga estos pasos:

  1. En la página Lista de recursos, seleccione el nombre del servicio para abrir la página de detalles de servicio.
  2. Pulse Credenciales de servicio.
  3. Amplíe Ver credenciales en la fila de una credencial existente.

Credenciales únicas

La credencial tiene una propiedad onetime_credentials que determina si se puede recuperar y ver la credencial después de su creación inicial. Si la propiedad es false, los usuarios con acceso pueden ver los valores de las credenciales en cualquier momento. Una instancia de recurso tiene un valor "Vista única" que determina si las credenciales que crea para esa instancia son de vista única. Las credenciales de vista única solo se pueden ver y guardar en el momento de su creación. La configuración de la instancia en el momento de su creación determina cómo se establece la propiedad de cada credencial y no se puede modificar posteriormente.

  • Si la vista única está "Desactivada", la credencial puede ser recuperada en cualquier momento por los usuarios con acceso.

  • Si la vista única está "Activada", sólo podrá ver la credencial en el momento de su creación.

    Guarde las credenciales de vista única de forma segura utilizando un gestor de secretos, un gestor de contraseñas o un almacenamiento seguro, como Object Storage, en su aplicación para evitar pérdidas.

Habilite la vista única en las instancias de servicio para alinearse con el modelo de mínimo privilegio y evitar el acceso compartido a las credenciales. Las claves compartidas pueden dificultar la auditoría de cómo las identidades de su cuenta acceden a los recursos.

Gestión de la configuración de vista única para una instancia de recurso

Los usuarios con el rol de Administrador o la acción IAM resource-controller.instance.update_onetime_credential_off en una instancia de servicio pueden gestionar la configuración de vista única para esa instancia.

 {
      "displayName": {
        "default": "Resource Instance Update Onetime Credential Off"
      },
      "description": {
        "default": "The ability to change onetime_credential from On to Off for existing instances."
      },
      "id": "resource-controller.instance.update_onetime_credential_off",
      "roles": [
        "crn:v1:bluemix:public:iam::::role:Administrator"
      ],
      "apiTypes": [
        "crn:v1:bluemix:public:context-based-restrictions::::platform-api-type:resource-management"
      ]
    }

Para obtener más información, consulte la API del controlador de recursos para actualizar la propiedad onetime_credentials de una instancia. Cuando se cambia la configuración de una instancia, las credenciales existentes conservan la configuración que tenían en el momento de la creación.

Las credenciales existentes creadas antes de este cambio de propiedad no se ven afectadas.

Acceso a nivel de credencial

El acceso del usuario debe ser igual o superior al del acceso de la credencial de servicio. Por ejemplo, si la credencial tiene el rol de servicio de IAM de Writer, el usuario que desee ver la credencial debe tener asignado el rol de servicio de IAM de Writer o de Manager para dicho servicio. Cuando un usuario no tiene el acceso correcto, se ocultan detalles como el valor de la clave de API:

    "credentials": {
        "REDACTED": "REDACTED"
    },

Acceso a nivel de IAM

Cuando el acceso a nivel de credencial no se puede determinar comparando el acceso del usuario y la credencial, la credencial se oculta:

    "credentials": {
        "REDACTED": "REDACTED_EXPLICIT"
    },

Para ver la credencial, el usuario debe tener la acción de acceso a nivel de IAM resource-controller.credential.retrieve_all. Esta acción se proporciona con el rol de administrador y prevalece sobre cualquier acceso de nivel de credencial que permita al usuario ver la credencial.

Visualización de una credencial mediante la API

Después de crear una credencial para un servicio que tiene onetime_credentials configurado a false, se puede ver en cualquier momento para los usuarios que necesitan los valores de la credencial. Sin embargo, todos los usuarios deben tener el nivel correcto de acceso para ver los detalles de una credencial que incluye el valor de clave de API. El acceso del usuario debe ser igual o superior al de la credencial de servicio. Por ejemplo, si la credencial tiene el rol de servicio IAM Writer, entonces el usuario que está intentando ver la credencial debe tener asignado el rol de servicio IAM Writer o Manager para ese servicio en particular. Puede recuperar una credencial después de crearla sólo si onetime_credentials es false para esa credencial. Los usuarios con el siguiente acceso en la instancia de recurso pueden ver los valores de clave de servicio para las credenciales que tienen onetime_credentials configurado en false.

  • Usuarios con acceso a la instancia de servicio igual o superior al acceso de la credencial de servicio. Para más información, consulte Acceso a nivel de credenciales.
  • Usuarios con el rol de Administrador en la instancia de servicio.
  • Usuarios con la acción IAM resource-controller.credential.retrieve_all. Esta acción se realiza con el rol de Administrador.

Para obtener una lista de todas las claves de recursos, llame a la API del controlador de recursos, tal como se muestra en el ejemplo siguiente:

curl -X GET https://resource-controller.cloud.ibm.com/v2/resource_keys -H 'Authorization: Bearer <IAM_TOKEN>'
ListResourceKeysOptions listResourceKeysOptions = new ListResourceKeysOptions.Builder()
  .name(keyName)
  .build();

Response<ResourceKeysList> response = service.listResourceKeys(listResourceKeysOptions).execute();
ResourceKeysList resourceKeysList = response.getResult();

System.out.printf("listResourceKeys() response:\n%s\n", resourceKeysList.toString());
const params = {
  name: keyName,
};

resourceControllerService.listResourceKeys(params)
  .then(res => {
    console.log('listResourceKeys() response:\n' + JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
resource_keys_list = resource_controller_service.list_resource_keys(
    name=key_name
).get_result()

print('\nlist_resource_keys() response:\n',
      json.dumps(resource_keys_list, indent=2))
listResourceKeysOptions := resourceControllerService.NewListResourceKeysOptions()
listResourceKeysOptions = listResourceKeysOptions.SetName(keyName)

resourceKeysList, response, err := resourceControllerService.ListResourceKeys(listResourceKeysOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(resourceKeysList, "", "  ")
fmt.Printf("\nListResourceKeys() response:\n%s\n", string(b))

Respuesta de ejemplo:

{
  "rows_count": 1,
  "next_url": null,
  "resources": [
    {
      "id": "crn:v1:bluemix:public:cloud-object-storage:global:a/4329073d16d2f3663f74bfa955259139:8d7af921-b136-4078-9666-081bd8470d94:resource-key:23693f48-aaa2-4079-b0c7-334846eff8d0",
      "guid": "23693f48-aaa2-4079-b0c7-334846eff8d0",
      "url": "/v2/resource_keys/23693f48-aaa2-4079-b0c7-334846eff8d0",
      "created_at": "2018-07-02T22:03:43.837979455Z",
      "updated_at": "2018-07-02T22:03:43.837979455Z",
      "deleted_at": null,
      "created_by": "IBMid-5500093BHN",
      "updated_by": "IBMid-5500093BHN",
      "deleted_by": "",
      "source_crn": "crn:v1:bluemix:public:cloud-object-storage:global:a/4329073d16d2f3663f74bfa955259139:8d7af921-b136-4078-9666-081bd8470d94::",
      "role": "crn:v1:bluemix:public:iam::::serviceRole:Writer",
      "name": "my-instance-key-1",
      "parameters": {
        "role_crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer"
      },
      "crn": "crn:v1:bluemix:public:cloud-object-storage:global:a/4329073d16d2f3663f74bfa955259139:8d7af921-b136-4078-9666-081bd8470d94:resource-key:23693f48-aaa2-4079-b0c7-334846eff8d0",
      "state": "active",
      "account_id": "4329073d16d2f3663f74bfa955259139",
      "resource_group_id": "0be5ad401ae913d8ff665d92680664ed",
      "resource_id": "dff97f5c-bc5e-4455-b470-411c3edbe49c",
      "onetime_credentials": false,
      "credentials": {
        "apikey": "XXXX-YYYY-ZZZZ\"",
        "endpoints": "https://cos-service-armada-s.us-south.containers.mybluemix.net/endpoints",
        "iam_apikey_description": "Auto generated apikey during resource-key operation for Instance - crn:v1:bluemix:public:cloud-object-storage:global:a/4329073d16d2f3663f74bfa955259139:8d7af921-b136-4078-9666-081bd8470d94::",
        "iam_apikey_name": "auto-generated-apikey-23693f48-aaa2-4079-b0c7-334846eff8d0",
        "iam_role_crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer",
        "iam_serviceid_crn": "crn:v1:bluemix:public:iam-identity::a/4329073d16d2f3663f74bfa955259139::serviceid:ServiceId-64c29e4f-422d-468c-a11b-1a8f671b5c89",
        "resource_instance_id": "crn:v1:bluemix:public:cloud-object-storage:global:a/4329073d16d2f3663f74bfa955259139:8d7af921-b136-4078-9666-081bd8470d94::"
      },
      "iam_compatible": true,
      "migrated": false,
      "resource_instance_url": "/v2/resource_instances/8d7af921-b136-4078-9666-081bd8470d94",
      "resource_alias_url": null
    }
  ]
}

Credenciales únicas

Una instancia de recurso tiene una propiedad onetime_credentials que determina si las credenciales que se crean para esa instancia son de vista única. La configuración de la instancia en el momento de su creación determina cómo se establece la propiedad de cada credencial y no se puede modificar posteriormente.

  • Si esta propiedad se establece en false, la credencial puede ser recuperada en cualquier momento por los usuarios con acceso. Para obtener más información sobre cómo recuperar una credencial, consulte la operación Obtener clave de recurso.

  • Si esta propiedad se establece en true, sólo podrá ver la credencial en el momento de la creación, así que asegúrese de guardarla de forma segura.

    Guarde las credenciales de vista única de forma segura utilizando un gestor de secretos, un gestor de contraseñas o un almacenamiento seguro, como Object Storage, en su aplicación para evitar pérdidas.

Habilite la vista única en las instancias de servicio para alinearse con el modelo de mínimo privilegio y evitar el acceso compartido a las credenciales. Las claves compartidas pueden dificultar la auditoría de cómo las identidades de su cuenta acceden a los recursos.

Gestión de la configuración de vista única para una instancia de recurso

Los usuarios con el rol de Administrador o la acción IAM resource-controller.instance.update_onetime_credential_off en una instancia de servicio pueden gestionar la configuración de vista única para esa instancia.

 {
      "displayName": {
        "default": "Resource Instance Update Onetime Credential Off"
      },
      "description": {
        "default": "The ability to change onetime_credential from On to Off for existing instances."
      },
      "id": "resource-controller.instance.update_onetime_credential_off",
      "roles": [
        "crn:v1:bluemix:public:iam::::role:Administrator"
      ],
      "apiTypes": [
        "crn:v1:bluemix:public:context-based-restrictions::::platform-api-type:resource-management"
      ]
    }

Para obtener más información, consulte la API del controlador de recursos para actualizar la propiedad onetime_credentials de una instancia. Cuando se cambia la configuración de una instancia, las credenciales existentes conservan la configuración que tenían en el momento de la creación.

Acceso a nivel de credencial

El acceso del usuario debe ser igual o superior al del acceso de la credencial de servicio. Por ejemplo, si la credencial tiene el rol de servicio IAM Writer, el usuario que está intentando ver la credencial debe tener el rol de servicio IAM Writer o Manager para ese servicio determinado asignado. Cuando un usuario no tiene el acceso correcto, se ocultan detalles como el valor de la clave de API:

    "credentials": {
        "REDACTED": "REDACTED"
    },

Acceso a nivel de IAM

Cuando el acceso a nivel de credencial no se puede determinar comparando el acceso del usuario y la credencial, la credencial se oculta:

    "credentials": {
        "REDACTED": "REDACTED_EXPLICIT"
    },

Para ver la credencial, el usuario debe tener la acción de acceso a nivel de IAM resource-controller.credential.retrieve_all. Esta acción se proporciona con el rol de administrador y prevalece sobre cualquier acceso de nivel de credencial que permita al usuario ver la credencial.