Créer une vue autorisée

BigQuery est un entrepôt de données analytiques à l'échelle du pétaoctet que vous pouvez utiliser pour exécuter des requêtes SQL sur de grandes quantités de données, presque en temps réel.

En créant une vue autorisée dans BigQuery, vous permettez à cette vue d'accéder à un ensemble de données. Une vue autorisée vous permet de partager des résultats de requête avec des utilisateurs et des groupes particuliers sans leur donner accès aux tables sous-jacentes. Vous pouvez également utiliser la requête SQL de la vue pour limiter les colonnes (champs) que les utilisateurs peuvent interroger. Dans ce tutoriel, vous allez créer une vue autorisée.

Objectifs

Ce guide vous explique comment effectuer les tâches suivantes :

  • Créer des ensembles de données et leur appliquer des contrôles d'accès
  • Attribuer des contrôles d'accès à votre projet
  • Créer une vue autorisée restreignant les données que les utilisateurs peuvent interroger

Coûts

BigQuery est un produit payant. Des coûts d'utilisation vous seront donc facturés dans le cadre de ce tutoriel. BigQuery offre des ressources gratuites jusqu'à une limite spécifique. Pour en savoir plus, consultez la section Opérations et versions gratuites de BigQuery.

Avant de commencer

Avant de commencer ce tutoriel, créez ou sélectionnez un projet à l'aide de Google Cloud Console.

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  4. BigQuery est automatiquement activé dans les nouveaux projets. Pour activer BigQuery dans un projet préexistant, accédez à Activez l'API BigQuery.

    Activer l'API

    .
  5. Facultatif : Activez la facturation pour le projet. Les étapes décrites dans ce document demeurent valables, même si vous ne souhaitez pas activer la facturation ou fournir une carte de crédit. BigQuery fournit un bac à sable permettant d'accomplir les étapes.

Présentation

Dans ce tutoriel, vous créez deux ensembles de données : un pour les données sources et un pour la vue autorisée. Vous remplissez l'ensemble de données source avec des données provenant de l'ensemble de données public GitHub. Vous créez ensuite une vue qui interroge une table de l'ensemble de données source.

Après avoir créé les ensembles de données et la vue, vous attribuerez des contrôles d'accès au projet, à l'ensemble de données contenant la vue et à celui qui contient les données sources.

En permettant à une vue d'accéder à l'ensemble de données source, vous créez une vue autorisée. La procédure de création d'une vue autorisée comprend les étapes suivantes :

  • Créer un ensemble de données distinct dans lequel stocker la vue
  • Créer la vue dans le nouvel ensemble de données
  • Attribuer des contrôles d'accès au projet
  • Attribuer des contrôles d'accès à l'ensemble de données contenant la vue
  • Autoriser la vue à accéder à l'ensemble de données source

Créer un ensemble de données source

Commencez par créer un ensemble de données pour y stocker les données sources. Pour ce tutoriel, vous allez remplir une table de votre ensemble de données source en interrogeant l'ensemble de données public GitHub. L'ensemble de données source contient des informations que les analystes de données ne doivent pas voir. Vous utilisez donc une vue autorisée pour restreindre l'accès aux données.

Pour créer votre ensemble de données source :

Console

  1. Dans Cloud Console, ouvrez la page "BigQuery".

    Accéder à BigQuery

  2. Dans le panneau Explorer, sélectionnez le projet dans lequel vous souhaitez créer l'ensemble de données.

  3. Développez l'option Actions, puis cliquez sur Créer un ensemble de données.

  4. Dans le champ ID de l'ensemble de données, saisissez github_source_data.

  5. Ne modifiez aucun autre paramètre par défaut et cliquez sur Créer un ensemble de données.

Java

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java décrite dans le 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 Java.

// Create a source dataset to store your table.
Dataset sourceDataset = bigquery.create(DatasetInfo.of(sourceDatasetId));

Python

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le 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 Python.

from google.cloud import bigquery

client = bigquery.Client()
source_dataset_id = "github_source_data"
source_dataset_id_full = "{}.{}".format(client.project, source_dataset_id)

source_dataset = bigquery.Dataset(source_dataset_id_full)
# Specify the geographic location where the dataset should reside.
source_dataset.location = "US"
source_dataset = client.create_dataset(source_dataset)  # API request

Une fois l'ensemble de données source créé, remplissez une table via une requête SQL. Cette requête extrait des données de l'ensemble de données public GitHub.

Console

  1. Dans Cloud Console, ouvrez la page "BigQuery".

    Accéder à BigQuery

  2. Cliquez sur Saisir une nouvelle requête.

  3. Copiez et collez la requête suivante dans la zone de texte de l'éditeur de requête.

    SELECT
      commit,
      author,
      committer,
      repo_name
    FROM
      `bigquery-public-data.github_repos.commits`
    LIMIT
      1000
    
  4. Cliquez sur Plus et sélectionnez Paramètres de requête.

  5. Pour le champ Destination, cochez la case Définir une table de destination pour les résultats de la requête.

    • Pour le champ Nom du projet, vérifiez que votre projet est sélectionné.
    • Pour le champ Nom de l'ensemble de données, vérifiez que l'option github_source_data est sélectionnée.
    • Pour le champ Nom de la table, saisissez github_contributors.
    • Cliquez sur Enregistrer.

  6. Cliquez sur Exécuter.

  7. Une fois la requête exécutée, cliquez sur github_contributors puis sur Aperçu pour vérifier que les données ont bien été écrites dans la table.

Java

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java décrite dans le 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 Java.

// Populate a source table
String tableQuery =
    "SELECT commit, author, committer, repo_name"
        + " FROM `bigquery-public-data.github_repos.commits`"
        + " LIMIT 1000";
QueryJobConfiguration queryConfig =
    QueryJobConfiguration.newBuilder(tableQuery)
        .setDestinationTable(TableId.of(sourceDatasetId, sourceTableId))
        .build();
bigquery.query(queryConfig);

Python

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le 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 Python.

source_table_id = "github_contributors"
job_config = bigquery.QueryJobConfig()
job_config.destination = source_dataset.table(source_table_id)
sql = """
    SELECT commit, author, committer, repo_name
    FROM `bigquery-public-data.github_repos.commits`
    LIMIT 1000
"""
query_job = client.query(
    sql,
    # Location must match that of the dataset(s) referenced in the query
    # and of the destination table.
    location="US",
    job_config=job_config,
)  # API request - starts the query

query_job.result()  # Waits for the query to finish

Créer un ensemble de données dans lequel stocker la vue

Après avoir créé votre ensemble de données source, vous allez créer un ensemble de données distinct pour stocker la vue autorisée que vous partagerez avec vos analystes de données. Plus tard, vous accorderez à la vue autorisée l'accès aux données de l'ensemble de données source. Vos analystes de données pourront accéder à la vue autorisée, mais pas aux données sources.

Les vues autorisées doivent être créées dans un ensemble de données différent de celui des données sources. De cette façon, les propriétaires de données peuvent autoriser les utilisateurs à accéder à la vue autorisée sans accorder simultanément l'accès aux données sous-jacentes. L'ensemble de données des données source et l'ensemble de données de la vue autorisée doivent se trouver dans le même emplacement régional.

Pour créer un ensemble de données dans lequel stocker votre vue :

Console

  1. Dans Cloud Console, ouvrez la page "BigQuery".

    Accéder à BigQuery

  2. Dans le panneau Explorer, sélectionnez le projet dans lequel vous souhaitez créer l'ensemble de données.

  3. Développez l'option Actions, puis cliquez sur Créer un ensemble de données.

  4. Dans le champ ID de l'ensemble de données, saisissez shared_views.

  5. Ne modifiez aucun autre paramètre par défaut et cliquez sur Créer un ensemble de données.

Java

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java décrite dans le 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 Java.

// Create a separate dataset to store your view
Dataset sharedDataset = bigquery.create(DatasetInfo.of(sharedDatasetId));

Python

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le 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 Python.

shared_dataset_id = "shared_views"
shared_dataset_id_full = "{}.{}".format(client.project, shared_dataset_id)

shared_dataset = bigquery.Dataset(shared_dataset_id_full)
shared_dataset.location = "US"
shared_dataset = client.create_dataset(shared_dataset)  # API request

Créer la vue dans le nouvel ensemble de données

Dans le nouvel ensemble de données, créez la vue que vous souhaitez autoriser. Il s'agit de la vue que vous partagerez avec vos analystes de données. Cette vue est créée à l'aide d'une requête SQL qui exclut les colonnes que les analystes de données ne doivent pas voir.

Dans ce tutoriel, votre vue partagée exclut les informations de l'auteur excepté son nom, ainsi que celles du validateur excepté son nom.

Pour créer cette vue dans le nouvel ensemble de données :

Console

  1. Dans Cloud Console, ouvrez la page "BigQuery".

    Accéder à BigQuery

  2. Cliquez sur Saisir une nouvelle requête.

  3. Copiez et collez la requête suivante dans la zone de texte de l'éditeur de requête. Remplacez project_id par l'ID du projet.

    SELECT
      commit,
      author.name as author,
      committer.name as committer,
      repo_name
    FROM
      `project_id.github_source_data.github_contributors`
    
  4. Dans la liste déroulante Enregistrer de l'éditeur de requête, sélectionnez Enregistrer la vue.

  5. Dans la boîte de dialogue Enregistrer la vue :

    • Pour le champ Nom du projet, vérifiez que votre projet est sélectionné.
    • Pour le champ Nom de l'ensemble de données, vérifiez que l'option shared_views est sélectionnée.
    • Pour le champ Nom de la table, saisissez github_analyst_view.
    • Cliquez sur Enregistrer.

Java

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java décrite dans le 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 Java.

// Create the view in the new dataset
String viewQuery =
    String.format(
        "SELECT commit, author.name as author, committer.name as committer, repo_name FROM %s.%s.%s",
        projectId, sourceDatasetId, sourceTableId);

ViewDefinition viewDefinition = ViewDefinition.of(viewQuery);

Table view =
    bigquery.create(TableInfo.of(TableId.of(sharedDatasetId, sharedViewId), viewDefinition));

Python

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le 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 Python.

shared_view_id = "github_analyst_view"
view = bigquery.Table(shared_dataset.table(shared_view_id))
sql_template = """
    SELECT
        commit, author.name as author,
        committer.name as committer, repo_name
    FROM
        `{}.{}.{}`
"""
view.view_query = sql_template.format(
    client.project, source_dataset_id, source_table_id
)
view = client.create_table(view)  # API request

Attribuer un rôle IAM au niveau du projet à vos analystes de données

Pour interroger la vue, vos analystes de données doivent être autorisés à exécuter des tâches de requête. Le rôle bigquery.user fournit des autorisations permettant d'exécuter des tâches, y compris des requêtes, dans le projet. Si vous attribuez à un utilisateur ou à un groupe d'utilisateurs le rôle bigquery.user au niveau du projet, chacun de ces utilisateurs pourra créer des ensembles de données et exécuter des tâches de requête sur les tables de ces ensembles de données. Le rôle bigquery.user n'autorise pas un utilisateur à interroger les données, à afficher les données des tables ni à consulter les détails des schémas de table pour les ensembles de données qu'il n'a pas créés.

Le fait d'attribuer le rôle bigquery.user au niveau du projet à vos analystes de données n'autorise pas ces derniers à afficher ou interroger les données des tables qui se trouvent dans l'ensemble de données contenant les tables interrogées par la vue. Le rôle bigquery.user ne permet pas non plus aux utilisateurs de mettre à jour vos vues. Il est recommandé d'attribuer le rôle bigquery.user au niveau du projet à la plupart des collaborateurs d'une entreprise (data scientists, analystes d'informatique décisionnelle et analystes de données).

Lorsque vous ajoutez un groupe à un rôle IAM, l'adresse e-mail et le domaine doivent être associés à un compte Google ou Google Apps actif.

Pour attribuer au groupe d'analystes de données le rôle bigquery.user au niveau du projet, procédez comme suit :

Console

  1. Ouvrez la page "IAM" dans Google Cloud Console.

    Ouvrir la page IAM

  2. Cliquez sur Sélectionner un projet.

  3. Sélectionnez votre projet, puis cliquez sur Ouvrir.

  4. Sur la page IAM, cliquez sur Ajouter.

  5. Dans la boîte de dialogue Add principals (Ajouter des comptes principaux) :

    • Dans la zone Principals (Comptes principaux), saisissez le groupe contenant vos analystes de données (par exemple, data_analysts@example.com).
    • Dans la case Sélectionner un rôle, recherchez le rôle Utilisateur BigQuery et sélectionnez-le.
    • Cliquez sur Enregistrer.

Attribuer des contrôles d'accès à l'ensemble de données contenant la vue

Pour que vos analystes de données puissent interroger la vue, ils doivent disposer du rôle bigquery.dataViewer sur l'ensemble de données contenant la vue. Le rôle bigquery.user accorde à vos analystes les autorisations requises pour créer des tâches de requête. Cependant, ils ne peuvent pas interroger la vue, sauf s'ils disposent également d'un accès bigquery.dataViewer à l'ensemble de données qui la contient.

Pour accorder à vos analystes de données l'accès bigquery.dataViewer à l'ensemble de données :

Console

  1. Dans le panneau Explorer, sélectionnez l'ensemble de données shared_views.

  2. Développez l'option Actions puis cliquez sur Ouvrir.

  3. Cliquez sur Partager l'ensemble de données.

  4. Dans la zone de texte Ajouter des comptes principaux, saisissez le nom du groupe qui contient vos analystes de données (par exemple, data_analysts@example.com).

  5. Cliquez sur Sélectionner un rôle et sélectionnez BigQuery > Lecteur de données BigQuery.

  6. Cliquez sur Ajouter.

  7. Cliquez sur OK.

Java

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java décrite dans le 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 Java.

// Assign access controls to the dataset containing the view
List<Acl> viewAcl = new ArrayList<>(sharedDataset.getAcl());
viewAcl.add(Acl.of(new Acl.Group("example-analyst-group@google.com"), Acl.Role.READER));
sharedDataset.toBuilder().setAcl(viewAcl).build().update();

Python

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le 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 Python.

# analyst_group_email = 'data_analysts@example.com'
access_entries = shared_dataset.access_entries
access_entries.append(
    bigquery.AccessEntry("READER", "groupByEmail", analyst_group_email)
)
shared_dataset.access_entries = access_entries
shared_dataset = client.update_dataset(
    shared_dataset, ["access_entries"]
)  # API request

Autoriser la vue à accéder à l'ensemble de données source

Une fois que vous avez créé des contrôles d'accès pour l'ensemble de données contenant la vue, ajoutez la vue en tant que vue autorisée dans l'ensemble de données source. Cette autorisation permet à la vue, mais pas à votre groupe d'analystes de données, d'accéder aux données sources.

Pour autoriser la vue à accéder aux données source :

Console

  1. Dans le panneau Explorer, sélectionnez l'ensemble de données github_source_data.

  2. Développez l'option Actions puis cliquez sur Ouvrir.

  3. Cliquez sur Partage, puis sélectionnez Autoriser les vues.

  4. Dans le volet Vues autorisées qui s'affiche, saisissez la vue github_analyst_view dans le champ Vue autorisée.

  5. Cliquez sur Ajouter une autorisation.

La vue github_analyst_view est maintenant autorisée à accéder aux données de l'ensemble de données source.

Java

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java décrite dans le 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 Java.

// Authorize the view to access the source dataset
List<Acl> srcAcl = new ArrayList<>(sourceDataset.getAcl());
srcAcl.add(Acl.of(new Acl.View(view.getTableId())));
sourceDataset.toBuilder().setAcl(srcAcl).build().update();

Python

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le 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 Python.

access_entries = source_dataset.access_entries
access_entries.append(
    bigquery.AccessEntry(None, "view", view.reference.to_api_repr())
)
source_dataset.access_entries = access_entries
source_dataset = client.update_dataset(
    source_dataset, ["access_entries"]
)  # API request

Vérifier la configuration

Une fois la configuration effectuée, un membre de votre groupe d'analystes de données (par exemple, data_analysts) peut la vérifier en interrogeant la vue.

Pour vérifier la configuration :

Console

  1. Demandez à un membre de votre groupe d'analystes de données d'accéder à la page BigQuery de Cloud Console.

    Accéder à BigQuery

  2. Cliquez sur Saisir une nouvelle requête.

  3. Copiez et collez la requête suivante dans la zone de texte de l'éditeur de requête. Remplacez project_id par l'ID du projet.

    SELECT
      *
    FROM
      `project_id.shared_views.github_analyst_view`
    

Code source complet

Voici le code source complet du tutoriel à titre de référence.

Java

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java décrite dans le 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 Java.

// Create a source dataset to store your table.
Dataset sourceDataset = bigquery.create(DatasetInfo.of(sourceDatasetId));

// Populate a source table
String tableQuery =
    "SELECT commit, author, committer, repo_name"
        + " FROM `bigquery-public-data.github_repos.commits`"
        + " LIMIT 1000";
QueryJobConfiguration queryConfig =
    QueryJobConfiguration.newBuilder(tableQuery)
        .setDestinationTable(TableId.of(sourceDatasetId, sourceTableId))
        .build();
bigquery.query(queryConfig);

// Create a separate dataset to store your view
Dataset sharedDataset = bigquery.create(DatasetInfo.of(sharedDatasetId));

// Create the view in the new dataset
String viewQuery =
    String.format(
        "SELECT commit, author.name as author, committer.name as committer, repo_name FROM %s.%s.%s",
        projectId, sourceDatasetId, sourceTableId);

ViewDefinition viewDefinition = ViewDefinition.of(viewQuery);

Table view =
    bigquery.create(TableInfo.of(TableId.of(sharedDatasetId, sharedViewId), viewDefinition));

// Assign access controls to the dataset containing the view
List<Acl> viewAcl = new ArrayList<>(sharedDataset.getAcl());
viewAcl.add(Acl.of(new Acl.Group("example-analyst-group@google.com"), Acl.Role.READER));
sharedDataset.toBuilder().setAcl(viewAcl).build().update();

// Authorize the view to access the source dataset
List<Acl> srcAcl = new ArrayList<>(sourceDataset.getAcl());
srcAcl.add(Acl.of(new Acl.View(view.getTableId())));
sourceDataset.toBuilder().setAcl(srcAcl).build().update();

Python

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le 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 Python.

# Create a source dataset
from google.cloud import bigquery

client = bigquery.Client()
source_dataset_id = "github_source_data"
source_dataset_id_full = "{}.{}".format(client.project, source_dataset_id)

source_dataset = bigquery.Dataset(source_dataset_id_full)
# Specify the geographic location where the dataset should reside.
source_dataset.location = "US"
source_dataset = client.create_dataset(source_dataset)  # API request

# Populate a source table
source_table_id = "github_contributors"
job_config = bigquery.QueryJobConfig()
job_config.destination = source_dataset.table(source_table_id)
sql = """
    SELECT commit, author, committer, repo_name
    FROM `bigquery-public-data.github_repos.commits`
    LIMIT 1000
"""
query_job = client.query(
    sql,
    # Location must match that of the dataset(s) referenced in the query
    # and of the destination table.
    location="US",
    job_config=job_config,
)  # API request - starts the query

query_job.result()  # Waits for the query to finish

# Create a separate dataset to store your view
shared_dataset_id = "shared_views"
shared_dataset_id_full = "{}.{}".format(client.project, shared_dataset_id)

shared_dataset = bigquery.Dataset(shared_dataset_id_full)
shared_dataset.location = "US"
shared_dataset = client.create_dataset(shared_dataset)  # API request

# Create the view in the new dataset
shared_view_id = "github_analyst_view"
view = bigquery.Table(shared_dataset.table(shared_view_id))
sql_template = """
    SELECT
        commit, author.name as author,
        committer.name as committer, repo_name
    FROM
        `{}.{}.{}`
"""
view.view_query = sql_template.format(
    client.project, source_dataset_id, source_table_id
)
view = client.create_table(view)  # API request

# Assign access controls to the dataset containing the view
# analyst_group_email = 'data_analysts@example.com'
access_entries = shared_dataset.access_entries
access_entries.append(
    bigquery.AccessEntry("READER", "groupByEmail", analyst_group_email)
)
shared_dataset.access_entries = access_entries
shared_dataset = client.update_dataset(
    shared_dataset, ["access_entries"]
)  # API request

# Authorize the view to access the source dataset
access_entries = source_dataset.access_entries
access_entries.append(
    bigquery.AccessEntry(None, "view", view.reference.to_api_repr())
)
source_dataset.access_entries = access_entries
source_dataset = client.update_dataset(
    source_dataset, ["access_entries"]
)  # API request

Nettoyer

Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.

  1. Dans Cloud Console, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Étape suivante