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

Utilisez IBM Cloud® Identity and Access Management (IAM) pour créer une autorisation qui donne IBM Cloud Logs accès au service IBM® Event Streams for IBM Cloud®.

Avant de commencer

Rôles d'accès au service

Vous devez accorder le rôle Writer pour gérer l'intégration de la source avec le service IBM® Event Streams for IBM Cloud®

Création d'une autorisation via la console

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 en effectuant l'une des opérations suivantes.

    • Si le service source qui a besoin d'accéder au service cible se trouve dans ce compte, sélectionnez Ce compte.

    • Si le service source qui a besoin d'accéder au service cible se trouve dans un autre compte, sélectionnez Autre compte. Entrez ensuite l'ID de compte du compte source.

  4. Sélectionnez Cloud Logs comme service source. Ensuite, définissez la portée de l'accès en effectuant l'une des opérations suivantes.

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

    • Sélectionnez Source service instance pour accorder l'accès à 1 IBM Cloud Logs instance.

  5. Sélectionnez Event Streams comme service cible. Ensuite, définissez la portée de l'accès en effectuant l'une des opérations suivantes.

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

    • Pour accorder l'accès à une instance spécifique, sélectionnez une seule instance en configurant Ressources basées sur les attributs sélectionnés > Instance du 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 Writer pour autoriser la diffusion en continu vers IBM® Event Streams for IBM Cloud®.

    Si vous disposez de l'autorisation IAM de créer des politiques et des autorisations, vous ne pouvez accorder que le niveau d'accès dont vous disposez en tant qu'utilisateur du service cible. Par exemple, si vous disposez d'un accès spectateur pour le service cible, vous ne pouvez attribuer que le rôle de spectateur pour l'autorisation. Si vous tentez d'attribuer une autorisation plus élevée, telle qu'administrateur, il peut sembler que l'autorisation est accordée, mais seule l'autorisation la plus élevée que vous avez pour le service cible, c'est-à-dire spectateur, sera attribuée.

  7. Cliquez sur Autoriser.

Si vous créez une autorisation entre un service d'un autre compte et un service cible de votre compte en cours, vous devez avoir accès uniquement à la ressource cible. Pour le compte source, vous n'avez besoin que du numéro de compte.

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 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]

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 pouvoir créer une autorisation à l'aide de Terraform, assurez-vous d'avoir effectué les opérations suivantes :

  • Installez le CLI Terraform et configurez le plug-in IBM Cloud Provider pour Terraform. Pour plus d'informations, consultez le tutoriel pour Démarrer avec 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 les ressources en utilisant le HashiCorp Configuration Language. 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 politique d'autorisation entre les services en utilisant 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 = "messagehub"
     roles               = ["Writer"]
     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
      target_service_name         = "messagehub"
      target_resource_instance_id = ibm_resource_instance.instance2.guid
      roles                       = ["Writer"]
    }
    

    La ressource ibm_iam_authorization_policy nécessite le service source, le service cible et le rôle. Le service source est autorisé à accéder au service cible, et le rôle est le niveau de permission que l'accès autorise. En option, vous pouvez ajouter une description de l'autorisation et un numéro d'identification de la transaction.

  2. Une fois que vous avez fini de construire votre fichier de configuration, initialisez le CLI Terraform. Pour plus d'informations, voir Initialisation des répertoires de travail.

    terraform init
    
  3. Mise à disposition des ressources du fichier main.tf. Pour plus d'informations, voir Provisionnement de l'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": "messagehub"
                }
            ]
        }
    ]
}'