Protéger ses mots de passe dans SAS
Introduction et quelques notions à connaître
Continuons notre passage en revue des "bonnes pratiques" à mettre en œuvre sur sa plate-forme SAS. Je ne vous apprends rien, mais lorsque les utilisateurs accèdent à des données dans une base de données à distance via l'application SAS, un identifiant utilisateur de base de données valide et un mot de passe sont nécessaires. Peu importe le domaine où vous œuvrez, la sécurité est l’affaire de tous, non ? Une méthode pour permettre un accès est de créer un identifiant de connexion pour chaque utilisateur dans chaque base de données. Bien-sur cette méthode est soumise au risque d’une exposition des mots de passe utilisateur dans les programmes SAS. Ce billet présente une solution simple pour surmonter ce problème. En effet, je vais vous présenter la procédure PROC PWENCODE (sas encrypt password) qui vous permettra dissimuler les mots de passe à la vue des petits curieux… J’imagine que dans votre société, la plupart des données sont stockées dans une ou plusieurs bases de données et, bien sûr, les utilisateurs ont besoin d’accéder à la base pour extraire et analyser vos précieuses données. SI précieuses que vous ne souhaitez pas que tout le monde puisse y accéder, c’est pour cette raison que chaque personne souhaitant y jeter un coup d’œil doit posséder un compte utilisateur et un mot de passe. Comme dans n’importe quel environnement un peu sécurisé. Aussi, afin de permettre aux utilisateurs d'accéder à leurs données à partir de l'application SAS d'une manière simple tout en garantissant la sécurité, il est donc indispensable de crypter le mot de passe. Le cryptage implique la transformation des données d'une forme à l'autre à l'aide d'opérations mathématiques et, en général, une valeur de clé. D’ailleurs, je ne sais pas que vous en pensez, mais je ne devrais pas utiliser le mot cryptage, utilisé à tort par tous, mais plutôt chiffrement, c’est-à-dire le procédé avec lequel nous allons rendre la compréhension d’un mot de passe impossible à toute personne qui n’a pas la clé de déchiffrement. Aussi le décryptage consiste à retrouver ce mot de passe correspondant à une chaîne chiffré sans posséder la clé de déchiffrement ( les anglosaxons « cassent » le code). Ainsi, mis au regard du couple chiffrer/déchiffrer et du sens du mot « décrypter », le terme « crypter » n’a pas de raison d’être. En faisant bêtement un anglicisme, on ajoute un mot, « cryptage », dans la langue française, mais on perd un sens, celui de la différence entre « déchiffrement « et « décryptage » ! Comme ça je me chipote ? Revenons à nos moutons et à notre procédure PWENCODE. Elle permet de coder, chiffrer, crypter (appelez ça comme vous voulez) les mots de passe. Ces mots de passe codé peuvent être utilisés à la place des mots de passe « en clair » dans les programmes SAS. Et c’est bien ça le plus important, non ?Présentation de la procédure
1 2 3 |
PROC PWENCODE IN = 'password' OUT=fileref METHOD=encodingmethod; RUN ; |
Méthode | Description | Algorithme utilisé |
sas001 | Mot de passe chiffré avec base64 | aucun |
sas002 (sasenc) | Mot de passe chiffré avec une clé de 32bits | Algorithme propriétaire SAS |
sas003 | Mot de passe chiffré avec une clé de 256bits avec une clé de salage 16 bits | Algorithme AES, disponible avec SAS/SECURE |
sas005 | Mot de passe chiffré avec une clé de 256bits avec une clé de salage 64 bits | Algorithme AES, disponible avec SAS 9.4 |
Exemples d'utilisation
Prenons cette instruction libname :
1 2 3 4 |
libname xe oracle user=sas pw=sas path="ora12"; |
1 2 3 |
proc pwencode in='sas' method=sas003; run; |
1 2 3 4 |
libname xe oracle user=sas pw="{SAS003}80C025BC51C7C1C18C1F8012405962F2447F" path="ora12"; |
1 2 3 |
ERROR: Failed to load encryption algorithm. ERROR: Aucune sortie générée. ERROR: Extension introuvable : (tkersa) |
1 2 3 |
proc pwencode in='sas' method=sas002; run; |
1 |
{sas002}146DDC32134E738B |
Dans quels cas est-il possible de chiffrer ses mots de passe ?
PWENCODE permet l’encodage de vos mots de passe pour:- SAS Datasets,…
- Bases de données (DB2, ORACLE,…)
- Serveurs SAS/CONNECT
- Serveurs SAS/SHARE
- Serveurs SAS IOM (Metadata Server,…)
1 2 3 4 5 6 |
options metaserver='monserveursas' metaport=8565 metaprotocol=bridge metauser='sasadm@saspw' metapass='{SAS003}90ED74188FAC68A410654A87F9C972D650AF' metarepository='Foundation'; |