Création d'une autorisation S2S pour accorder à IBM Cloud Logs l'accès à IBM Cloud Event Notifications

Utilisez IBM Cloud® Identity and Access Management (IAM) pour créer une autorisation qui accorde à IBM Cloud Logs l'accès au service IBM Cloud Event Notifications.

Avant de commencer

  • Consultez la rubrique Gestion des autorisations d'accès entre les services.

  • Vous devez avoir accès à IAM pour gérer les autorisations entre les services dans le compte IBM Cloud où l'instance IBM Cloud Event Notifications est provisionnée. Pour plus d'informations, voir Droits de gestion des autorisations.

  • L'autorisation que vous définissez pour le service IBM Cloud Logs nécessite que vous ayez le rôle Administrator pour l'instance IBM Cloud Event Notifications.

Rôles d'accès au service

Vous pouvez sélectionner l'un des rôles suivants que la source peut utiliser pour interagir avec la cible. Vous ne pouvez accorder que le niveau d'accès dont vous disposez en tant qu'utilisateur de la cible que vous avez sélectionnée.

  • Event Source Manager: Vous devez accorder le rôle Event Source Manager pour gérer l'intégration de la source avec le service IBM Cloud Event Notifications.
  • Reader: vous devez accorder le rôle Reader pour effectuer des actions en lecture seule dans un service, telles que l'affichage des ressources spécifiques au service.
  • Viewer: Vous devez accorder le rôle Viewer pour lister les instances de service IBM Cloud Event Notifications

Pour plus d'informations, voir Création d'une autorisation S2S pour travailler avec le service IBM Cloud Event Notifications.

Création d'une autorisation via la console

Vous devez créer l'autorisation de service à service dans le compte IBM Cloud où l'instance IBM Cloud Event Notifications est provisionnée.

Lorsque vous configurez l'autorisation, vous devez avoir l'accès et les permissions de créer des autorisations dans le compte où l'instance IBM Cloud Event Notifications est disponible. Pour le compte où l'instance IBM Cloud Logs est disponible, vous n'avez besoin que du numéro de compte pour configurer l'autorisation de service à service inter-comptes.

Procédez comme suit :

  1. Dans la console IBM Cloud, cliquez sur Gérer > Accès (IAM), puis sélectionnez Autorisations.

  2. Cliquez sur Créer.

  3. Sélectionnez un compte source.

    Si l'instance IBM Cloud Event Notifications et l'instance IBM Cloud Logs se trouvent dans le même compte, sélectionnez Ce compte.

    Si l'instance IBM Cloud Event Notifications et l'instance IBM Cloud Logs se trouvent dans des comptes différents, sélectionnez Autre compte. Ensuite, entrez l'ID du compte où l'instance IBM Cloud Logs est disponible.

  4. Sélectionnez Cloud Logs comme service source. Définissez ensuite la portée de l'accès.

    Sélectionnez Toutes les ressources pour accorder l'accès à toutes les instances du compte.

    Sélectionnez Instance de service source pour accorder l'accès à 1 instance IBM Cloud Logs.

  5. Sélectionnez Notification d'événements comme service cible. Définissez ensuite la portée de l'accès.

    Pour accorder l'accès à toutes les instances et ressources IBM Cloud Event Notifications du compte, sélectionnez Toutes les ressources.

    Pour accorder l'accès à une instance spécifique, sélectionnez une seule instance en configurant Ressources en fonction des attributs sélectionnés > Instance de service.

  6. Dans la section Accès au service, sélectionnez le rôle pour attribuer l'accès au service source qui accède au service cible.

    Sélectionnez Lecteur pour effectuer des actions en lecture seule au sein d'un service, telles que l'affichage des ressources spécifiques au service.

    Sélectionnez Viewer pour dresser la liste des instances de service IBM Cloud Event Notifications.

    Sélectionnez Gestionnaire de sources d'événements pour gérer l'intégration de la source avec le service de notifications d'événements.

  7. Cliquez sur Autoriser.

Création d'une autorisation à l'aide de l'interface de ligne de commande

Exécutez la commande suivante pour créer une autorisation pour le service IBM Cloud Logs.

ibmcloud iam authorization-policy-create logs event-notifications "Reader" [--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]

Pour plus de détails sur les paramètres disponibles de cette commande, voir ibmcloud iam authorization-policy-create.

Création d'une autorisation à l'aide de Terraform

Avant de créer une autorisation à l'aide de Terraform, vérifiez que vous avez effectué les opérations suivantes:

  • Installez l'interface de ligne de commande Terraform et configurez le plug-in IBM Cloud Provider pour Terraform. Pour plus d'informations, voir le tutoriel Initiation à Terraform sur IBM Cloud. Ce plug-in résume les API IBM Cloud utilisées pour effectuer cette tâche.
  • Créez un fichier de configuration Terraform nommé main.tf. Dans ce fichier, vous définissez des ressources à l'aide du langage de configuration HashiCorp. Pour plus d'informations, voir la documentation de Terraform.

Suivez les étapes suivantes pour créer une autorisation à l'aide de Terraform :

  1. Créez une règle d'autorisation entre les services à l'aide de l'argument de ressource ibm_iam_authorization_policy dans votre fichier main.tf.

    L'exemple suivant crée une autorisation entre deux services:

    resource "ibm_iam_authorization_policy" "policy" {
     source_service_name = "logs"
     target_service_name = "event-notifications"
     roles               = ["Reader"]
     description         = "Authorization Policy"
     transaction_id     = "terraformAuthorizationPolicy"
    }
    

    L'exemple suivant crée une autorisation entre deux instances de service spécifiques:

    resource "ibm_iam_authorization_policy" "policy" {
      source_service_name         = "logs"
      source_resource_instance_id = ibm_resource_instance.instance1.guid
      source_service_account      =
      target_service_name         = "event-notifications"
      target_resource_instance_id = ibm_resource_instance.instance2.guid
      roles                       = ["Reader"]
    }
    

    La ressource ibm_iam_authorization_policy requiert le service source, le service cible et le rôle. Le service source est autorisé à accéder au service cible et le rôle correspond au niveau d'autorisation autorisé par l'accès. Vous pouvez éventuellement ajouter une description pour l'autorisation et un ID de transaction.

  2. Une fois que vous avez terminé de générer votre fichier de configuration, initialisez l'interface de ligne de commande Terraform. Pour plus d'informations, voir Initialisation des répertoires de travail.

    terraform init
    
  3. Mettez à disposition les ressources à partir du fichier main.tf. Pour plus d'informations, voir Mise à disposition d'une infrastructure avec Terraform.

    1. Exécutez terraform plan pour générer un plan d'exécution Terraform afin de prévisualiser les actions proposées.

      terraform plan
      
    2. Exécutez terraform apply pour créer les ressources définies dans le plan.

      terraform apply
      

Création d'une autorisation à l'aide de l'API

Pour permettre à un service source d'accéder à un service cible, utilisez l'API de gestion des règles IAM. Voir l'exemple d'API suivant pour créer une méthode de stratégie avec l'adresse type=authorization spécifiée pour une cible event-notifications.

Les attributs pris en charge pour la création d'une règle d'autorisation dépendent des éléments pris en charge par chaque service. Pour plus d'informations sur les attributs pris en charge pour chaque service, consultez la documentation relative aux services que vous utilisez.

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": "event-notifications"
                }
            ]
        }
    ]
}'