Se connecter à SAP Datasphere

En tant qu'administrateur BigQuery, vous pouvez créer une connexion permettant d'accéder aux données SAP Datasphere. Cette connexion permet aux analystes de données d'interroger des données dans SAP Datasphere.

Avant de commencer

  1. Activez l'API BigQuery Connection.

    Activer l'API

  2. Créez un utilisateur de base de données SAP Datasphere. Notez le nom d'utilisateur, le mot de passe, le nom d'hôte et le port auxquels BigQuery doit se connecter.

  3. Configurez votre locataire SAP Datasphere pour qu'il accepte le trafic provenant de vos adresses IP sélectionnées en effectuant l'une des opérations suivantes :

    Pour en savoir plus sur la configuration de votre locataire SAP Datasphere, consultez la section Ajouter une adresse IP à la liste d'autorisation d'adresses IP.

Rôles requis

Pour obtenir les autorisations nécessaires pour vous connecter à SAP Datasphere, demandez à votre administrateur de vous accorder le rôle IAM Administrateur de connexion BigQuery (roles/bigquery.connectionAdmin) sur le projet. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Connecter BigQuery à SAP Datasphere

Vous pouvez connecter BigQuery à SAP Datasphere via la console Google Cloud ou dans l'outil de ligne de commande bq.

Console

  1. Dans la console Google Cloud, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le panneau Explorateur, cliquez sur add Ajouter.

  3. Dans le champ de recherche, recherchez l'option Connexions à des sources de données externes et sélectionnez-la.

  4. Dans la boîte de dialogue Source de données externes, procédez comme suit :

    • Dans le champ Type de connexion, sélectionnez SAP HANA.
    • Dans le champ ID de connexion, saisissez un ID de connexion afin d'identifier cette connexion.
    • Dans le champ Type d'emplacement, spécifiez une région de l'ensemble de données BigQuery à combiner avec les données de SAP Datasphere. Les requêtes utilisant cette connexion doivent être exécutées à partir de cette région.
    • Facultatif : Dans le champ Nom descriptif, saisissez un nom clair pour identifier la connexion, tel que My connection resource. Le nom descriptif peut être n'importe quelle valeur permettant d'identifier la ressource de connexion si vous devez la modifier par la suite.
    • Facultatif : Dans le champ Description, saisissez une description pour la ressource de connexion.
    • Dans le champ Chiffrement, sélectionnez Clé de chiffrement gérée par Google ou Clé de chiffrement gérée par le client (CMEK). L'utilisation d'une clé CMEK est facultative.
    • Dans le champ Hôte:[port] : saisissez l'hôte et le port de l'instance de base de données SAP, comme indiqué dans la section Informations sur l'utilisateur de la base de données, dans la console Web de SAP Datasphere, en respectant le format HOST:PORT.
    • Facultatif : Dans le champ Rattachement de réseau, saisissez le chemin d'accès au rattachement de réseau qui définit la configuration réseau utilisée pour établir une connexion à SAP Datasphere.
    • Dans le champ Nom d'utilisateur : saisissez le nom de l'utilisateur de la base de données, issu de la section Informations sur l'utilisateur de la base de données dans la console Web de SAP Datasphere. Par exemple, MY_SPACE#BIGQUERY.
    • Dans le champ Mot de passe : saisissez le mot de passe de l'utilisateur de la base de données.
  5. Cliquez sur Create connection (Créer une connexion).

bq

Saisissez la commande bq mk avec les options suivantes :

  bq mk \
  --connection \
  --location=LOCATION \
  --project_id=PROJECT_ID \
  --connector_configuration '{
    "connector_id": "saphana",
    "endpoint": {
      "host_port": "HOST_PORT"
    },
    "authentication": {
      "username_password": {
        "username": "USERNAME",
        "password": {
          "plaintext": "PASSWORD"
        }
      }
    },
    "network": {
      "private_service_connect": {
        "network_attachment": "NETWORK_ATTACHMENT"
      }
    }
  }' \
  CONNECTION_ID

Remplacez les éléments suivants :

  • LOCATION : spécifiez une région de l'ensemble de données BigQuery à combiner avec les données de SAP Datasphere. Les requêtes utilisant cette connexion doivent être exécutées à partir de cette région.
  • PROJECT_ID : saisissez l'ID de votre projet Google Cloud.
  • HOST_PORT : saisissez l'hôte et le port de l'instance de base de données SAP, comme indiqué dans la section Informations sur l'utilisateur de la base de données, dans la console Web de SAP Datasphere, en respectant le format HOST:PORT.
  • NETWORK_ATTACHMENT (facultatif) : saisissez le rattachement de réseau au format projects/{project}/regions/{region}/networkAttachments/{networkattachment}. Ce champ vous permet de configurer la connexion SAP Datasphere afin que BigQuery ouvre la connexion à partir d'une adresse IP statique.
  • USERNAME : saisissez le nom de l'utilisateur de la base de données, issu de la section Informations sur l'utilisateur de la base de données dans la console Web de SAP Datasphere. Exemple : MY_SPACE#BIGQUERY.
  • PASSWORD : saisissez le mot de passe de l'utilisateur de la base de données.
  • CONNECTION_ID : saisissez un ID de connexion afin d'identifier cette connexion.

Partager des connexions avec les utilisateurs

Vous pouvez attribuer les rôles suivants pour permettre aux utilisateurs d'interroger des données et de gérer les connexions :

  • roles/bigquery.connectionUser permet aux utilisateurs de se connecter à des sources de données externes et d'y exécuter des requêtes.

  • roles/bigquery.connectionAdmin permet aux utilisateurs de gérer les connexions.

Pour en savoir plus sur les rôles et les autorisations IAM dans BigQuery, consultez la page Rôles prédéfinis et autorisations.

Sélectionnez l'une des options suivantes :

Console

  1. Accédez à la page BigQuery.

    Accéder à BigQuery

    Les connexions sont répertoriées dans votre projet, dans un groupe appelé Connexions externes.

  2. Dans le volet Explorateur, cliquez sur votre nom de projet > Connexions externes > connexion.

  3. Dans le volet Détails, cliquez sur Partager pour partager une connexion. Ensuite, procédez comme suit :

    1. Dans la boîte de dialogue Autorisations de connexion, partagez la connexion avec d'autres comptes principaux en ajoutant ou en modifiant des comptes principaux.

    2. Cliquez sur Enregistrer.

bq

Vous ne pouvez pas partager de connexion avec l'outil de ligne de commande bq. Pour partager une connexion, utilisez la console Google Cloud ou la méthode de l'API BigQuery Connections permettant le partage de connexion.

API

Utilisez la méthode projects.locations.connections.setIAM dans la section de référence de l'API REST BigQuery Connections et fournissez une instance de la ressource policy.

Java

Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.

Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

import com.google.api.resourcenames.ResourceName;
import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import com.google.iam.v1.SetIamPolicyRequest;
import java.io.IOException;

// Sample to share connections
public class ShareConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionId = "MY_CONNECTION_ID";
    shareConnection(projectId, location, connectionId);
  }

  static void shareConnection(String projectId, String location, String connectionId)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ResourceName resource = ConnectionName.of(projectId, location, connectionId);
      Binding binding =
          Binding.newBuilder()
              .addMembers("group:example-analyst-group@google.com")
              .setRole("roles/bigquery.connectionUser")
              .build();
      Policy policy = Policy.newBuilder().addBindings(binding).build();
      SetIamPolicyRequest request =
          SetIamPolicyRequest.newBuilder()
              .setResource(resource.toString())
              .setPolicy(policy)
              .build();
      client.setIamPolicy(request);
      System.out.println("Connection shared successfully");
    }
  }
}

Étape suivante