Crear una autorización S2S para conceder IBM Cloud Logs acceso a IBM® Event Streams for IBM Cloud®

Utilice IBM Cloud® Identity and Access Management (IAM) para crear una autorización que conceda IBM Cloud Logs acceso al servicio IBM® Event Streams for IBM Cloud®.

Antes de empezar

Roles de acceso al servicio

Debe otorgar el rol Writer para manejar la integración de la fuente con el servicio IBM® Event Streams for IBM Cloud®.

Crear una autorización a través de la consola

Complete los pasossiguientes:

  1. En la consola de IBM Cloud, pulse Gestionar > Acceso (IAM) y seleccione Autorizaciones.

  2. Pulse Crear.

  3. Seleccione una cuenta de origen realizando una de las siguientes acciones.

    • Si el servicio de origen que necesita acceso al servicio de destino está en esta cuenta, seleccione Esta cuenta.

    • Si el servicio de origen que necesita acceso al servicio de destino está en una cuenta diferente, seleccione Otra cuenta. A continuación, especifique el ID de cuenta de la cuenta de origen.

  4. Seleccione Cloud Logs como servicio de origen. A continuación, establece el alcance del acceso realizando una de las siguientes acciones.

    • Seleccione Todos los recursos para conceder acceso a todas las instancias de la cuenta.

    • Seleccione Source service instance para conceder acceso a 1 instancia IBM Cloud Logs.

  5. Seleccione Event Streams como servicio de destino. A continuación, establece el alcance del acceso realizando una de las siguientes acciones.

    • Para conceder acceso a todas las instancias y recursos IBM® Event Streams for IBM Cloud® de la cuenta, seleccione Todos los recursos.

    • Para conceder acceso a una instancia específica, seleccione una única instancia configurando Recursos basados en atributos seleccionados > Instancia de servicio.

  6. En la sección Acceso al servicio, seleccione la función para asignar acceso al servicio de origen que accede al servicio de destino.

    Seleccione Escritor para autorizar la transmisión a IBM® Event Streams for IBM Cloud®.

    Si tiene permiso de IAM para crear políticas y autorizaciones, puede conceder sólo el nivel de acceso que tenga como usuario del servicio de destino. Por ejemplo, si tiene acceso de espectador para el servicio de destino, puede asignar sólo el rol de espectador para la autorización. Si intenta asignar un permiso superior, como el de administrador, puede parecer que se concede el permiso, sin embargo, sólo se asignará el permiso de nivel más alto que tenga para el servicio de destino, es decir, el de espectador.

  7. Pulse Autorizar.

Si crea una autorización entre un servicio en otra cuenta y un servicio de destino en la cuenta actual, solo debe tener acceso al recurso de destino. Para la cuenta de origen, solo necesita el número de cuenta.

Creación de una autorización utilizando la CLI

Ejecute el siguiente comando para crear una autorización para el servicio IBM Cloud Logs.

ibmcloud iam authorization-policy-create logs messagehub "Writer" [--source-service-instance-name SOURCE_SERVICE_INSTANCE_NAME | --source-service-instance-id SOURCE_SERVICE_INSTANCE_ID] [--target-service-instance-name TARGET_SERVICE_INSTANCE_NAME | --target-service-instance-id TARGET_SERVICE_INSTANCE_ID]

Para obtener más información sobre todos los parámetros que están disponibles para este mandato, consulte ibmcloud iam authorization-policy-create.

Creación de una autorización utilizando Terraform

Antes de poder crear una autorización mediante Terraform, asegúrese de haber completado lo siguiente:

  • Instale la CLI de Terraform y configure el complemento IBM Cloud Provider para Terraform. Para obtener más información, consulte el tutorial de Cómo empezar con 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, se definen los recursos mediante el lenguaje de configuración HashiCorp. Para más información, consulte la documentación de Terraform.

Siga los siguientes pasos para crear una autorización mediante Terraform:

  1. Cree una política de autorización entre servicios utilizando el argumento de recurso ibm_iam_authorization_policy en su archivo main.tf.

    El siguiente ejemplo crea una autorización entre 2 servicios:

    resource "ibm_iam_authorization_policy" "policy" {
     source_service_name = "logs"
     target_service_name = "messagehub"
     roles               = ["Writer"]
     description         = "Authorization Policy"
     transaction_id     = "terraformAuthorizationPolicy"
    }
    

    El siguiente ejemplo crea una autorización entre 2 instancias de servicio específicas:

    resource "ibm_iam_authorization_policy" "policy" {
      source_service_name         = "logs"
      source_resource_instance_id = ibm_resource_instance.instance1.guid
      target_service_name         = "messagehub"
      target_resource_instance_id = ibm_resource_instance.instance2.guid
      roles                       = ["Writer"]
    }
    

    El recurso ibm_iam_authorization_policy requiere el servicio de origen, el servicio de destino y el rol. El servicio de origen tiene acceso al servicio de destino, y el rol es el nivel de permiso que permite el acceso. Opcionalmente, puede añadir una descripción para la autorización y un ID de transacción.

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

    terraform init
    
  3. Aprovisiona los recursos del archivo main.tf. Para obtener más información, consulte Provisionamiento de infraestructura con Terraform.

    1. Ejecuta terraform plan para generar un plan de ejecución Terraform para previsualizar las acciones propuestas.

      terraform plan
      
    2. Ejecuta terraform apply para crear los recursos que se definen en el plan.

      terraform apply
      

Creación de una autorización utilizando la API

Para autorizar a un servicio de origen a acceder a un servicio de destino, utilice la API de gestión de políticas de IAM. Consulte el siguiente ejemplo de API para crear un método de política con la dirección type=authorization especificada para un destino event-notifications.

Los atributos admitidos para crear una política de autorización dependen de lo que admite cada servicio. Para obtener más información sobre los atributos admitidos para cada servicio, consulte la documentación de los servicios que esté utilizando.

curl --request POST \
  --url https://iam.cloud.ibm.com/v1/policies \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "type": "authorization",
    "subjects": [
        {
            "attributes": [
                {
                    "name": "accountId",
                    "value": "<account-id>"
                },
                {
                    "name": "serviceName",
                    "value": "logs"
                }
            ]
        }
    ],
    "roles": [
        {
            "role_id": "crn:v1:bluemix:public:event-notifications::::serviceRole:Reader"
        }
    ],
    "resources": [
        {
            "attributes": [
                {
                    "name": "serviceName",
                    "value": "messagehub"
                }
            ]
        }
    ]
}'