# Tenencia dividida

{% hint style="warning" %}
solo en SCEPman Enterprise Edition
{% endhint %}

## Descripción general <a href="#overview" id="overview"></a>

SCEPman puede configurarse para funcionar desde un tenant de Azure separado del tenant de Azure/Intune para el que emite certificados a usuarios y/o dispositivos. Esta configuración, conocida como tenencia dividida, es especialmente **útil para los MSP** que deseen consolidar los costes de infraestructura de Azure entre sus clientes manteniendo un backend dedicado y una CA única para cada uno de esos clientes.

La tenencia dividida conlleva una **gran desventaja**: [Identidades administradas](https://docs.scepman.com/es/implementacion-de-scepman/permissions/post-installation-config) ya no se puede usar. Esto significa que la autenticación frente a la API de Graph (Azure AD e Intune) se gestiona mediante un registro de aplicación y un secreto de cliente, que debe ser administrado (por el MSP) a medida que expira.

En lo siguiente, nos referimos al tenant de alojamiento como **tenant de origen,** mientras que al tenant del cliente como **tenant de destino**. Los recursos de SCEPman existirán en el **tenant de origen**, y los dispositivos administrados en el **tenant de destino** como en el gráfico siguiente:

<figure><img src="https://4115997120-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>

## Pasos de configuración

1. En la **tenant de origen**, realice una implementación estándar de SCEPman/Certificate Master como se describe en nuestra [Guía de inicio](https://docs.scepman.com/es/implementacion-de-scepman/deployment-guides).

### En SCEPman (Tenant de Origen)

2. Navegue hasta el **servicio de aplicaciones** de SCEPman y luego a "Settings" --> "Environment variables". Localice los siguientes parámetros y **elimínelos** :

| Variables de entorno                                            |
| --------------------------------------------------------------- |
| `AppConfig:AuthConfig:ManagedIdentityEnabledForWebsiteHostname` |
| `AppConfig:AuthConfig:ManagedIdentityEnabledOnUnixTime`         |
| `AppConfig:AuthConfig:ManagedIdentityPermissionLevel`           |

3. **Renombre** las siguientes configuraciones (**no cambie sus valores**):

<table><thead><tr><th width="384">Nombre original</th><th>Nuevo nombre</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. Cree un **registro de aplicación** dominio personalizado **tenant de destino** como se describe aquí: [Registro de aplicación de Azure](https://docs.scepman.com/es/implementacion-de-scepman/permissions/azure-app-registration). Esto **registro de aplicación** permitirá a SCEPman acceder a los directorios de Azure AD e Intune en el **tenant de destino**.

{% hint style="warning" %}
El **secreto de cliente** generado como parte de este **registro de aplicación** tiene una fecha de caducidad y debe renovarse antes de que expire. Por favor, establezca un recordatorio para la renovación.
{% endhint %}

**Crear** las siguientes nuevas variables de entorno si aún no lo ha hecho durante la creación del registro de la aplicación:

<table><thead><tr><th width="395">Nombre</th><th>Valor</th></tr></thead><tbody><tr><td><code>AppConfig:AuthConfig:ApplicationId</code></td><td>GUID del <strong>registro de aplicación</strong> que se creó antes <strong>(tenant de destino).</strong></td></tr><tr><td><code>AppConfig:AuthConfig:TenantId</code></td><td>ID de tenant del <strong>tenant de destino</strong>.</td></tr><tr><td><code>AppConfig:AuthConfig:ApplicationKey</code></td><td><strong>Valor</strong> de la <strong>Secreto de cliente</strong> que se creó como parte del <strong>registro de aplicación</strong> dominio personalizado <strong>tenant de destino</strong>.</td></tr></tbody></table>

5. Aplique los cambios.
6. Reinicie el **servicio de aplicaciones**.

### Certificate Master

7. Navegue hasta Certificate Master **servicio de aplicaciones** y luego a "Settings" > "Environment variables".
8. Ahora tiene dos opciones:
   1. Si desea que los usuarios de su **tenant de origen** inicien sesión en Certificate Master y emitan certificados, lo que incluye a los usuarios invitados en su tenant de origen, por ejemplo, desde su tenant de destino.&#x20;

<figure><img src="https://4115997120-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>Opción 1: Los usuarios del tenant de origen inician sesión en Certificate Master</p></figcaption></figure>

Si ese es el caso, **renombre** las siguientes configuraciones (**no cambie sus valores**):

<table><thead><tr><th width="385">Nombre original</th><th>Nuevo nombre</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. Desea que los usuarios de su **tenant de destino** inicien sesión en Certificate Master y emitan certificados, lo que incluye a los usuarios invitados en su tenant de destino, por ejemplo, desde su tenant de origen.&#x20;

<figure><img src="https://4115997120-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>Opción 2: Los usuarios del tenant de destino inician sesión en Certificate Master</p></figcaption></figure>

Si ese es el caso, haga lo siguiente:

* Abre una sesión de **PowerShell** o **Azure Cloud Shell** en su **tenant de destino** y ejecute los siguientes comandos:

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

Reemplace `<url>` con la URL de su Certificate Master

* El **CMDlet** mostrará un **Id. de aplicación** y un **Id. de tenant** (el del **tenant de destino**). Introduzca estos dos valores como&#x20;
  * `AppConfig:AuthConfig:HomeApplicationId` y
  * `AppConfig:AuthConfig:HomeTenantId` en la configuración de su Certificate Master.
* Ahora **cree** las siguientes nuevas configuraciones de aplicación, posiblemente sobrescribiendo las existentes, con los mismos valores que en SCEPman:

<table><thead><tr><th width="393">Nombre</th><th>Valor</th></tr></thead><tbody><tr><td><code>AppConfig:AuthConfig:ApplicationId</code></td><td>GUID del <strong>registro de aplicación</strong> que se creó antes.</td></tr><tr><td><code>AppConfig:AuthConfig:TenantId</code></td><td>ID de tenant del <strong>tenant de destino</strong>.</td></tr><tr><td><code>AppConfig:AuthConfig:ApplicationKey</code></td><td><strong>Valor</strong> de la <strong>Secreto de cliente</strong> que se creó como parte del <strong>registro de aplicación</strong> antes.<br>Puede crear un nuevo secreto de cliente independiente para Certificate Master si lo desea.</td></tr></tbody></table>

9. Guarde los cambios
10. Reinicie el SCEPman Certificate Master **servicio de aplicaciones**.
11. Otorgue los permisos para solicitar certificados a través de la **Certificate Master** aplicación web, vea [aquí](https://docs.scepman.com/es/implementacion-de-scepman/permissions/post-installation-config#granting-the-rights-to-request-certificates-via-the-certificate-master-website)

Como resumen, aquí están las cuentas utilizadas por **Certificate Master** y para qué se utilizan:

| Cuenta                                                   | ¿Para qué se utiliza?                                                                                                                                                                                               | Notas                                                                                   |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| Identidad administrada                                   | <ul><li>Autorizar los CSR enviados a SCEPman</li><li>Acceso a la cuenta de almacenamiento</li></ul>                                                                                                                 | N/D                                                                                     |
| Registro de aplicación con App ID de `ApplicationId`     | Certificate Master accede a Microsoft Graph en este contexto para ver qué certificados se han inscrito a través de Intune                                                                                           | Si `ApplicationKey` no está presente, se utiliza en su lugar la identidad administrada. |
| Registro de aplicación con App ID de `HomeApplicationId` | Los usuarios se autentican **a** esta aplicación. Debe estar en el tenant donde residen los usuarios que acceden a Certificate Master (pero los usuarios invitados de otros tenants también pueden ser autorizados) | Si `HomeApplicationId` no está presente, `ApplicationId` se utiliza en su lugar.        |

Ahora que la configuración de tenencia dividida ha finalizado, puede continuar y configurar sus perfiles SCEP según su MDM; vea [aquí](https://docs.scepman.com/advanced-configuration/split-tenancy)

## Consideraciones al tener varios tenants de destino

Si desea tener varias instancias de SCEPman para emitir certificados a diferentes tenants de destino, deberá tomar medidas de configuración adicionales para aislar estas instancias entre sí.

Un posible concepto podría incluir un grupo de recursos de administración que contenga un único App Service Plan que proporcionará el recurso de cómputo para todos sus SCEPman App Services. Los siguientes puntos deben tenerse en cuenta al hacer esto para varios tenants:

* Cada instancia debe tener su propio grupo de recursos para distinguirlas
* Debe crear registros de aplicación para cada instancia para aislar los permisos
* El App Service Plan debe crearse en un grupo de recursos de administración independiente, ya que presta servicio a varias instancias

En este diagrama, un tenant de administración y sus dos instancias de SCEPman proporcionan certificados a los tenants de Contoso y 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" %}

### Agregar una nueva instancia de SCEPman a un App Service Plan existente

Mientras despliega una nueva instancia de SCEPman usando el [método de implementación empresarial](https://docs.scepman.com/scepman-deployment/deployment-options/enterprise-deployment) se le ofrece la posibilidad de introducir el id. de recurso de un App Service Plan existente al que esta instancia debe añadirse.

<figure><img src="https://4115997120-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>

Este id. de recurso se puede encontrar en las propiedades del App Service Plan existente:

<figure><img src="https://4115997120-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>

### Crear registros de aplicación específicos del cliente

Para aislar los permisos de las aplicaciones, deberá ajustar el comando posterior a la implementación para especificar registros de aplicación personalizados:

{% code overflow="wrap" %}

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

{% endcode %}

Este comando dará como resultado una instancia de SCEPman totalmente configurada que está aislada de las instancias anteriores. Ahora puede continuar configurando la tenencia dividida para esta instancia.

La sección anterior relativa a Certificate Master ahora puede aplicarse opcionalmente si desea que este servicio sea accesible desde el tenant del cliente.
