# Multi-Tenant séparé

{% hint style="warning" %}
Édition SCEPman Enterprise uniquement
{% endhint %}

## Vue d’ensemble <a href="#overview" id="overview"></a>

SCEPman peut être configuré pour fonctionner depuis un locataire Azure distinct du locataire Azure/Intune pour lequel il émet des certificats aux utilisateurs et/ou aux appareils. Cette configuration, connue sous le nom de split-tenancy, est particulièrement **utile pour les MSP** qui souhaitent mutualiser les coûts de l’infrastructure Azure entre leurs clients tout en conservant un backend dédié et une CA unique pour chacun de ces clients.

Le split-tenancy s’accompagne d’un **inconvénient majeur**: [Identités managées](https://docs.scepman.com/fr/deploiement-scepman/permissions/post-installation-config) ne peut plus être utilisé. Cela signifie que l’authentification auprès de l’API Graph (Azure AD et Intune) est gérée à l’aide d’une inscription d’application et d’un secret client, qui doivent être gérés (par le MSP) lorsqu’ils expirent.

Dans ce qui suit, nous appelons le locataire d’hébergement **locataire d’accueil,** et le locataire client **locataire cible**. Les ressources SCEPman existeront dans le **locataire d’accueil**, et les appareils gérés dans le **locataire cible** comme dans le graphique ci-dessous :

<figure><img src="https://129332256-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Ft8uOQQC6iNXE2XeveTgY%2Fscepman-split-graphic.png?alt=media&#x26;token=edb7ed01-20e3-4a88-9927-01275e510d01" alt=""><figcaption></figcaption></figure>

## Étapes de configuration

1. Dans la **locataire d’accueil**, effectuez un déploiement standard de SCEPman/Certificate Master comme décrit dans notre [Guide de démarrage](https://docs.scepman.com/fr/deploiement-scepman/deployment-guides).

### Dans SCEPman (locataire d’accueil)

2. Accédez à SCEPman **App service** puis à « Settings » --> « Environment variables ». Repérez les paramètres suivants et **supprimez** -les :

| Variables d’environnement                                       |
| --------------------------------------------------------------- |
| `AppConfig:AuthConfig:ManagedIdentityEnabledForWebsiteHostname` |
| `AppConfig:AuthConfig:ManagedIdentityEnabledOnUnixTime`         |
| `AppConfig:AuthConfig:ManagedIdentityPermissionLevel`           |

3. **Renommez** les paramètres suivants (**ne modifiez pas leurs valeurs**):

<table><thead><tr><th width="384">Nom d’origine</th><th>Nouveau nom</th></tr></thead><tbody><tr><td><code>AppConfig:AuthConfig:ApplicationId</code></td><td><code>AppConfig:AuthConfig:HomeApplicationId</code></td></tr><tr><td><code>AppConfig:AuthConfig:TenantId</code></td><td><code>AppConfig:AuthConfig:HomeTenantId</code></td></tr></tbody></table>

4. Créez une **App registration** dans le **locataire cible** comme décrit ici : [Azure App Registration](https://docs.scepman.com/fr/deploiement-scepman/permissions/azure-app-registration). Cela **App registration** permettra à SCEPman d’accéder aux annuaires Azure AD et Intune dans le **locataire cible**.

{% hint style="warning" %}
Le **secret client** généré dans le cadre de cette **App registration** a une date d’expiration et doit être renouvelé avant son expiration. Veuillez définir un rappel pour le renouvellement.
{% endhint %}

**Créer** les nouvelles variables d’environnement suivantes si vous ne l’avez pas déjà fait lors de la création de l’inscription d’application :

<table><thead><tr><th width="395">Nom</th><th>Valeur</th></tr></thead><tbody><tr><td><code>AppConfig:AuthConfig:ApplicationId</code></td><td>GUID du <strong>App registration</strong> qui a été créé auparavant <strong>(locataire cible).</strong></td></tr><tr><td><code>AppConfig:AuthConfig:TenantId</code></td><td>ID de locataire du <strong>locataire cible</strong>.</td></tr><tr><td><code>AppConfig:AuthConfig:ApplicationKey</code></td><td><strong>Valeur</strong> de <strong>Secret client</strong> qui a été créé dans le cadre de la <strong>App registration</strong> dans le <strong>locataire cible</strong>.</td></tr></tbody></table>

5. Appliquez les modifications.
6. Redémarrez le SCEPman **App service**.

### Certificate Master

7. Accédez à Certificate Master **App service** puis à « Settings » > « Environment variables ».
8. Vous avez maintenant deux options :
   1. Si vous souhaitez que les utilisateurs de votre **locataire d’accueil** se connectent à Certificate Master et émettent des certificats, y compris les utilisateurs invités dans votre locataire d’accueil, par ex. depuis votre locataire cible.&#x20;

<figure><img src="https://129332256-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FXqlVQSz8vRMLpm9ijTb3%2Fscepman-split-graphic2.png?alt=media&#x26;token=18945a73-dc3b-416e-85da-a4f8cf267c61" alt=""><figcaption><p>Option 1 : les utilisateurs du locataire d’accueil se connectent à Certificate Master</p></figcaption></figure>

Dans ce cas, **renommez** les paramètres suivants (**ne modifiez pas leurs valeurs**):

<table><thead><tr><th width="385">Nom d’origine</th><th>Nouveau nom</th></tr></thead><tbody><tr><td><code>AppConfig:AuthConfig:TenantId</code></td><td><code>AppConfig:AuthConfig:HomeTenantId</code></td></tr><tr><td><code>AppConfig:AuthConfig:ApplicationId</code></td><td><code>AppConfig:AuthConfig:HomeApplicationId</code></td></tr></tbody></table>

b. Vous souhaitez que les utilisateurs de votre **locataire cible** se connectent à Certificate Master et émettent des certificats, y compris les utilisateurs invités dans votre locataire cible, par ex. depuis votre locataire d’accueil.&#x20;

<figure><img src="https://129332256-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FOKLaoNuGHkWV7zvScKvi%2Fscepman-split-graphic3.png?alt=media&#x26;token=ed862008-d054-4a16-8912-07d578bc582c" alt=""><figcaption><p>Option 2 : les utilisateurs du locataire cible se connectent à Certificate Master</p></figcaption></figure>

Dans ce cas, procédez comme suit :

* Ouvrez une session **PowerShell** ou **Azure Cloud Shell** dans votre **locataire cible** et exécutez les commandes suivantes :

```
Install-Module SCEPman -Scope CurrentUser -Force
Register-SCEPmanCertMaster -CertMasterBaseURL <url>
```

Remplacez `<url>` avec l’URL de votre Certificate Master

* Le **Le cmdlet** renverra un **ID d’application** et un **ID de locataire** (celui du **locataire cible**). Saisissez ces deux valeurs comme&#x20;
  * `AppConfig:AuthConfig:HomeApplicationId` et
  * `AppConfig:AuthConfig:HomeTenantId` dans les paramètres de votre Certificate Master.
* Maintenant **créez** les nouveaux paramètres d’application suivants, en remplaçant éventuellement les paramètres existants, avec les mêmes valeurs que dans SCEPman :

<table><thead><tr><th width="393">Nom</th><th>Valeur</th></tr></thead><tbody><tr><td><code>AppConfig:AuthConfig:ApplicationId</code></td><td>GUID du <strong>App registration</strong> qui a été créé auparavant.</td></tr><tr><td><code>AppConfig:AuthConfig:TenantId</code></td><td>ID de locataire du <strong>locataire cible</strong>.</td></tr><tr><td><code>AppConfig:AuthConfig:ApplicationKey</code></td><td><strong>Valeur</strong> de <strong>Secret client</strong> qui a été créé dans le cadre de la <strong>App registration</strong> avant.<br>Vous pouvez créer un nouveau secret client distinct pour Certificate Master si vous le souhaitez.</td></tr></tbody></table>

9. Enregistrez les modifications
10. Redémarrez le SCEPman Certificate Master **App service**.
11. Accordez les droits de demander des certificats via le **Certificate Master** web app, voir [ici](https://docs.scepman.com/fr/deploiement-scepman/permissions/post-installation-config#granting-the-rights-to-request-certificates-via-the-certificate-master-website)

À titre de vue d’ensemble, voici les comptes utilisés par **Certificate Master** et leur usage :

| Compte                                                                   | À quoi sert-il ?                                                                                                                                                                                                                                    | Remarques                                                                         |
| ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| Managed Identity                                                         | <ul><li>Autoriser les CSR soumis à SCEPman</li><li>Accès au Storage Account</li></ul>                                                                                                                                                               | S/O                                                                               |
| Inscription d’application avec l’ID d’application de `ApplicationId`     | Certificate Master accède à Microsoft Graph dans ce contexte pour voir quels certificats ont été inscrits via Intune                                                                                                                                | Si `ApplicationKey` n’est pas présent, Managed Identity est utilisé à la place.   |
| Inscription d’application avec l’ID d’application de `HomeApplicationId` | Les utilisateurs s’authentifient **vers** cette application. Elle doit se trouver dans le locataire où résident les utilisateurs accédant à Certificate Master (mais les utilisateurs invités d’autres locataires peuvent également être autorisés) | Si `HomeApplicationId` n’est pas présent, `ApplicationId` est utilisé à la place. |

La configuration Split-Tenancy est maintenant terminée, vous pouvez maintenant configurer vos profils SCEP en fonction de votre MDM, voir [ici](https://docs.scepman.com/advanced-configuration/split-tenancy)

## Considérations lorsqu’il existe plusieurs locataires cibles

Si vous souhaitez avoir plusieurs instances SCEPman pour émettre des certificats à différents locataires cibles, vous devrez prendre des mesures de configuration supplémentaires pour isoler ces instances les unes des autres.

Un concept possible pourrait inclure un groupe de ressources de gestion qui contient un seul App Service Plan fournissant la ressource de calcul pour tous vos App Services SCEPman. Les points suivants doivent être pris en considération lors de la mise en œuvre pour plusieurs locataires :

* Chaque instance devrait avoir son propre groupe de ressources afin de les distinguer
* Vous devriez créer des App Registrations pour chaque instance afin d’isoler les autorisations
* L’App Service Plan devrait être créé dans un groupe de ressources de gestion indépendant, car il sert plusieurs instances

Dans ce diagramme, un locataire de gestion et ses deux instances SCEPman fournissent des certificats aux locataires de Contoso et Tailwind :

{% @mermaid/diagram content="graph LR
subgraph t0\[Management Tenant]
subgraph rg0\[rg-scepman-mgmt]
asp\[asp-scepman-mgmt]
end

subgraph rg1\[rg-scepman-contoso]
app1\[app-scepman-contoso]
appreg1\[scepman-api-contoso]
end

subgraph rg2\[rg-scepman-tailwind]
app2\[app-scepman-tailwind]
appreg2\[scepman-api-tailwind]
end
end

subgraph t1\[Contoso Tenant]
i1\[Intune]
e1\[Entra ID]
end

subgraph t2\[Tailwind Tenant]
i2\[Intune]
e2\[Entra ID]
end

classDef rg stroke:#6dc3d1, fill:#d5ecf2
classDef asp stroke:#2962FF, fill:#e0e7ff
classDef app stroke:#fcd116, fill:#FFF8D8
classDef appreg stroke:#6DD185, fill:#ddffd8
classDef tenant stroke:#4d93c0, fill:#d0e2f0
classDef entra color:#ffffff, stroke:#0b58a4, fill:#0078d6
classDef intune stroke:#2ebddd, fill:#d9f4fa

class rg0,rg1,rg2 rg
class asp asp
class app1,app2 app
class appreg1,appreg2 appreg
class t0,t1,t2 tenant
class e1,e2 entra
class i1,i2 intune

asp --serves--> app1
asp --serves--> app2

app1 --> appreg1
appreg1 -- reads data--> i1
appreg1 -- reads data--> e1
i1 --requests certificates--> app1

app2 --> appreg2
appreg2 --reads data--> i2
appreg2 --reads data--> e2
i2 --requests certificates--> app2" fullWidth="true" %}

### Ajouter une nouvelle instance SCEPman à un App Service Plan existant

Lors du déploiement d’une nouvelle instance SCEPman à l’aide de la [méthode de déploiement entreprise](https://docs.scepman.com/scepman-deployment/deployment-options/enterprise-deployment) vous avez la possibilité de saisir l’ID de ressource d’un App Service Plan existant auquel cette instance doit être ajoutée.

<figure><img src="https://129332256-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FxHUNSYYW9FleCHCmxiGB%2Fimage.png?alt=media&#x26;token=dd7885b4-fe66-444a-b507-eaa0c2d0880d" alt=""><figcaption></figcaption></figure>

Cet ID de ressource se trouve dans les propriétés du plan de service d’application existant :

<figure><img src="https://129332256-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FvfeVKRZqRbm4U4BcRTCE%2Fimage.png?alt=media&#x26;token=f7304314-93f5-4c50-8ae9-b8809407adeb" alt=""><figcaption></figcaption></figure>

### Créer des App registrations spécifiques au client

Pour isoler les autorisations des applications, vous devrez ajuster la commande post-déploiement afin de spécifier des App Registrations personnalisées :

{% code overflow="wrap" %}

```powershell
Complete-SCEPmanInstallation -SCEPmanAppServiceName "app-scepman-contoso" -AzureADAppNameForSCEPman "scepman-api-contoso" -AzureADAppNameForCertMaster "certmaster-contoso" -SearchAllSubscriptions 6>&1
```

{% endcode %}

Cette commande aboutira à une instance SCEPman entièrement configurée et isolée des instances précédentes. Vous pouvez maintenant poursuivre la configuration du split tenancy pour cette instance.

La section ci-dessus concernant Certificate Master peut maintenant être appliquée en option si vous souhaitez que ce service soit accessible depuis le locataire client.
