Accès HTTP à SSAS sur IIS 7.0 & Basic Authentification

 

Contexte

Le marketing de ### a besoin de mieux connaitre ses clients pour leur présenter des offres en adéquation avec leurs profils. A ce titre j’ai réalisé un POC avec les outils Microsoft BI 2008 R2. Le prototype ayant plus, j’ai réalisé quelques rapports SSRS et un cube SSAS après avoir modélisé et alimenté un Datamart avec SSIS.

 

Particularités du projet
  • Deux serveurs par environnement : Un serveur Web (IIS) et un serveur SQL (SQL Server, SSIS, SSAS, SSRS)
  • Sécurité : l’application BI étant internationale, les utilisateurs auront accès à un ou plusieurs pays. Une matrice de sécurité est stockée dans un fichier Excel, rechargée à chaque alimentation.

 

Problématique jamais encore rencontrée
  • Les utilisateurs devront se connecter au cube en http
  • Les utilisateurs devront se connecter au cube au serveur Web et non au serveur SQL -> Double Hop
  • Il n’est pas envisageable d’installer un service SQL sur le serveur Web car cela nécessiterait une autre licence
  • Il n’est pas envisageable d’installer une authentification Kerberos

 

Architecture retenue

Architecture_DataPump

Cette architecture ajoute une étape d’authentification double saut, dans laquelle les informations d’identification doivent passer du client vers le serveur Web, jusqu’au serveur principal Analysis Services.

Si vous utilisez des informations d’identification Windows et NTLM, vous obtiendrez une erreur car NTLM ne permet pas la délégation d’informations d’identification client à un autre serveur.

La solution consiste à utiliser l’authentification de base avec le protocole SSL. Cela nécessite, cependant, que les utilisateurs fournissent un nom d’utilisateur et un mot de passe pour accéder au répertoire virtuel MSMDPUMP. Une approche plus simple consiste à activer Kerberos mais cela n’est pas envisageable dans notre contexte.

 

Mise en place de la sécurité fine

Voici une partie de mon MPD :

MPD_SECU

Dans le cube j’ai créé deux Rôles « Admin » et « Country ». Le premier est en Full Control permission et le second possède les droits de lecture sur le cube et une restriction par données de dimensions :

NonEmpty (
 [Country].[Country].Members,
 (
 StrToMember ("[DIM ### USER].[EDU LOGIN].[" + UserName () + "]"),
 [Measures].[REF_SECU]
 )
 )

La measure REF_SECU est un count of rows de la table « REF_SECURITY ».

SSAS_ROLE

Les utilisateurs ont alors accès uniquement aux pays qu’ils ont le droit de consulter 😉

 

Mise en place de la connexion http

Plusieurs sites / forums parlent de cette solution, mais peu de sites décrit la démarche à suivre pour l’authentification double saut.

Pour rappel, IIS prend en charge les méthodes d’authentifications suivantes :

  • Authentification anonyme : IIS crée le compte IUSR_nom_ordinateur pour authentifier les utilisateurs anonymes qui soumettent une demande de contenu Web.
  • Authentification de base : L’authentification de base permet de limiter l’accès aux fichiers qui se trouvent sur le serveur Web au format NTFS. Avec l’authentification de base, l’utilisateur doit entrer des informations d’identification et l’accès repose sur l’ID d’utilisateur. L’ID d’utilisateur et le mot de passe sont envoyés sur le réseau en texte clair, c’est la raison pour laquelle il est fortement recommandé d’utiliser le protocole SSL, afin de chiffrer les informations d’identification que le client envoie au serveur.
  • Authentification Windows intégrée : L’authentification Windows intégrée est plus sécurisée que l’authentification de base et fonctionne bien dans un environnement intranet dans lequel les utilisateurs possèdent des comptes de domaine Windows.

Voici dans les grandes lignes, la démarche à suivre :

  • Copier le fichier MSMDPUMP.dll dans un dossier du serveur Web
  • Créer un pool d’applications et un répertoire virtuel dans IIS
  • Créer un répertoire virtuel
  • Configurer l’authentification IIS et ajouter l’extension
  • Modifier le fichier MSMDPUMP.INI pour définir le serveur cible

Pour plus de détails : lien MSDN
 
 
Et voici quelques recommandations :

  • Le compte IIS doit avoir accès au POOL
  • Le compte IIS_ « Machine » doit être placé dans le groupe ayant les droits d’administration sur le cube SSAS
  • Créer un pool OLAP le mettre en classique et configurer le compte étant Admin du cube comme compte Identité
  • Éditer les permissions du répertoire virtuel OLAP et ajouter le compte IIS_USR locale avec les droits de lecture, lecture et exécution, list folder content
  • Le fournisseur OLE DB Analysis Services doit être installé sur le serveur Web
  • Après avoir configuré 2 Binding 1 sans Hostname sur port 8050 et 1 sur le port 80 avec l’alias myAnalysis.Application.net, les utilisateurs ont accès au cube via Excel en spécifiant leurs Login et Password et l’adresse suivante : « http:// myAnalysis.Application.net /OLAP/msmdpump.dll »

 

1 Comment

Leave a comment