# Tenancy dividido

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

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

SCEPman se puede configurar para funcionar desde un inquilino de Azure distinto al inquilino de Azure/Intune para el cual emite certificados a usuarios y/o dispositivos. Esta configuración, conocida como tenencia dividida, es especialmente **útil para MSPs** que desean consolidar los costos de infraestructura de Azure entre sus clientes mientras mantienen un backend dedicado y una CA única para cada uno de esos clientes.

La tenencia dividida conlleva una **desventaja importante**: [Identidades administradas](https://docs.scepman.com/es/despliegue-de-scepman/permissions/post-installation-config) ya no puede utilizarse. Esto significa que la autenticación contra la Graph API (Azure AD e Intune) se gestiona utilizando un registro de aplicación y un secreto de cliente, que debe ser gestionado (por el MSP) cuando caduque.

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

<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 **inquilino 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/despliegue-de-scepman/deployment-guides).

### En SCEPman (Inquilino de origen)

2. Navegue al **servicio de aplicaciones** y luego a "Configuración" --> "Variables de entorno". Localice los siguientes parámetros y **elimínelos** los siguientes:

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

3. **Cambie el nombre de** 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** en el **inquilino de destino** como se describe aquí: [Registro de aplicación de Azure](https://docs.scepman.com/es/despliegue-de-scepman/permissions/azure-app-registration). Esto **registro de aplicación** permitirá que SCEPman acceda a los directorios de Azure AD e Intune en el **inquilino de destino**.

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

**Crear** las siguientes nuevas variables de entorno si no lo ha hecho ya 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 fue creado anteriormente <strong>(inquilino de destino).</strong></td></tr><tr><td><code>AppConfig:AuthConfig:TenantId</code></td><td>ID de inquilino del <strong>inquilino 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 fue creado como parte del <strong>registro de aplicación</strong> en el <strong>inquilino de destino</strong>.</td></tr></tbody></table>

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

### Administrador de certificados

7. Navegue al Certificate Master **servicio de aplicaciones** y luego a "Configuración" > "Variables de entorno".
8. Ahora tiene dos opciones:
   1. Si desea que usuarios de su **inquilino de origen** inicien sesión en Certificate Master y emitan certificados, lo que incluye usuarios invitados en su inquilino de origen, p. ej. desde su inquilino 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 inquilino de origen inician sesión en Certificate Master</p></figcaption></figure>

Si ese es el caso, **cambie el nombre de** 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 usuarios de su **inquilino de destino** inicien sesión en Certificate Master y emitan certificados, lo que incluye usuarios invitados en su inquilino de destino, p. ej. desde su inquilino 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: Usuarios del inquilino de destino inician sesión en Certificate Master</p></figcaption></figure>

Si ese es el caso, haga lo siguiente:

* Abra una **PowerShell** o **Azure Cloud Shell** en su **inquilino 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 inquilino** (el del **inquilino 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 fue creado anteriormente.</td></tr><tr><td><code>AppConfig:AuthConfig:TenantId</code></td><td>ID de inquilino del <strong>inquilino 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 fue creado como parte del <strong>registro de aplicación</strong> antes.<br>Puede crear un secreto de cliente separado nuevo para Certificate Master si lo desea.</td></tr></tbody></table>

9. Guarde los cambios
10. Reinicie el SCEPman Certificate Master **servicio de aplicaciones**.
11. Conceda los derechos para solicitar certificados a través de la **Administrador de certificados** aplicación web, vea [aquí](https://docs.scepman.com/es/despliegue-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 **Administrador de certificados** y para qué se utilizan:

| Cuenta                                                   | ¿Para qué se utiliza?                                                                                                                                                                                              | Notas                                                                                   |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------- |
| Identidad administrada                                   | <ul><li>Autorizar CSR enviados a SCEPman</li><li>Acceso a la cuenta de almacenamiento</li></ul>                                                                                                                    | N/A                                                                                     |
| 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 la Identidad administrada en su lugar. |
| Registro de aplicación con App ID de `HomeApplicationId` | Los usuarios se autentican **a** esta aplicación. Debe estar en el inquilino donde residen los usuarios que acceden a Certificate Master (pero también se pueden autorizar usuarios invitados de otros inquilinos) | 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 múltiples inquilinos de destino

Si desea tener múltiples instancias de SCEPman para emitir certificados a diferentes inquilinos de destino, querrá tomar pasos 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 Plan de Servicio de Aplicaciones que proporcionará el recurso informático para todos sus Servicios de Aplicaciones SCEPman. Los siguientes puntos deben tomarse en consideración al hacer esto para múltiples inquilinos:

* 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 Plan de Servicio de Aplicaciones debe crearse en un grupo de recursos de gestión independiente ya que sirve a múltiples instancias

En este diagrama, un inquilino de gestión y sus dos instancias de SCEPman proporcionan certificados a los inquilinos 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 Plan de Servicio de Aplicaciones existente

Al desplegar una nueva instancia de SCEPman usando el [método de despliegue empresarial](https://docs.scepman.com/scepman-deployment/deployment-options/enterprise-deployment) se le ofrece la posibilidad de introducir el id de recurso de un Plan de Servicio de Aplicaciones existente al que se debe agregar esta instancia.

<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 plan de servicio de aplicaciones 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 necesitará ajustar el comando posterior al despliegue 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 resultará en una instancia de SCEPman completamente configurada que está aislada de las instancias anteriores. Ahora puede proceder a configurar la tenencia dividida para esta instancia.

La sección anterior relativa al Certificate Master ahora se puede aplicar opcionalmente si desea que este servicio sea accesible desde el inquilino del cliente.
