Dans toute application se pose la question de la gestion des droits. La gestion des droits est généralement gérée par utilisateur, par groupe utilisateur ou par rôles ou profils. La gestion de qui peut lire, modifier ou supprimer les données est gérées dans le code, dans des requêtes SQL qui peuvent devenir très complexes : dans chaque accès à la base de données il faut penser à intégrer la gestion des droits et filtrer les données dans une requête where avec des jointures vers les tables de gestion des droits. Ceci n’est pas très performant, et peu poser des problèmes de sécurité si les requêtes sont mal écrites ou si un nouveau développeur oublie d’intégrer les filtres.

Depuis la version 9.5 de Postgres, une nouvelle feature permet de gérer tout cela directement dans la base de données ! On pouvait déjà définir des droits sur les tables (lecture, écriture, suppression sur toutes les données de la table) ou sur les colonnes (qui peut voir ou modifier certaines colonnes), et maintenant il est possible de gérer les droits par ligne dans une table. Cette nouveauté s’appelle Row Level Security.

Prenons un exemple : Sur un site de vente en ligne, un utilisateur ne doit voir que ses commandes dans le back office, et traditionnellement cela sera fait par une close where :

Nous avons créé une table orders et deux commandes pour les clients enzo et evan.
Quand Enzo se connecte au backoffice, on va afficher ses commandes avec la requête suivante :

L’idée des RLS est de créer des utilisateurs ou des rôles pour chaque client sur la base de données, et définir les droits d’accès selon l’utilisateur ou le rôle utilisé :

Ensuite nous allons activer RLS sur la table orders :

create table orders (order_id serial primary key, amount integer not null check
(amount > 0.0), time_placed timestamptz default current_timestamp, customer text);
insert into orders (amount, customer) values (10, 'enzo'), (20, 'evan');
select order_id, amount, customer from orders where customer = 'enzo';
create role enzo;
create role evan;
alter table orders enable row level security;
create policy orders_reader on orders for select using (customer = current_user);
grant select on orders to enzo;
grant select on orders to evan;

On active RLS sut la table orders, et ensuite on va mettre en place une règle : sur cette table, on ne va afficher que les lignes où le champ customer correspond à l’utilisateur ou le rôle connecté. Puis ensuite on autorise chaque utilisateur à accéder à la table.

set role enzo;
select order_id, amount, customer, time_placed from orders;
 order_id | amount | customer |         time_placed
 ----------+--------+----------+------------------------------
         1 |   10  | enzo     | 2015-08-21 14:05:13.03572-04

Et voilà ! L’utilisateur Enzo ne verra que ses données, sans devoir ajouter un filtre à chaque requête SQL. Idem pour Evan :

set role evan;
select order_id, amount, customer, time_placed from orders;
 order_id | amount | customer |         time_placed
 ----------+--------+----------+------------------------------
         2 |   20  | evan     | 2015-08-21 14:05:13.03572-04

Voyons un autre exemple plus complet : En effet, on ne stockera jamais le login de l’utilisateur dans la commande, on passera par une table customers :

create table customers (customer_id serial primary key, username text not null
unique);
insert into customers (username) values ('enzo'), ('evan');
create role enzo;
create role evan;
grant select on customers to enzo;
grant select on customers to evan;
create table orders (order_id serial primary key, amount integer not null check
(amount > 0.0), time_placed timestamptz default current_timestamp, column
customer_id integer references customers);
insert into orders (amount, customer) values (10, 1), (20, 2);

On crée une table customers et une table orders qui référence la table customers. On crée aussi les rôles pour nos clients et deux commandes.

Il faut maintenant filtrer la table orders de la façon suivante :

create policy orders_reader on orders for select using ( (select true from
customers where username = current_user and customers.customer_id =
orders.customer_id) );
set role enzo;
select * from orders;
 order_id | amount | customer |         time_placed

Et voilà, la table est filtrée selon une table liée, ce qui sera très souvent le cas en pratique.

On pourrait aussi appliquer une row policie sur la table customers pour limiter l’accès juste à la ligne de chaque utilisateur.

Désormais toute la logique de gestion de l’accès aux données est gérée par du paramétrage de la base de données, et pas dans chaque requête ou code d’accès.

Bien que cette fonctionnalité soit très pratique, elle présente tout de même certaines contraintes :

Au lieu d’avoir un seul utilisateur qui accède à la base de données, il faut gérer un compte ou rôle par client : On va définir le rôle à la création de la session. Il faut aussi créer ou supprimer un rôle de base de données quand on crée ou supprime un utilisateur de l’application.
Les Row Policies ne sont pas encore standardisées, il sera donc très compliqué de migrer la base de données vers une autre base qui ne gère pas cette feature.

En pratique nous avons eu des cas où lors d’un passage en recette ou en production les Row Policies n’était pas activées : Je conseille donc d’ajouter au monitoring de l’application un mécanisme qui vérifie que les règles sont bien activées.
Il faut absolument documenter toutes les règles mises en place, car rapidement il devient très compliqué de savoir quelle règle s’applique sur quelle table.

De plus l’impact sur les performances n’est pas négligeable, il faut créer les index qui vont bien pour que les row policies soient performantes.

Depuis quelques années les données personnelles deviennent des données critiques et très sensibles (RPGD, …), il convient donc de les sécuriser au maximum et dans ce cadre les RLS sont une très bonne solution.

----------+--------+----------+------------------------------
           | enzo     |

Description détaillée de la mission :

Au sein du pôle Industrialisation de la Direction des Opérations Techniques, vous apportez votre expertise sur l’activité applications conteneurisées de manière transverse. Vous interviendrez sur des missions de BUILD et de RUN sur les périmètres de notre plateforme d’orchestration de conteneurs et notre CI/CD.
Vos missions s’articulerons sur l’étude, la conception, la mise en production et l’amélioration des services d’opérations délivrés au travers de notre solution Openshift.

En qualité d’expert, vous êtes donc à même de :
• Effectuer de la veille technologie partagée avec les architectes techniques
• Mener des études d’opportunité ainsi que des POCs
• Participer de manière collégiale à la définition de la stratégie de conteneurisation
• Gérer les roadmaps des briques inhérentes à la plateforme de conteneurs et CI/CD
• Cadrer et concevoir des offres de services automatisés dans notre catalogue de service
• Définir les processus d’automatisation cible et les documenter
• Participer à la définition des architectures cibles et des points d’adhérence possible avec les autres briques techniques
• Déployer et piloter les services en cohérence avec le cadre de MEP et du planning projet
• Former et faire le transfert de connaissances à l’exploitation
• Définir les points d’amélioration ou d’évolution technique
• Mettre en place et suivre le capacity planning via des outillages
• Apporter un support Niveau 3 (gérer des incidents majeurs et procéder à des escalades partenaires)

Début de la mission : ASAP

COMPETENCES REQUISES :

• Vous justifiez d’une expérience significative dans le domaine de la conteneurisation On-Premise et Cloud Public, et en particulier dans l’implémentation d’infrastructures Openshift
• Vous avez les compétences et l’expérience dans les technologies suivantes :
o Une maitrise d’Openshift et/ou de Kubernetes,
o Une maitrise d’Ansible / Gitlab / GitLabCI / Nexus / Harbor / SonarQube / Vault / Prometheus / Grafana / Graylog / Terraform / Xlrelease
o Une expertise systèmes d’exploitation et outillage attenant Redhat Enterprise Linux
o Des connaissances CEPH

Aptitudes personelles :

Au sein de son Centre de Compétences RETAIL, La Direction Application Groupe des Systèmes d’Information recherche un DBA
• L’application est déployée dans un contexte international à travers 36 pays
• La solution est basée sur la solution Y2 de l’éditeur CEGID
• Le DBA travaillera en étroite collaboration avec l’architecte solution

Rôles & Responsabilités :

• Définir les choix d’implémentation des bases de données (Paramétrage, dimensionnement, etc.)
• Suivre les statistiques des performances d’accès aux objets des BDD de manière à assurer ainsi leur optimisation
• Concevoir et améliorer le plan de maintenance automatisé
• Concevoir et implémenter des maintenances « à la demande » si nécessaire
• Assurer la mise à jour de la documentation

Support technique et assistance aux informaticiens et aux utilisateurs
• Assurer le support aux développeurs et aux techniciens d’exploitation.
• Intervenir en cas d’incidents limitant les performances des bases de données ou l’accès aux informations.
• Formation des équipes dans les zones

L’équipe TEAM (Supports&Opérations/Infrastructure/Cloud) au sein la Direction des Systèmes d’Information recherche un(e) SysOps Conteneurisation Junior afin de renforcer son effectif.

Description de la mission
• Hébergement d’application DIGITAL et WEB (serveurs Apache / CMS AEM / serveurs d’applications JAVA / NodeJS)
• Provisioning d’infrastructure sur AWS (DNS / sécurité / Compute / Storage / conteneurisation / Clusterisation)
• Développement de la CONFIGURATION APACHE
• Intégration des applications dans l’écosystème CI/CD, Monitoring, Testing
• Support au équipes métiers
• Maintien en condition opérationnelle
• Méthodologie DEVOPS
• Proposition d’infrastructure en réponse aux contraintes Métier (SEO / SEA / performance DIGITAL).

Description de l’entreprise

L’équipe TEAM (Supports&Opérations/Infrastructure/Cloud) au sein la Direction des Systèmes d’Information un(e) SysOps Web EXPERT (H/F) afin de renforcer son effectif. Cette équipe est en charge la responsabilité de l’infrastructure Cloud sur laquelle repose la majeure partie des applications digitales.

Description de la mission

La mission concerne en particulier le scope suivant :
• Hébergement d’application DIGITAL et WEB (serveurs Apache / CMS AEM / serveurs d’applications JAVA / NodeJS)
• Provisioning d’infrastructure sur AWS (DNS / sécurité / Compute / Storage / conteneurisation / Clusterisation)
• Développement de la CONFIGURATION APACHE
• Intégration des applications dans l’écosystème CI/CD, Monitoring, Testing
• Support au équipes métiers
• Maintien en condition opérationnelle
• Méthodologie DEVOPS
• Proposition d’infrastructure en réponse aux contraintes Métier (SEO / SEA / performance DIGITAL)
Nous recherchons donc un(e) SysOps et DevOps Web EXPERT (H/F) qui remplira ces différentes tâches grâce à ses compétences techniques et son savoir être.

2 jours sur site et 3 jours de TT

Voici les principaux périmètres pour cette mission sont les suivants :

Gestion des deux fondations Cloud AWS
o Maintenir et faire évoluer ces deux écosystèmes

Build de nouveaux assets sur le cloud
o Roadmap 2021/2022 : une quinzaine d’applications à migrer sur le cloud, avec mise en place d’une pipeline, terraformation complète des applications, monitoring, backup/restore, etc…

Gestion et Évolutions des pipelines CI/CD
o Outillage DevOps : Terraform, Docker, Ansible, Jenkins, Shell, GITLAB, EKS

Gestion des Environnements
o Maintenir et Faire évoluer les Environnements (assurer leur alignement, garantir leur fonctionnement, communiquer les indisponibilité) et les Interfaces SI Tiers (flux, montée de version des webservices, certificats, …) et mettre en œuvre les montées de version.

Gestion des Outils Transverses
o Factory, CI/CD, Ticketing, outils collaboratifs, etc..

Gestion des Composants Transverses
o Gérer les Accès aux Outils
o Animer les projets / changements & impacts / incidents / améliorations

Gestion du Monitoring
o Mettre en place l’outillage de monitoring (infrastructure)
o Mettre en place et Assurer la maintenance des sondes
o Alerter sur les indispos des environnements (préventifs, réactifs)
o ELK, Grafana, Senzu/Uchiwa, Splunk

Gestion de la production
o Gestion des Changements & impacts / incidents / améliorations
o Monitoring des applications (logs, alertes, stack ELK, Grafana, Prometheus)

Description de la mission :

Vous serez responsable de l’infrastructure sur notre périmètre (outils transverses CICD/monitoring), de la mise en place des nouveaux projets, de la maintenance et du maintien en condition opérationnelle (MCO). Ces opérations passent par une phase de design puis d’implémentation en veillant à respecter l’approche DevOps.
La mission concerne en particulier le scope suivant :
• Provisioning d’infrastructure sur AWS (DNS / sécurité / Compute / Storage / conteneurisation / Clusterisation),
• Déploiement et maintenance des outils transverses mis à disposition des collaborateurs,
• Intégration des applications dans l’écosystème CI/CD, Monitoring, Testing,
• Méthodologie DevOps,
Nous recherchons donc un(e) DevOps SysOps Cloud confirmé qui remplira ces différentes tâches grâce à ses compétences techniques et son savoir être.

3 jours TT et 2 jours en présentiel

Vous devrez apporter des solutions et vous occuper de la gestion de l’infrastructure.

Il est impératif de maîtriser l’infrastructure

L’ anglais est obligatoire car une partie de l’équipe située en Inde va venir sur Paris.

Pas de domaine fonctionnel, vous serez formé en mission.

Important : il n’y a pas de cloud pour le moment


Tout en assurant l’accompagnement de l’équipe vous devrez analyser les problèmes devops et les résoudre.

Vous aurez en charge 2 missions principales :

Mission 1 : Leader la définition de la stratégie DevOps d’une application Legacy complexe
o Tâche principale : définir et implémenter une stratégie Continuous Deployment
– Interview de la communauté d’AM (Paris – Bangalore / ~ 7 FTs + 1 Service Team)
– Monter la stratégie
– L’implémenter en garantissant sa simplification
– Former les équipes de la communauté sur le nouveau process
– Critère de succès
• Les équipes sont autonomes
• Les équipes adhèrent au nouveau process
o Tâche secondaire
– Définir les autres versants de la stratégie DevOps demandée (Métrologie, automatisation, optimisation…)
– Implémenter ou coordonner l’implémentation de cette stratégie

Mission 2 : Participer à la définition et à l’implémentation de la stratégie DevOps du système cible de la chaîne de valeur centrale (versus les chaînes de valeur locale)
o Contexte : Le système d’information de la DSI des Risques Structurels se transforme pour devenir un Système d’information orienté Data et construit autour du paradigme d’architecture Plate-forme/micro-services ( versus une architecture orientée applications). Le nouveau Système d’information est fortement basé sur les technologies Clouds. Les outils DevOps doivent s’adapter.
Ce projet de transformation a commencé fin 2020 et se terminera en 2023.
Le Système d’information cible implique 7 FT et à terme 14
o Mission :
– S’approprier la Stratégie
– L’enrichir
– L’implémenter

– Rôle à définir avec le candidat (rôle de lead possible mais pas exclusivement)

Pourquoi intégrer cette mission ?

Mise en place d’une politique de CICD dans un environnement complexe et multiculturel (Paris Bangalore)

Participer au pivotage DevOPs d’un SI vers les technologies clouds d’un SI clé de la banque

Tâches variées allant du cadrage technique au développement Ops

Rattaché au responsable de l’équipe de Production applicative Global Trade, vous assurez le rôle d’Ingénieur de Production, d’intégrateur et de chef de projet technique.

La connaissance des bonnes pratiques d’usage lorsque l’on évolue sur des environnements de Production est elle aussi impérative.

Une grande rigueur et une bonne capacité de reporting sont des atouts nécessaires sur l’accompagnement des projets métiers.

Vous aurez pour mission au quotidien :
• Les activités de MCO/Run (Gestion des incidents, des demandes et des changements, PCA, PCSI, MEP majeures)
• La contribution aux projets métier et aux projets techniques (pilotage, coordination, planning, architecture, commandes et configuration des serveurs).
• Le suivi des plans d’actions des problèmes majeurs notamment.
• Le maintien des plateformes applicatives (documentation, supervision, sauvegarde, test de continuité, performances, amélioration continue)
• L’accompagnement et l’adhésion à la démarche DEVOPS, garantir le respect des standards d’urbanisation, se maintenir au courant des solutions techniques (Docker, Cloud, Blockchain, Big Data, etc.)
Pour ce faire, vous devrez :
• Garantir la disponibilité des applications en coordonnant les acteurs participant à cette disponibilité (Etudes, Infras, Middleware, Sécurité).
• Accompagner le métier sur ces projets « business » mais aussi sur le portefeuille applicatif
• Assurer la veille technologique sur le périmètre en respectant les normes en vigueur et en analysant l’impact de ces versions sur les applicatifs liés.

La mission proposée est soumise aux interventions HPO ainsi qu’à une participation au dispositif d’astreinte hebdomadaire.
La maitrise de la langue anglaise (oral et écrit) est obligatoire.

Ci-dessous un éventail non exhaustif des technologies et compétences requises :

Systèmes :
Systèmes Unix/Linux RHEL, Windows Server, AIX

SGBD :
Oracle 12c, SQL Server, My SQL, CouchBase, MongoDB

Connaissances générales :
Notions de Sécurité et de Réseaux (cryptographie et certificats, Proxy, Firewall, DMZ, Bastion, etc.)
Notions d’Architecture (N-tiers, résilience d’application, sécu réseaux, etc.)
Scripting Shell/Perl, Batch, PowerShell, Python

Notions de développement (Jenkins/Git/Bitbucket, Java, etc.)

Notions d’infrastructure Systèmes (technologies de clustering, stockage SAN, VMWARE …)
DevOps
Docker
Blockchain
BigData

Ordonnancement et Instrumentation :
Control M v9, Zabbix, NewTest, Splunk/ELK, AppDynamics

Socle Outils Techniques :
XL Deploy/XL Release, Cloud Privé/Public

Echanges protocolaires :
Flux CFT/Interpel
MQ Series

Gestionnaire de contenu et Analytique :
FileNet, Cognos , PowerBI, SSAS/SSRS

Serveur web :
IHS / IIS / ARR / Apache

Serveur d’application :
JBOSS 6.x, 7.x
Tomcat
Websphere Application Server
WebService et APIs (Axway API Gateway)