CDP partie 5 : gestion des permissions utilisateurs sur CDP
18 juil. 2023
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 partie 1 : introduction à l’architecture Data Lakehouse avec CDP
- CDP partie 2 : déploiement d’un environnement CDP Public Cloud sur AWS
- CDP partie 3 : activation des Data Services en environnement CDP Public Cloud
- CDP partie 4 : gestion des utilisateurs sur CDP avec Keycloak
- CDP partie 5 : gestion des permissions utilisateurs sur CDP
- CDP partie 6 : cas d’usage bout en bout d’un Data Lakehouse avec CDP
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 :
-
Connectez-vous à la console CDP et sélectionnez Management Console
-
Allez sur User Management > Groups > Votre nom de groupe
-
Sélectionnez Roles et cliquez sur Update Roles
-
Choisissez les rôles de compte listés dans les Rôles nécessaires vus plus haut et cliquez sur Update
-
Vous devriez avoir une configuration équivalente à celle-ci :
Pour configurer les Rôles de Ressources :
-
Connectez-vous à la console CDP et sélectionnez Management Console
-
Allez sur Environments > Votre environnement
-
Déroulez la liste Actions située en haut à droite et cliquez sur Manage Access
-
Cliquez sur l’onglet Access, et entrez votre nom de groupe dans la zone de recherche.
-
Choisissez les rôles de ressources listés dans les Rôles nécessaires vus plus haut et cliquez sur Update
-
La dernière étape consiste à synchroniser les utilisateurs avec l’environnement en cliquant sur le bouton Synchronize Users
-
Cliquer sur Synchronize Users
Pour configurer les Mappings IDBrokers :
-
Sélectionner l’onglet IDBroker Mappings, et cliquer sur Edit
-
Ajout d’un Data Access Role
- Sélectionner votre nom de groupe dans la zone de recherche User Or Group
- Copier la valeur du champ Data Access Role
- Et la coller dans la zone Role
- Cliquer sur Save and Sync
-
Vous devriez avoir une configuration équivalente à celle-ci :
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 :
- Configuration des Rôles de Compte
- Configuration des Rôles de Ressources
- Configuration des mappings IDBroker
- 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.
-
Allez sur Data Warehouse
-
Dans Overview, cherchez votre environnement dans les Database Catalog, cliquer sur les trois points verticaux en haut à droite, et cliquer sur Open Ranger
-
Dans le Service Manager de Ranger, cliquez sur Hadoop SQL
-
Ouvrez la policy 9 : all - database, table, columns
- Ajoutez
{USER}
dans Allow Conditions, Select Users - Cliquez sur Save
- Ajoutez
-
Ouvrez la policy 11 : all - storage-type, storage-url
- Ajoutez
{USER}
dans Allow Conditions, Select Users - Cliquez sur Save
- Ajoutez
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.