Utiliser le contrôle des accès basés sur les rôles

Vous trouverez sur cette page la procédure à suivre pour utiliser le contrôle des accès basé sur les rôles (RBAC) dans les instances Cloud Data Fusion. Le contrôle RBAC est disponible dans les instances Cloud Data Fusion s'exécutant dans les versions 6.5 et ultérieures.

Pour en savoir plus, consultez la page Présentation du contrôle des accès basé sur les rôles (RBAC).

Recommandé : À moins que ce ne soit nécessaire à des fins d'automatisation, utilisez la console Google Cloud pour effectuer vos tâches RBAC.

Activer RBAC pour une instance existante

Vous pouvez activer RBAC pour un Cloud Data Fusion existant s'exécutant dans la version 6.5 ou ultérieure.

Console

Pour activer RBAC sur une instance Cloud Data Fusion existante, procédez comme suit :

  1. Accédez aux détails de l'instance:
    1. Dans la console Google Cloud, accédez à la page Cloud Data Fusion.

    2. Cliquez sur Instances, puis sur le nom de l'instance pour accéder à la page Détails de l'instance.

      Accéder à la page "Instances"

  2. Assurez-vous que l'instance a été mise à niveau vers la version 6.5 ou ultérieure. Si la version est antérieure à la version 6.5, mettez-la à niveau vers la version 6.5 ou ultérieure.
  3. Cliquez sur Activer RBAC.
  4. Cliquez sur Enregistrer.
  5. Patientez pendant la mise à jour de l'instance.

gcloud

Pour activer RBAC sur une instance Cloud Data Fusion existante, exécutez la commande suivante :

gcloud beta data-fusion instances update --enable_rbac --location=REGION INSTANCE_ID

API REST

Activez RBAC pour une instance existante à l'aide de l'API patch pour Cloud Data Fusion. Définissez l'indicateur enableRbac sur true et utilisez le paramètre de requête updateMask à l'aide de l'exemple de commande suivant :

export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
gcurl https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances/$INSTANCE?updateMask=enable_rbac -X PATCH -d '{"enable_rbac": "true"}'

Désactiver RBAC pour une instance existante

Si une instance existante est activée avec RBAC, vous pouvez désactiver RBAC si nécessaire. La désactivation du RBAC affecter les pipelines ou configurations existants dans l'instance. Elle désactive simplement l'isolation de sécurité dans les espaces de noms.

Console

Pour désactiver RBAC sur une instance Cloud Data Fusion existante, procédez comme suit :

  1. Accédez aux détails de l'instance :

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

    2. Cliquez sur Instances, puis sur le nom de l'instance pour accéder à la page Détails de l'instance.

      Accéder à la page "Instances"

  2. Cliquez sur Désactiver RBAC.

  3. Cliquez sur Enregistrer.

  4. Patientez pendant la mise à jour de l'instance.

gcloud

Pour désactiver RBAC pour une instance existante, utilisez l'argument ---no-enable_rbac au lieu de --enable-rbac.

gcloud beta data-fusion instances update --no-enable_rbac --location=REGION INSTANCE_ID

Exemple d'utilisation :

gcloud beta data-fusion instances update --no-enable_rbac --location=us-east1 cdf-test-instance

API REST

Désactivez RBAC pour une instance existante avec le paramètre Correctif Cloud Data Fusion API. Définissez l'indicateur enableRbac sur false et utilisez le paramètre de requête updateMask à l'aide de l'exemple de commande suivant :

export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
gcurl https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances/$INSTANCE?updateMask=enable_rbac -X PATCH -d '{"enable_rbac": "false"}'

Créer une instance compatible avec RBAC

Console

Pour créer une instance Cloud Data Fusion avec RBAC activé, procédez comme suit :

  1. Accédez à la page Instances de Cloud Data Fusion.

  2. Cliquez sur Instances.

    Accéder à la page "Instances"

  3. Cliquez sur Créer une instance et saisissez les détails de l'instance.

  4. Sélectionnez l'édition Enterprise. Le contrôle RBAC n'est disponible que dans l'édition Enterprise.

  5. Dans Options avancées, sélectionnez Activer le contrôle des accès précis basé sur les rôles.

    Cette fonctionnalité est disponible uniquement dans les instances utilisant Cloud Data Fusion version 6.5 et ultérieure.

  6. Cliquez sur Create (Créer).

gcloud

Pour créer une instance compatible avec RBAC, exécutez la commande suivante :

gcloud beta data-fusion instances create --edition=enterprise \
--enable_rbac \
--location=REGION INSTANCE_ID \
--version=6.5.0

Exemple d'utilisation :

gcloud beta data-fusion instances create --edition=enterprise \
--enable_rbac \
--location=us-east1 \
--version=6.5.0

API REST

Pour créer une instance compatible avec RBAC à l'aide de l'API REST, transmettez l'option enableRbac définie sur true dans les options de l'instance, comme indiqué dans les commandes suivantes :

export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances?instanceId=$INSTANCE -X POST -d '{"description": "RBAC CDF instance created through REST", "type": "ENTERPRISE", "enableRbac": "true"}'

Attribuer des rôles Cloud Data Fusion prédéfinis aux utilisateurs (obligatoire)

Une fois le contrôle RBAC activé, vous accordez des rôles aux comptes principaux pour leur permettre d'effectuer des actions spécifiques dans une instance ou un espace de noms. Pour savoir quels rôles répondent le mieux à vos exigences, consultez les sections Rôles Cloud Data Fusion prédéfinis et Recommandations relatives à la sécurité.

Console

Pour attribuer des rôles Cloud Data Fusion prédéfinis aux comptes principaux :

  1. Accédez à la page Autorisations de Cloud Data Fusion.

    Accéder aux autorisations

  2. Cliquez sur Ajouter .

    La boîte de dialogue Ajouter des utilisateurs s'ouvre.

  3. Dans le champ Nouveaux membres, saisissez la liste des comptes principaux (utilisateurs, groupes ou adresses e-mail de comptes de service) auxquels vous souhaitez attribuer des rôles.

  4. Cochez la case à côté de chaque instance à laquelle vous souhaitez accorder autorisations.

    Sélectionner des instances

  5. Accédez à la colonne Rôle et sélectionnez le menu déroulant à côté des instances choisies.

    1. Pour accorder des autorisations d'administrateur d'instances, sélectionnez Administrateur d'instances.

    2. Pour accorder des autorisations au niveau de l'espace de noms, sélectionnez Utilisateur de l'espace de noms.

      Sélectionner les rôles utilisateur pour l'espace de noms

      1. Si vous accordez des autorisations au niveau de l'espace de noms, cliquez sur Sélectionner.

        Une boîte de dialogue Ajouter des droits d'accès s'ouvre.

      2. Sélectionnez un espace de noms, puis l'espace de noms prédéfini Rôle Cloud Data Fusion que vous souhaitez attribuer à l'espace de noms.

      3. Cliquez sur Sélectionner pour enregistrer vos nouveaux paramètres.

      4. Facultatif: Pour accorder des autorisations d'espace de noms à d'autres instances, répétez l'étape 5.

  6. Cliquez sur Enregistrer.

    Pour vérifier les rôles qui ont été attribués, consultez Vérifiez les rôles dans la console Google Cloud.

gcloud

Vous pouvez utiliser la Google Cloud CLI pour contrôler l'accès par programmation.

Pour attribuer un rôle à l'aide de la gcloud CLI, utilisez une liste d'identifiants d'utilisateur séparés par des virgules au format suivant :

[user|group|serviceAccount][email_address]

Indiquez les valeurs suivantes :

  • user:useremail@example.com
  • group:groupemail@example.com
  • serviceAccount:serviceaccount@project.iam.gserviceaccount.com

Pour plus d'exemples, consultez la page Accorder un rôle.

Attribuer le rôle "Accesseur d'instances" (obligatoire)

Vous devez d'abord autoriser un utilisateur à accéder à l'instance en lui attribuant le rôle Accesseur sur une instance :

  1. Exportez les variables suivantes à l'aide de la commande suivante, en remplaçant les variables par vos propres valeurs :

    export PROJECT=PROJECT_ID
    export INSTANCE=INSTANCE_ID
    export REGION=REGION
    export USER_ID=EMAIL
    export USER_TYPE=USER_TYPE
    

    Remplacez les variables suivantes par vos propres valeurs :

    • PROJECT_ID : nom de votre projet
    • INSTANCE_ID : nom de l'instance
    • REGION : région à laquelle appartient le projet
    • EMAIL : adresse e-mail du compte principal
    • USER_TYPE : type d'utilisateur: utilisateur, groupe ou ressource serviceAccount
  2. Exécutez le code suivant pour attribuer le rôle :

    gcloud beta data-fusion add-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --member="${USER_TYPE}:${USER_ID}" --role="roles/datafusion.accessor"
    

Attribuer des rôles à un espace de noms (dépendant du cas d'utilisation)

Selon votre cas d'utilisation, attribuez des rôles à l'aide des commandes suivantes :

  1. Exportez les variables suivantes à l'aide de la commande suivante, en remplaçant les variables par vos propres valeurs :

    export PROJECT=PROJECT_ID
    export INSTANCE=INSTANCE_ID
    export REGION=REGION
    export NAMESPACE=NAMESPACE
    export USER_ID=EMAIL
    export USER_TYPE=USER_TYPE
    

    Remplacez les variables suivantes par vos propres valeurs :

    • PROJECT_ID : nom de votre projet
    • INSTANCE_ID : nom de l'instance
    • REGION : région à laquelle appartient le projet
    • NAMESPACE : nom de l'espace de noms
    • EMAIL : adresse e-mail du compte principal
    • USER_TYPE : type d'utilisateur: utilisateur, groupe ou ressource serviceAccount
  2. Exécutez la commande suivante pour attribuer un rôle à un compte principal dans un espace de noms donné :

    gcloud beta data-fusion add-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE} --member="${USER_TYPE}:${USER_ID}" --role="roles/ROLE_NAME"
    

    Remplacez ROLE_NAME par l'une des valeurs suivantes :

    • Pour le rôle Éditeur pour un espace de noms, utilisez datafusion.editor.
    • Pour le rôle Opérateur pour un espace de noms, utilisez datafusion.operator.
    • Pour le rôle Développeur pour un espace de noms, utilisez datafusion.developer.
    • Pour le rôle Lecteur pour un espace de noms, utilisez datafusion.viewer.

Facultatif : Révoquer les rôles de l'espace de noms

Pour révoquer le rôle accordé à un utilisateur pour un espace de noms donné, utilisez la commande suivante :

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
export USER_ID=EMAIL
# User type can be one of: user, group, or serviceAccount.
export USER_TYPE=USER_TYPE
export ROLE=ROLE_NAME
gcloud beta data-fusion remove-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE} --member="${USER_TYPE}:${USER_ID}" --role="${ROLE}"

Facultatif: Lister les rôles attribués sur un espace de noms donné

Pour répertorier tous les rôles attribués sur un espace de noms particulier, utilisez la méthode pour récupérer la stratégie IAM:

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE}

API REST

Attribuer le rôle "Accesseur d'instances" (obligatoire)

Vous devez d'abord autoriser un utilisateur à accéder à l'instance en lui attribuant le rôle Accesseur sur une instance.

Il est fortement recommandé d'utiliser gcloud CLI pour accorder Rôle d'accesseur.

  1. Accordez le rôle d'accesseur sur une instance :

    export PROJECT=PROJECT_ID
    export INSTANCE=INSTANCE_ID
    export REGION=REGION
    export USER_ID=EMAIL
    # User type can be one of: user, group, or serviceAccount.
    export USER_TYPE=USER_TYPE
    alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
    
  2. Récupérez la stratégie IAM actuelle et enregistrez-la dans un fichier :

    gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy > iam_policy.json
    
  3. Ajoutez une liaison pour le rôle et l'utilisateur dans la stratégie. Exemple :

    {
      "policy": {
        "bindings": [
          {
            "role": "roles/datafusion.accessor",
            "members": [
              "${USER_TYPE}:${USER_ID}"
            ]
          }
        ]
      }
    }
    
  4. Mettez à jour la stratégie IAM de l'instance:

    gcurl \
      -d @iam_policy.json \
      https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:setIamPolicy
    

Attribuer des rôles à un espace de noms (dépendant du cas d'utilisation)

Selon votre cas d'utilisation, attribuez des rôles à l'aide des commandes suivantes :

  1. Exportez les variables suivantes à l'aide de la commande suivante, en remplaçant les variables par vos propres valeurs :

    export PROJECT=PROJECT_ID
    export INSTANCE=INSTANCE_ID
    export REGION=REGION
    export NAMESPACE=NAMESPACE
    export USER_ID=EMAIL
    export USER_TYPE=USER_TYPE
    alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
    

    Remplacez les variables suivantes par vos propres valeurs :

    • PROJECT_ID : nom de votre projet
    • INSTANCE_ID : nom de l'instance
    • REGION : région à laquelle appartient le projet
    • NAMESPACE : nom de l'espace de noms
    • EMAIL : adresse e-mail du compte principal
    • USER_TYPE : type d'utilisateur: utilisateur, groupe ou ressource serviceAccount
  2. Récupérez la stratégie IAM actuelle et enregistrez-la dans un fichier :

      gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/{NAMESPACE}:getIamPolicy > iam_policy.json
    

    Remplacez iam_policy.json par votre nom de fichier.

  3. Ajoutez une liaison pour le rôle et l'utilisateur dans le fichier de stratégie. Par exemple, le fichier de stratégie peut ressembler à ceci :

    {
      "policy": {
        "bindings": [
          {
            "role": "roles/ROLE_NAME",
              "members": [
              "${USER_TYPE}:${USER_ID}"
            ]
          }
        ]
      }
    }
    

    Plusieurs liaisons de rôles peuvent être spécifiées pour une stratégie donnée, et plusieurs comptes principaux peuvent être spécifiés dans la liste des membres pour une liaison de rôle donnée. Pour un compte principal donné, remplacez ROLE_NAME par l'une des valeurs suivantes :

    • Pour le rôle Éditeur pour un espace de noms, utilisez datafusion.editor.
    • Pour le rôle Opérateur pour un espace de noms, utilisez datafusion.operator.
    • Pour le rôle Développeur pour un espace de noms, utilisez datafusion.developer.
    • Pour le rôle Lecteur pour un espace de noms, utilisez datafusion.viewer.
  4. Exécutez la commande suivante pour mettre à jour le fichier de stratégie :

    gcurl -d @iam_policy.json \
    https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/{NAMESPACE}:setIamPolicy
    

    Remplacez iam_policy.json par votre nom de fichier.

Vérifier les rôles dans la console Google Cloud

Examiner et modifier les rôles existants sur Cloud Data Fusion Autorisations.

Accéder aux autorisations

Vérifier les rôles avec le fichier de stratégie

Vérifiez que les rôles sont attribués aux bons utilisateurs dans le fichier de stratégie IAM à l'aide de la CLI gcloud ou de l'API REST.

Dans l'exemple de fichier de stratégie IAM suivant, l'utilisateur alice@example.com possède le rôle Data Fusion Developer :

bindings:
- members:
  - user:alice@example.com
  role: roles/datafusion.developer
- members:
  - user:bob@example.com
  - serviceAccount:myserviceaccount@myproject.iam.gserviceaccount.com
  role: roles/datafusion.operator
- members:
  - user:james@example.com
  - user:mike@example.com
  - group:mygroup@googlegroups.com
  role: roles/datafusion.editor
etag: BwXA8BAHYmw=

Obtenir la stratégie IAM associée à une instance

gcloud

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION}

cURL

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
curl -H "Authorization: Bearer "$(gcloud auth print-access-token) \
https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy

Obtenir la stratégie IAM associée à un espace de noms

gcloud

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE}

cURL

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export NAMESPACE=NAMESPACE
export REGION=REGION
curl -H "Authorization: Bearer "$(gcloud auth print-access-token) \
https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/${NAMESPACE}:getIamPolicy

Étape suivante