CDP partie 5 : gestion des permissions utilisateurs sur CDP

CDP partie 5 : gestion des permissions utilisateurs sur CDP

Vous appréciez notre travail......nous recrutons !

Ne ratez pas nos articles sur l'open source, le big data et les systèmes distribués, fréquence faible d’un email tous les deux mois.

Lorsqu’un utilisateur ou un groupe est créé dans CDP, des permissions doivent leur être attribuées pour accéder aux ressources et utiliser les Data Services.

Cet article est le cinquième d’une série de six :

CDP Public Cloud gère ces permissions à travers de rôles, qui contrôlent le périmètre d’accès aux ressources.

Il y a deux types de rôles principaux :

  • Rôles de Compte : Les permissions pour l’accès ou le lancement de tâches sur toutes les ressources du compte CDP.
  • Rôles de Ressources : Les permissions d’accéder ou d’exécuter des tâches sur une ressource spécifique, tel qu’un environnement.

Cet article se concentre sur la création des rôles et des règles Ranger nécessaires au groupe d’utilisateurs créé dans l’article Gestion des utilisateurs sur CDP Public Cloud avec Keycloak.

Par définition, un groupe dans CDP est un ensemble d’utilisateurs qui possèdent les mêmes rôles de compte et de ressource. Il est donc possible de gérer tous les besoins au niveau du groupe.

Trois remarques avant de débuter la configuration :

  • Au moins un utilisateur du groupe doit se connecter à la console pour que le groupe soit visible dans la console CDP.
  • Le rôle PowerUser est nécessaire pour assigner des rôles à un groupe.
  • Le rôle EnvironmentAdmin est nécessaire pour gérer les règles Ranger.

Rôles nécessaires

Pour donner accès aux utilisateurs aux ressources utilisées dans le lab du prochain article, il faut leur assigner les rôles suivants :

  • Rôles de Compte :
    • PowerUser
    • DFCatalogAdmin
    • DFCatalogViewer
  • Rôles de Ressources :
    • DWAdmin
    • DWUser
    • DFFlowAdmin
    • DFFlowUser
    • DEUser

De plus, on doit positionner le rôle Data Access sur les Mappings IDBroker pour s’assurer que les applications des utilisateurs pourront accéder au Data Lake.

Comme déjà vu dans Déploiement d’un environnement CDP Public Cloud sur AWS, la configuration des rôles peut s’effectuer via la console web Cloudera ou via la CLI CDP. Les deux méthodes sont décrites.

Configuration des rôles avec l’interface web CDP

Cette méthode est préférable lorsqu’on débute sur CDP. Elle est plus lente mais donne une meilleure vision du processus de configuration. Si vous n’aviez pas installé et configuré les CLI CDP et AWS tel que décrit dans Introduction à l’architecture Data Lakehouse avec CDP, c’est aussi votre seule option.

Si vous souhaitez aller plus rapidement et utiliser la ligne de commande pour mettre en place les rôles, passez directement à la section Configuration des rôles depuis un terminal.

Note : La console CDP sera de toute façon nécessaire car les règles Ranger ne peuvent être configurées à partir de la CLI CDP.

Pour configurer les Rôles de Compte :

  1. Connectez-vous à la console CDP et sélectionnez Management Console

    management_console

  2. Allez sur User Management > Groups > Votre nom de groupe

    account_roles01

  3. Sélectionnez Roles et cliquez sur Update Roles

    account_roles02

  4. Choisissez les rôles de compte listés dans les Rôles nécessaires vus plus haut et cliquez sur Update

    account_roles03

  5. Vous devriez avoir une configuration équivalente à celle-ci :

    account_roles04

Pour configurer les Rôles de Ressources :

  1. Connectez-vous à la console CDP et sélectionnez Management Console

    management_console

  2. Allez sur Environments > Votre environnement

    resource_roles01

  3. Déroulez la liste Actions située en haut à droite et cliquez sur Manage Access

    resource_roles02

  4. Cliquez sur l’onglet Access, et entrez votre nom de groupe dans la zone de recherche.

    resurce_roles03

  5. Choisissez les rôles de ressources listés dans les Rôles nécessaires vus plus haut et cliquez sur Update

    resource_roles04

  6. La dernière étape consiste à synchroniser les utilisateurs avec l’environnement en cliquant sur le bouton Synchronize Users

    resource_roles05

  7. Cliquer sur Synchronize Users

    resource_roles05

Pour configurer les Mappings IDBrokers :

  1. Sélectionner l’onglet IDBroker Mappings, et cliquer sur Edit

    idbroker_mapping01

  2. Ajout d’un Data Access Role

    1. Sélectionner votre nom de groupe dans la zone de recherche User Or Group
    2. Copier la valeur du champ Data Access Role
    3. Et la coller dans la zone Role
    4. Cliquer sur Save and Sync

    idbroker_mapping02

  3. Vous devriez avoir une configuration équivalente à celle-ci :

    idbroker_mapping03

Configuration des rôles depuis un terminal

Déployer depuis la ligne de commande est recommandé pour les utilisateurs expérimentés qui veulent lancer rapidement un environnement. Il a besoin d’avoir les CLI CDP et AWS installées en local comme décrit dans l’article Introduction à l’architecture Data Lakehouse avec CDP.

La configuration via un terminal nécessite les étapes suivantes :

  1. Configuration des Rôles de Compte
  2. Configuration des Rôles de Ressources
  3. Configuration des mappings IDBroker
  4. Synchronisation des utilisateurs et des mappings IDBroker

Configuration des Rôles de Compte

Pour pouvoir configurer aux rôles de compte, vous avez besoin du nom de votre groupe et du CRN des rôles que vous devez lui assigner. Afin de procéder à la configuration, lancer les commandes suivantes :

# Renseigner le nom de votre groupe
export CDP_GROUP_NAME=adaltas-students
# Tableau contenant les Rôles de Compte nécessaires
export ACCOUNT_ROLES=(PowerUser DFCatalogAdmin DFCatalogViewer)

# Récupération des CRN des Rôles de Compte
get_crn_account_role () {
   CDP_ACCOUNT_ROLE_NAME=$1
   CDP_ACCOUNT_ROLE_CRN=$(cdp iam list-roles |jq --arg CDP_ACCOUNT_ROLE_NAME "$CDP_ACCOUNT_ROLE_NAME" '.roles[] | select(.crn | endswith($CDP_ACCOUNT_ROLE_NAME))| .crn')
   echo $CDP_ACCOUNT_ROLE_CRN | tr -d '"'
}

Une fois les variables nécessaires définies, on peut passer à la configuration des rôles.

# Assignation des Rôles de Compte
for role_name in "${ACCOUNT_ROLES[@]}"; do \
cdp iam assign-group-role \
   --group-name ${CDP_GROUP_NAME} \
   --role $(get_crn_account_role ${role_name}); \
done

Il n’y a pas de message de retour si les rôles ont été assignés avec succès. La commande suivante permet la vérification :

cdp iam list-group-assigned-roles --group-name $CDP_GROUP_NAME

Configuration des Rôles de Ressources

Pour configurer les Rôles de Ressources, il a besoin du CRN de votre environnement CDP, du nom du groupe d’utilisateurs et des rôles que vous devez assigner. Afin de procéder à la configuration, lancer les commandes suivantes :

# Renseigner le nom de votre environnement
export CDP_ENV_NAME=[your-environment-name]
# Récupération du CRN du groupe
export CDP_GROUP_CRN=$(cdp iam list-groups |jq --arg CDP_GROUP_NAME "$CDP_GROUP_NAME" '.groups[] | select(.groupName==$CDP_GROUP_NAME).crn')
# Récupération du CRN de l'environnement
export CDP_ENV_CRN=$(cdp environments describe-environment --environment-name ${CDP_ENV_NAME} | jq -r .environment.crn)
# Tableau contenant les Rôles de Ressources nécessaires
export RESOURCE_ROLES=(DWAdmin DWUser DFFlowAdmin DFFlowUser DEUser)
# Fonction: Récupération des CRN des Rôles de Ressources
get_crn_resource_role () {
   CDP_RESOURCE_ROLE_NAME=$1
   CDP_RESOURCE_ROLE_CRN=$(cdp iam list-resource-roles |jq --arg CDP_RESOURCE_ROLE_NAME "$CDP_RESOURCE_ROLE_NAME" '.resourceRoles[] | select(.crn | endswith($CDP_RESOURCE_ROLE_NAME))| .crn')
   echo $CDP_RESOURCE_ROLE_CRN | tr -d '"'
}

Une fois les variables nécessaires définies, on peut passer à la configuration des rôles.

# Configuration des Rôles de Ressources
for role_name in "${RESOURCE_ROLES[@]}"; do \
cdp iam assign-group-resource-role \
   --group-name $CDP_GROUP_NAME \
   --resource-role-crn $(get_crn_resource_role ${role_name}) \
   --resource-crn $CDP_ENV_CRN; \
done

Il n’y a pas de message de retour si les rôles ont été assignés avec succès. La commande suivante permet la vérification :

cdp iam list-group-assigned-resource-roles --group-name $CDP_GROUP_NAME

Configuration des mappings IDBroker

Pour configurer les mappings IDBroker, il faut des informations provenant de la stack CloudFormation AWS. Les informations sont récupérées via les commandes suivantes :

# Récupération des paramètres depuis la stack CloudFormation AWS
export AWS_ACCOUNT_ID=$(aws sts get-caller-identity | jq .Account)
export CDP_RESOURCE_PREFIX=$(aws cloudformation describe-stacks --stack-name aws-${USER}-env | jq '.Stacks[].Parameters[] | select(.ParameterKey=="prefix").ParameterValue')

export AWS_DATA_ADMIN_ROLE_ARN=arn:aws:iam::${AWS_ACCOUNT_ID}:role/${CDP_RESOURCE_PREFIX}-datalake-admin-role
export AWS_RANGER_AUDIT_ROLE_ARN=arn:aws:iam::${AWS_ACCOUNT_ID}:role/${CDP_RESOURCE_PREFIX}-ranger-audit-role

Il est désormais possible d’assigner le rôle Data Access à votre groupe sur les mappings IDBroker.

Note : La commande qui suit met à jour la configuration de TOUS les mappings IDBroker, et c’est pourquoi il y a besoin des rôles Data Access et Ranger Audit.

# Update IDBroker Mappings roles
cdp environments set-id-broker-mappings \
  --environment-name $CDP_ENV_NAME \
  --data-access-role $AWS_DATA_ADMIN_ROLE_ARN \
  --ranger-audit-role $AWS_RANGER_AUDIT_ROLE_ARN \
  --mappings accessorCrn=$CDP_GROUP_CRN,role=$AWS_DATA_ADMIN_ROLE_ARN

Synchronisation des utilisateurs et des mappings IDBroker

Une fois la configuration effectuée, la synchronisation des utilisateurs et des mappings IDBroker avec votre environnement peut être lancée.

# Synchronisation des utilisateurs
cdp environments sync-all-users \
  --environment-name $CDP_ENV_NAME

# Synchronisation des mappings IDBroker
cdp environments sync-id-broker-mappings \
  --environment-name $CDP_ENV_NAME

Configuration des règles Ranger

Il y a un niveau de permission supplémentaire à configurer pour permettre aux utilisateurs de terminer le lab, les règles Ranger.

Ces règles se trouvent au niveau du service Data Warehouse. Comme vous pourrez le voir dans le prochain article consacré au lab, les utilisateurs devront créer et requêter des tables du data warehouse.

Toute cette configuration est faite sur la console Ranger via l’interface web Cloudera.

Avant de commencer, il faut bien s’assurer d’avoir le Rôle de Compte Power User sur CDP pour pouvoir poursuivre.

  1. Allez sur Data Warehouse

    cdp_datawarehouse

  2. Dans Overview, cherchez votre environnement dans les Database Catalog, cliquer sur les trois points verticaux en haut à droite, et cliquer sur Open Ranger

    ranger_policies01

  3. Dans le Service Manager de Ranger, cliquez sur Hadoop SQL

    ranger_policies02

  4. Ouvrez la policy 9 : all - database, table, columns

    • Ajoutez {USER} dans Allow Conditions, Select Users
    • Cliquez sur Save

    ranger_policy9_00

    ranger_policy9_01

    ranger_policy9_02

    ranger_policy9_03

  5. Ouvrez la policy 11 : all - storage-type, storage-url

    • Ajoutez {USER} dans Allow Conditions, Select Users
    • Cliquez sur Save

    ranger_policy11_00

    ranger_policy11_01

    ranger_policy11_02

    ranger_policy11_03

Prochaine étape : Lab pratique sur un envionnement CDP Public Cloud

Au final, les utilisateurs et l’architecture sont prêts et il est temps de laisser les utilisateurs expérimenter les services managés de votre environnement CDP Public Cloud hébergé sur AWS grâce au lab de mise en pratique qui clôture cette série.

Partagez cet article

Canada - Maroc - France

Nous sommes une équipe passionnée par l'Open Source, le Big Data et les technologies associées telles que le Cloud, le Data Engineering, la Data Science le DevOps…

Nous fournissons à nos clients un savoir faire reconnu sur la manière d'utiliser les technologies pour convertir leurs cas d'usage en projets exploités en production, sur la façon de réduire les coûts et d'accélérer les livraisons de nouvelles fonctionnalités.

Si vous appréciez la qualité de nos publications, nous vous invitons à nous contacter en vue de coopérer ensemble.

Support Ukrain