Limiter ou activer l’accès à une application de service dans SharePoint Server

S’APPLIQUE À :oui-img-132013 oui-img-162016 oui-img-192019 oui-img-seÉdition d’abonnement no-img-sopSharePoint dans Microsoft 365

Dans SharePoint Server, vous pouvez restreindre l'accès à une application de service afin qu'elle ne soit disponible que pour des applications web spécifiées.

Par défaut, toutes les applications de service sur la batterie de serveurs locale sont disponibles pour toutes les applications web sur cette même batterie de serveurs. Toutefois, vous pouvez souhaiter restreindre l'accès à une application de service si vous hébergez plusieurs clients sur la même batterie de serveurs et que vous souhaitez isoler les applications de service d'un client de l'application web d'un autre client.

Si vous restreignez l’accès à une application de service et qu’ultérieurement vous décidez de la rendre accessible à la totalité de la batterie de serveurs, vous pouvez supprimer la restriction.

Restreindre l’accès à une application de service

Pour restreindre l’accès à une application de service, supprimez les comptes de service de celle-ci. À l'inverse, pour autoriser l'accès à une application de service, ajoutez des comptes de service à celle-ci. Vous pouvez effectuer ces tâches à l'aide de l'Administration centrale ou de PowerShell.

Pour restreindre l’accès à une application de service, vous devez effectuer les tâches suivantes :

  1. Ajoutez un compte de service spécifique à l’application de service.

  2. Supprimez l’ID de la batterie de serveurs locale de l’application de service.

Les procédures indiquées dans cet article expliquent comment restreindre ou restaurer l'accès à une application de service. Toutefois, vous pouvez suivre les étapes indiquées dans les procédures pour ajouter n'importe quel compte de service à une application de service quelconque ou pour supprimer n'importe quel compte de service de l'application de service de votre choix.

Par exemple, la procédure Pour restaurer l'accès à une application de service à l'échelle de la batterie de serveurs locale à l'aide de l'Administration centrale explique comment ajouter l'ID de la batterie de serveurs locale à une application de service. Toutefois, vous pouvez utiliser la même procédure pour ajouter n'importe quel autre compte de service à une application de service. Pour ce faire, vous fournissez le compte de service approprié au lieu de l'ID de la batterie de serveurs locale.

Étant donné que l’ID de la batterie de serveurs locale donne accès à l’application de service à l’échelle de la batterie de serveurs locale par défaut, il s’avère redondant d’accorder par ailleurs des autorisations d’application web locales explicites à une application de service, sauf si vous supprimez également l’ID de la batterie de serveurs locale.

Pour accorder des autorisations à une application de service, vous devez récupérer et fournir le compte de service approprié. Dans le cas d'une application web, ce compte est également appelé compte d'identité du pool d'applications.

Après avoir accordé des autorisations à un compte de service et supprimé l'ID de la batterie de serveurs locale d'une application de service, seules les applications web gérées par le compte de service affecté peuvent accéder à l'application de service. Vous pouvez affecter plusieurs applications web (possédant différents comptes de service de gestion) à la même application de service en répétant ces procédures et en ajoutant les différents comptes de service d'application web à l'application de service.

Attention

Si vous supprimez l’ID de la batterie de serveurs locale d’une application de service et que vous n’affectez aucun autre compte de service à cette application de service, celle-ci n’est plus accessible à aucune application web.

Restreindre l’accès à une application de service à l’aide de l’Administration centrale

Pour restreindre l'accès à une application de service à l'aide du le site Web Administration centrale de SharePoint, vous devez effectuer la procédure suivante :

  1. Récupérez le compte de service d’application web.

  2. Ajoutez le compte de service d’application web à l’application de service.

  3. Supprimez l’ID de la batterie de serveurs locale de l’application de service.

Pour récupérer un compte de service d’application web à l’aide de l’Administration centrale

  1. Vérifiez que le compte d’utilisateur qui exécute cette procédure est membre du groupe SharePoint Administrateurs de batterie.

  2. Dans la page d'accueil de l'Administration centrale, dans la section Sécurité, cliquez sur Configurer les comptes de service.

  3. Dans la page Comptes de service, sélectionnez les services et le composant de l'application web dans la première liste déroulante.

    Le compte de service apparaît dans la liste Sélectionnez un compte pour ce composant. Notez le nom du compte de service, car vous l'utiliserez dans la prochaine procédure.

  4. Cliquez sur Annuler pour quitter la page Comptes de service sans apporter de modifications.

Pour accorder et supprimer, à l’aide de l’Administration centrale, des autorisations pour des comptes de service afin de définir l’accès à une application de service

  1. Vérifiez que le compte d’utilisateur qui effectue cette procédure est membre du groupe SharePoint Administrateurs de batterie.

  2. Dans la page d'accueil de l'Administration centrale, dans la section Gestion des applications, cliquez sur Gérer les applications de service.

  3. Dans la page Gérer les applications de service, cliquez sur la ligne qui contient l'application de service pour laquelle vous souhaitez affecter des autorisations.

    Le ruban devient accessible.

  4. Dans le groupe Partage du ruban, cliquez sur Autorisations.

  5. Dans la boîte de dialogue Autorisations de connexion , tapez le nom du compte de service que vous avez récupéré dans la procédure précédente, puis cliquez sur Ajouter.

  6. Vérifiez que le nom de compte de service nouvellement ajouté est sélectionné dans le volet du milieu, puis activez la case à cocher appropriée dans le volet inférieur pour fournir le niveau d’autorisation requis.

  7. Dans le volet du milieu, cliquez sur Batterie de serveurs locale, puis sur Supprimer.

  8. Vérifiez que la page Autorisations de connexion recense uniquement le compte de service qui doit accéder à l'application de service et que le compte de service dispose des autorisations requises sur l'application de service. Cliquez sur OK, pour modifier les autorisations, ou sur Annuler, pour terminer l'opération sans apporter de modifications.

Vous pouvez accorder et supprimer des autorisations pour tout compte de service à l'aide de cette procédure. Pour restaurer l'ID de la batterie de serveurs locale sur l'application de service au moyen de CentralAdmin_2nd, une étape supplémentaire, qui ne s'applique pas aux autres comptes de service, est requise. Pour plus d'informations sur cette opération, reportez-vous à l'article Restaurer l'accès à une application de service au niveau de la batterie de serveurs plus loin dans cet article.

Restreindre l’accès à une application de service à l’aide de Microsoft PowerShell

Toutes les procédures de cette section supposent que vous disposez des autorisations appropriées.

La restriction de l'accès à une application de service à l'aide de PowerShell est plus complexe que l'exécution de la même tâche à l'aide de l'Administration centrale. Dans PowerShell, vous utiliserez certaines procédures pour rassembler et stocker des informations que vous utiliserez dans les procédures ultérieures.

Une fois que vous avez démarré PowerShell, les étapes restantes pour restreindre l’accès à une application de service sont les suivantes :

  1. Récupérez l’ID de la batterie de serveurs locale.

  2. Récupérez le compte de service d’application web.

  3. Créez une entité de sécurité qui contient le compte de service d’application web.

  4. Récupérez l’objet de sécurité de l’application de service.

  5. Ajoutez le compte de service d’application web à l’objet de sécurité de l’application de service.

  6. Supprimez l’ID de la batterie de serveurs locale de l’objet de sécurité de l’application de service.

  7. Affectez l’objet de sécurité mis à jour à l’application de service.

  8. Affichez et révisez les autorisations mises à jour.

Pour démarrer une session Microsoft PowerShell

  1. Vérifiez que vous êtes membre :

    • du rôle serveur fixe securityadmin sur l'instance SQL Server.

    • du rôle de base de données fixe db_owner sur toutes les bases de données à mettre à jour ;

    • du groupe Administrateurs sur le serveur sur lequel vous exécutez les applets de commande PowerShell.

    Un administrateur peut utiliser la cmdlet Add-SPShellAdmin pour accorder les autorisations d'utilisation des cmdlets SharePoint Server.

    Remarque

    [!REMARQUE] Si vous ne disposez pas des autorisations, contactez votre administrateur d'installation ou votre administrateur SQL Server afin de les demander. Pour plus d'informations sur les autorisations PowerShell, voir Add-SPShellAdmin.

  2. Démarrez SharePoint Management Shell.

Pour récupérer un compte de service d'application web et créer une entité de sécurité à l'aide de Microsoft PowerShell

  1. Depuis l'invite de commandes PowerShell, tapez la commande suivante pour récupérer le compte de service (c'est-à-dire, le compte d'identité du pool d'applications) d'une application web :

    $webapp = Get-SPWebApplication <http://WebApplication>
    $webApp.ApplicationPool.UserName
    

    <http://WebApplication> est l’URL de l’application web.

    Le nom du compte de service d’application web apparaît au niveau de l’invite de commandes.

  2. Pour créer une entité de sécurité, tapez la commande suivante :

    $principal = New-SPClaimsPrincipal <ServiceAccount> -IdentityType WindowsSamAccountName
    

    <ServiceAccount> est le nom d’utilisateur (sous la forme ou jane@contoso.com contoso\jane) qui a été récupéré en exécutant la commande précédente. La variable $principal contiendra la nouvelle entité de revendications.

Pour extraire l’objet de sécurité de l’application de service

  1. Pour extraire l’objet de sécurité de l’application de service, tapez les commandes suivantes. La variable $security stocke l’objet de sécurité de l’application de service.

    $spapp = Get-SPServiceApplication -Name "<ServiceApplicationDisplayName>"
    $spguid = $spapp.id
    $security = Get-SPServiceApplicationSecurity $spguid
    

    <ServiceApplicationDisplayName> est le nom complet de l’application de service.

    Importante

    Vous devez placer le nom d’affichage entre guillemets et il doit correspondre exactement au nom complet de l’application de service. Cela concerne également l’utilisation des majuscules. Si vous avez plusieurs applications de service qui ont le même nom d’affichage (nous ne recommandons pas cela), vous pouvez exécuter l’applet de commande Get-SPServiceApplication sans arguments pour afficher toutes les applications de service. Vous pouvez ensuite identifier l’application de service directement par son GUID.

    Get-SpServiceApplication
    

    Toutes les applications de service sont répertoriées.

    $spapp = Get-SpserviceApplication -Identity <GUID>
    $spguid = $spapp.id
    

    <GUID> est le GUID de l’application de service pour laquelle vous souhaitez mettre à jour les autorisations.

Pour mettre à jour l’objet de sécurité de l’application de service avec les autorisations de votre choix

  1. La première étape de la mise à jour de l’objet de sécurité de l’application de service consiste à ajouter la nouvelle entité de sécurité $principal à l’objet de sécurité de l’application de service $security. Pour ce faire, tapez la commande suivante :

    Grant-SPObjectSecurity $security $principal -Rights "<Rights>"
    

    <Droits> correspond aux autorisations que vous souhaitez accorder. En général, il s'agit de Contrôle total. Les autorisations disponibles peuvent varier selon l'application de service.

    Si vous ne souhaitez pas accorder d’autorisations Contrôle total et que vous ignorez les autorisations qui peuvent être accordées à l’application de service, vous pouvez exécuter les commandes suivantes afin de retourner les chaînes d’autorisations disponibles :

    $rightslist = Get-SPServiceApplicationSecurity $spapp
    $rightslist.NamedAccessRights
    
  2. Pour supprimer l’ID de batterie de serveurs local (stocké dans la variable $farmID ) de l’objet de sécurité de l’application de service $security, tapez la commande suivante :

    Revoke-SPObjectSecurity $security $farmID
    
  3. Pour affecter l’objet de sécurité $security mis à jour à l’application de service et vérifier que l’objet de sécurité de l’application de service est correctement mis à jour, tapez les commandes suivantes :

    Set-SPServiceApplicationSecurity $spapp -ObjectSecurity $security (Get-SPServiceApplicationSecurity $spapp).AccessRules
    

    Vous pouvez ajouter n’importe quel compte de service à une application de service, ou le supprimer de celle-ci, à l’aide de ces procédures.

Restaurer l’accès à une application de service au niveau de la batterie de serveurs

Vous pouvez restaurer l'accès à une application de service à l'échelle de la batterie de serveurs en ajoutant l'ID de la batterie de serveurs locale à l'application de service. Pour ce faire, vous pouvez utiliser l'Administration centrale ou les commandes PowerShell. Cependant, vous devez utiliser PowerShell pour obtenir l'ID de batterie locale.

Pour récupérer l’ID de la batterie de serveurs locale à l’aide de PowerShell, procédez comme suit :

  1. Cette procédure démarre après l’étape 4 de la procédure Pour démarrer une session Microsoft PowerShell.

  2. La commande suivante récupère l’ID de batterie de serveurs local, le stocke dans la variable $farmID et affiche l’ID à l’invite de commandes :

    $farmID = Get-SPFarm | select id
    

    Si vous souhaitez restaurer l'accès à l'échelle de la batterie de serveurs à l'aide de l'Administration centrale, copiez cette valeur dans le Presse-papiers en vue de l'utiliser dans la procédure suivante.

    Si vous souhaitez restaurer l'accès à l'application de service à l'échelle de la batterie de serveurs au moyen de PowerShell, tapez les commandes supplémentaires suivantes depuis l'invite de commandes PowerShell. Vous utiliserez les informations récupérées dans la procédure suivante.

    $claimProvider = (Get-SPClaimProvider System).ClaimProvider 
    $principal = New-SPClaimsPrincipal -ClaimType "http://schemas.microsoft.com/sharepoint/2009/08/claims/farmid" -ClaimProvider $claimProvider -ClaimValue $farmid
    

Pour restaurer l’accès à l’échelle de la batterie locale à une application de service à l’aide de l’Administration centrale

  1. Effectuez les étapes 1 à 3 de la procédure Pour accorder et supprimer des autorisations pour des comptes de service pour l’accès à une application de service à l’aide de l’Administration centrale.

  2. Dans la boîte de dialogue Autorisations de connexion , copiez l’ID de batterie de serveurs local que vous avez récupéré dans la procédure précédente, puis cliquez sur Ajouter.

  3. Vérifiez que l'ID de la batterie de serveurs locale est sélectionné dans le volet du milieu. Activez la case à cocher Contrôle total dans le volet inférieur.

  4. Cliquez sur OK, pour restaurer l’accès à l’application de service à l’échelle de la batterie de serveurs, ou sur Annuler, pour terminer l’opération sans apporter de modifications.

Pour restaurer l'accès à une application de service à l'échelle de la batterie de serveurs locale à l'aide de Microsoft PowerShell

  1. Cette procédure démarre après l’étape 2 de la procédure Pour récupérer l’ID de batterie de serveurs local à l’aide de Windows PowerShell.

  2. Pour définir l’ID de la batterie de serveurs locale récupéré sur l’objet de sécurité de l’application de service $security, tapez les commandes suivantes :

    $spapp = Get-SPServiceApplication -Name "<ServiceApplicationDisplayName>"
    $spguid = $spapp.id
    $security = Get-SPServiceApplicationSecurity $spguid
    Grant-SPObjectSecurity -Identity $security -Principal $Principal -Rights "Full Control"
    Set-SPServiceApplicationSecurity $spguid -ObjectSecurity $security
    

    <ServiceApplicationDisplayName> est le nom complet de l’application de service.

    Importante

    Vous devez placer le nom d’affichage entre guillemets et il doit correspondre exactement au nom complet de l’application de service. Cela concerne également l’utilisation des majuscules. Si vous avez plusieurs applications de service qui ont le même nom d’affichage (nous ne recommandons pas cela), vous pouvez exécuter l’applet de commande Get-SPServiceApplication sans arguments pour afficher toutes les applications de service. Vous pouvez ensuite identifier l’application de service directement par son GUID.

Exemples de code Microsoft PowerShell

Dans l’exemple suivant, l’administrateur souhaite restreindre l’accès à l’application de service « Contoso BDC » à l’application http://contoso/hawaii web, qui est gérée par le compte de service « contoso\jane ». En ajoutant « contoso\jane » et en supprimant le compte de service de batterie de serveurs local de l’application de service, « Contoso BDC » est limité aux applications web qui sont gérées par le compte de service « contoso\jane » ; dans ce cas, http://contoso/hawaii.

$farmid = Get-SPFarm | select id
$claimProvider = (Get-SPClaimProvider System).ClaimProvider 
$farmappId = New-SPClaimsPrincipal -ClaimType "http://schemas.microsoft.com/sharepoint/2009/08/claims/farmid" -ClaimProvider $claimProvider -ClaimValue $farmid 
webapp = get-spwebapplication http://contoso
$webapp.applicationpool
$principal = New-SPClaimsPrincipal contoso/jane -IdentityType WindowsSamAccountName
$spapp = Get-SPServiceApplication -Name "Contoso BDC"
$spguid = $spapp.id
$security = Get-SPServiceApplicationSecurity $spguid
Grant-SPObjectSecurity $security $principal -Rights "Full Control"
Revoke-SPObjectSecurity $security $farmappId
Set-SPServiceApplicationSecurity $spguid -ObjectSecurity $security
(Get-SPServiceApplicationSecurity $spguid).AccessRules

Dans l’exemple suivant, l’accès à l’application de service « Contoso BDC » est restauré pour toutes les applications web dans la batterie de serveurs locale.

$farmid = Get-SPFarm | select id
$claimProvider = (Get-SPClaimProvider System).ClaimProvider 
$farmappId = New-SPClaimsPrincipal -ClaimType "http://schemas.microsoft.com/sharepoint/2009/08/claims/farmid" -ClaimProvider $claimProvider -ClaimValue $farmid 
$spapp = Get-SPServiceApplication -Name "Contoso BDC"
$spguid = $spapp.id
$security = Get-SPServiceApplicationSecurity $spguid
Grant-SPObjectSecurity -Identity $security -Principal $farmappId -Rights "Full Control"
Set-SPServiceApplicationSecurity $spguid -ObjectSecurity $security
(Get-SPServiceApplicationSecurity $spguid).AccessRules

Voir aussi

Concepts

Ajouter ou supprimer des connexions d’application de service à une application web dans SharePoint Server

Autorisations de compte et paramètres de sécurité dans SharePoint Server 2016 et SharePoint Server 2019

Autres ressources

Créer une application web dans SharePoint Server

Get-SPWebApplication

New-SPClaimsPrincipal

Get-SPServiceApplication

Get-SPServiceApplicationSecurity

Grant-SPObjectSecurity

Set-SPServiceApplicationSecurity

Get-SPFarm

Get-SPClaimProvider