Contrôle des accès avec un compte de service d'espace de noms

Cette page explique comment configurer un compte de service IAM (Identity and Access Management) pour un espace de noms dans une instance Cloud Data Fusion.

À propos des espaces de noms dans Cloud Data Fusion

Un espace de noms est un regroupement logique d'applications, de données et des métadonnées associées dans une instance Cloud Data Fusion. Vous pouvez considérer les espaces de noms comme une partitionnement de l'instance. Toute application ou donnée, appelée ici entité, peut exister indépendamment dans plusieurs espaces de noms. Dans une seule instance, un espace de noms stocke les données et les métadonnées d'une entité indépendamment d'un autre espace de noms.

Contrôle des accès avec un compte de service d'espace de noms

Pour contrôler l'accès aux ressources Google Cloud , les espaces de noms de Cloud Data Fusion utilisent par défaut l'Agent de service de l'API Cloud Data Fusion.

Pour une meilleure isolation des données, vous pouvez associer un compte de service IAM personnalisé (appelé compte de service par espace de noms) à chaque espace de noms. Le compte de service IAM personnalisé, qui peut être différent pour différents espaces de noms, vous permet de contrôler l'accès aux ressourcesGoogle Cloud entre les espaces de noms pour les opérations de conception du pipeline dans Cloud Data Fusion, telles que l'aperçu du pipeline, Wrangler et la validation du pipeline.

Avant de commencer

  • Les comptes de service par espace de noms sont compatibles avec les instances RBAC dans les versions 6.10.0 et ultérieures de Cloud Data Fusion.
  • Les comptes de service par espace de noms permettent de contrôler et de gérer l'accès aux ressources Google Cloud .

Rôles et autorisations requis

Pour obtenir les autorisations nécessaires pour personnaliser les comptes de service de namespace et accorder des autorisations utilisateur dans un namespace, demandez à votre administrateur de vous accorder le rôle IAM Administrateur Cloud Data Fusion (roles/datafusion.admin) sur l'instance Cloud Data Fusion du 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.

Gérer les autorisations des utilisateurs dans un espace de noms

Pour accorder aux utilisateurs les autorisations dont ils ont besoin dans un espace de noms, attribuez-leur des rôles Cloud Data Fusion prédéfinis. Pour en savoir plus, consultez les rôles Cloud Data Fusion prédéfinis disponibles pour les utilisateurs dans les instances RBAC.

Configurer un compte de service d'espace de noms

Console

Pour configurer un compte de service pour l'espace de noms, procédez comme suit:

  1. Si vous ne disposez pas d'un compte de service pour l'espace de noms, créez-en un.
  2. Dans la console Google Cloud, accédez à la page Instances de Cloud Data Fusion, puis ouvrez une instance dans l'interface Web de Cloud Data Fusion.

    Accéder à la page "Instances"

  3. Cliquez sur Administrateur système > Configuration > Espaces de noms.

  4. Cliquez sur l'espace de noms que vous souhaitez configurer.

  5. Cliquez sur l'onglet Comptes de service, puis sur Ajouter un compte de service.

    Bouton "Ajouter un compte de service".

  6. Attribuez le rôle Utilisateur Workload Identity (roles/iam.workloadIdentityUser).

    Pour accorder le rôle, procédez comme suit :

    1. Dans le champ Compte de service de conception de pipeline, saisissez l'adresse e-mail du compte de service (par exemple, SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com).
    2. Suivez les instructions de la boîte de dialogue qui s'affiche.
  7. Pour terminer la configuration du compte de service, revenez au nom d'espace de noms de votre instance Cloud Data Fusion, puis cliquez sur Enregistrer.

  8. Répétez la procédure pour configurer un compte de service pour chaque espace de noms.

API REST

  1. Attribuez le rôle Utilisateur Workload Identity (roles/iam.workloadIdentityUser).

    Pour accorder le rôle, procédez comme suit :

    1. Définissez les variables d'environnement suivantes :

      export TENANT_PROJECT_ID=TENANT_PROJECT
      export GSA_PROJECT_ID=SERVICE_ACCOUNT_PROJECT
      

      Remplacez les éléments suivants :

      • TENANT_PROJECT: ID du projet locataire. Pour le trouver, accédez à la page Instances, puis cliquez sur le nom de l'instance. L'ID s'affiche sur la page Détails de l'instance.

        Accéder à la page "Instances"

      • SERVICE_ACCOUNT_PROJECT: ID de projetGoogle Cloud dans lequel se trouve le compte de service IAM.

    2. Attribuez le rôle Utilisateur Workload Identity:

      gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser
          --member "serviceAccount:${TENANT_PROJECT_ID}.svc.id.goog[default/NAMESPACE_IDENTITY]" SERVICE_ACCOUNT_EMAIL \
          --project ${GSA_PROJECT_ID}
      

      Remplacez les éléments suivants :

      • NAMESPACE_IDENTITY: identité de l'espace de noms. Pour en savoir plus, consultez la section Détails d'un espace de noms.

      • SERVICE_ACCOUNT_EMAIL: adresse e-mail du compte de service (par exemple, SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com).

  2. Validez l'adresse e-mail du compte de service de l'espace de noms de l'étape précédente. Définissez environment variables, puis exécutez la commande suivante:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity/validate -X POST -d '{"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}'
    

    Remplacez les éléments suivants :

    • NAMESPACE_NAME: ID de l'espace de noms.
    • SERVICE_ACCOUNT_EMAIL: adresse e-mail du compte de service IAM que vous souhaitez définir dans l'espace de noms.
  3. Définissez le compte de service de l'espace de noms. Définissez environment variables, puis exécutez la commande suivante:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"
     ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X PUT -d '{"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}'
    

Modifier un compte de service d'espace de noms

Console

Pour modifier un compte de service de namespace, procédez comme suit:

  1. Dans votre instance Cloud Data Fusion, cliquez sur Administration système> Configuration > Espaces de noms.
  2. Cliquez sur l'espace de noms contenant le compte de service que vous souhaitez modifier.
  3. Pour modifier le compte de service, accédez à l'onglet Comptes de service. À côté du nom du compte de service, cliquez sur Menu > Modifier.
  4. Suivez la procédure pour configurer un compte de service de namespace.

API REST

Pour modifier un compte de service de namespace, procédez comme suit:

  1. Définissez environment variables, puis exécutez la commande suivante:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"
     ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X PUT -d '{"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}'
    

    Remplacez les éléments suivants :

    • NAMESPACE_NAME: ID de l'espace de noms.
    • SERVICE_ACCOUNT_EMAIL: adresse e-mail du compte de service IAM que vous souhaitez définir dans l'espace de noms.

Supprimer un compte de service d'espace de noms

Console

Pour supprimer un compte de service d'un espace de noms, procédez comme suit:

  1. Dans votre instance Cloud Data Fusion, cliquez sur Administration système> Configuration > Espaces de noms.
  2. Cliquez sur l'espace de noms contenant le compte de service que vous souhaitez supprimer.
  3. Pour supprimer le compte de service, accédez à l'onglet Comptes de service. À côté du nom du compte de service, cliquez sur Menu> Supprimer.

API REST

Pour supprimer un compte de service d'un espace de noms, procédez comme suit:

  1. Définissez environment variables, puis exécutez la commande suivante:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X DELETE
    

    Remplacez les éléments suivants :

    • NAMESPACE_NAME: ID de l'espace de noms.

Obtenir le compte de service de l'espace de noms

Console

Pour obtenir des informations sur le compte de service de l'espace de noms, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Instances de Cloud Data Fusion, puis ouvrez une instance dans l'interface Web de Cloud Data Fusion.

    Accéder à la page "Instances"

  2. Cliquez sur Administrateur système > Configuration > Espaces de noms.

  3. Cliquez sur un nom d'espace de noms pour afficher les détails du compte de service.

API REST

Pour obtenir le nom du compte de service de l'espace de noms, procédez comme suit:

  1. Définissez environment variables, puis exécutez la commande suivante:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X GET
    

    Remplacez les éléments suivants :

    • NAMESPACE_NAME: ID de l'espace de noms.

    Si l'opération réussit, vous obtenez l'adresse e-mail du compte de service dans la réponse suivante:

    Response: {"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}
    

Étape suivante