# Identidades administradas

{% hint style="info" %}
Esta función requiere la versión **2.0** o superior.
{% endhint %}

SCEPman necesita interactuar con su directorio Entra y los endpoints de Intune para proporcionar los certificados y la validación OCSP de usuarios y dispositivos. Después del despliegue, SCEPman aún no tiene los permisos necesarios para acceder a estos servicios. El módulo de PowerShell descrito en este artículo agrega los permisos necesarios a la identidad administrada del Servicio de Aplicaciones de SCEPman y completa la instalación.

Además, el módulo de PowerShell añade el cableado de fondo requerido para el componente SCEPman Certificate Master introducido con SCEPman 2.0. En caso de que haya actualizado de SCEPman 1.x a SCEPman 2.x, el módulo de PowerShell incluso añade dos nuevos recursos de Azure para el componente SCEPman Certificate Master.

## Adquirir y ejecutar el módulo de instalación de SCEPman para PowerShell

Tanto si acaba de instalar una instalación nueva de SCEPman 2.x como si acaba de actualizar de SCEPman 1.x a SCEPman 2.x, y en algunos casos después de cambios en la arquitectura del despliegue, los pasos de instalación son los mismos. Descarga y ejecuta el módulo de PowerShell de SCEPman, que detecta lo que debe hacerse y completa la instalación. Puedes ejecutar el módulo de SCEPman tantas veces como quieras; solo añadirá lo que aún falte.

### Prerequisitos

* Un **Administrador global** Cuenta para el inquilino en el que desea instalar SCEPman (o otro rol de AAD como *Administrador de roles privilegiados* y permisos de escritura en la suscripción de Azure). Existe una opción para usar una cuenta con solo el *Administrador de aplicaciones* rol y ejecutar más tarde manualmente los comandos que requieren permisos de Administrador global.
* [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) (también conocido como *az*) instalado. Azure CLI está preinstalado en el [Azure Cloud Shell](https://docs.microsoft.com/en-us/azure/cloud-shell/overview), la forma preferida de ejecutar el módulo.

### Ejecución del CMDlet de instalación de SCEPman

#### Página de inicio habilitada

Una vez que se cumplen los requisitos previos, puede instalar el módulo de instalación de SCEPman desde PowerShell Gallery y luego ejecutar el CMDlet para completar la instalación de SCEPman y Certificate Master.

1. Primero, debe navegar al Servicio de Aplicaciones de SCEPman y hacer clic en Dominio predeterminado (ver captura de pantalla abajo). Esto le llevará a la página de inicio de SCEPman.

<figure><img src="https://4115997120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FOpFw5ty3cTxb27sfldRx%2F2024-04-17%2016_16_16.png?alt=media&#x26;token=ee0ac055-4107-494d-9990-8a610fbec7f7" alt=""><figcaption></figcaption></figure>

2. Ejecute el comando de PowerShell que se muestra en la página de inicio de su instancia de SCEPman en su PowerShell o Azure Cloud Shell (ver captura de pantalla abajo). Esto incluye un parámetro para identificar su instancia de SCEPman, de modo que el código pueda ejecutarse idealmente sin ninguna interacción del usuario.

![](https://4115997120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fgit-blob-9189fc6b1b39a7ba68b3add0dfe55427083ef43e%2F2022-04-07SCEPmanV2.0AfterNewInstallation.png?alt=media)

{% hint style="warning" %}
Después de ejecutar el CMDlet, puede obtener "Servicio no disponible" o "502 Server Error" en la página de inicio de SCEPman; espere 2-3 minutos y vuelva a actualizar la página.
{% endhint %}

#### Página de inicio deshabilitada

Si ha deshabilitado la página de inicio de SCEPman o necesita ejecutar el CMDlet de nuevo, haga lo siguiente:

1. &#x20;Pegue el código siguiente en su PowerShell o Azure Cloud Shell:

```
Install-Module SCEPman -Scope CurrentUser -Force
Complete-SCEPmanInstallation 6>&1
```

2. Rellene las indicaciones para:

* En qué suscripción de Azure se ejecuta SCEPman (si hay más de una a la que tiene acceso)
* El nombre del Servicio de Aplicaciones de SCEPman (no es obligatorio si usó el código de la página de inicio de SCEPman)

3. (Solo para actualizaciones de SCEPman), necesita dos confirmaciones extra:

* El nombre del nuevo Servicio de Aplicaciones SCEPman Certificate Master (puede confirmar la sugerencia pulsando enter o escribiendo un nuevo nombre para el recurso)
* El nombre del nuevo recurso de Cuenta de Almacenamiento (de nuevo, puede confirmar la sugerencia pulsando enter o escribiendo un nuevo nombre para el recurso)

### Ejecución del CMDlet de instalación de SCEPman sin el rol de Administrador global

Use el *-SkipAppRoleAssignments* indicador de Complete-SCEPmanInstallation para ejecutar el CMDlet sin permisos de Administrador global. Esto omitirá la asignación de los roles de aplicación requeridos a las identidades administradas de los Servicios de Aplicaciones SCEPman y Certificate Master. Luego puede asignar los roles de aplicación manualmente como Administrador global. El CMDlet imprimirá los comandos necesarios en la consola.

### Consideraciones al usar ranuras de implementación

El módulo SCEPman actualiza la configuración en todas las ranuras de implementación a menos que le indique que use solo una ranura de implementación específica con el parámetro `-DeploymentSlotName` (que no puede ser la principal, porque técnicamente no es una ranura de implementación). La actualización de la configuración cambia los ajustes de SCEPman para **usar** **autenticación de identidad administrada en lugar de autenticación de aplicación empresarial**.&#x20;

SCEPman 1.x **no** admite autenticación de identidad administrada y, por lo tanto, el CMDlet hace que las ranuras de implementación sean inutilizables si todavía ejecutan una versión 1.x. Por lo tanto, si tiene varias ranuras de implementación y no desea actualizar todas a la vez, debe actualizar la ranura de producción al final -- **su actualización también afecta a todas las demás ranuras de implementación**.&#x20;

Para otras ranuras de implementación, use el `-DeploymentSlotName` parámetro para dirigirse solo a estas ranuras de implementación individuales. Esto es lo que muestran los comandos de PowerShell en la página de inicio de SCEPman de la ranura de implementación, por lo que puede simplemente copiar los comandos.

Una vez que todas sus ranuras de implementación estén ejecutando la versión 2.x, ejecute el CMDlet Complete-SCEPmanInstallation una vez más y entonces todas usarán identidades administradas.

{% hint style="danger" %}
Si accidentalmente actualizó una ranura de implementación a autenticación de identidad administrada que aún ejecuta SCEPman 1.x, consulte la [guía de degradación](https://docs.scepman.com/es/deployment-options/enterprise-deployment#downgrade-from-2.x-to-1.x) para que vuelva a funcionar.
{% endhint %}

### Consideraciones al instalar SCEPman varias veces en un mismo inquilino

El CMDlet Complete-SCEPmanInstallation crea dos registros de aplicación: `SCEPman-api` y `SCEPman-CertMaster`. [La sección "Cómo el CMDlet configura SCEPman Certificate Master"](#how-the-cmdlet-configures-scepman-certificate-master)" explica qué hacen estos registros de aplicación. El CMDlet requiere que sus nombres sean únicos, por lo que si tiene múltiples instalaciones de SCEPman en un mismo inquilino, compartirán estos registros de aplicación por defecto. Esto significa que los usuarios tienen los mismos roles en todos los Certificate Masters y que, técnicamente, cada instancia de Certificate Master puede enviar solicitudes de certificados a cualquier SCEPman (aunque eso no sucede a menos que configure SCEPman Certificate Master para hacerlo).

Si no desea ese comportamiento, por ejemplo, porque las instalaciones de SCEPman pertenecen a diferentes partes de su organización, o una instalación de SCEPman es un entorno de preproducción, o desea una PKI multinivel con una CA raíz SCEPman y una CA emisora SCEPman, debe indicar a las instancias de SCEPman que usen otros registros de aplicación.

Para este propósito, el CMDlet Complete-SCEPmanInstallation incluye los dos parámetros `-AzureADAppNameForSCEPman` y `-AzureADAppNameForCertMaster`. Estos parámetros le permiten definir diferentes nombres para sus registros de aplicación. Por ejemplo, podría llamar al CMDlet así para su CA raíz:\
`Complete-SCEPmanInstallation -SCEPmanAppServiceName app-scepmanroot -SearchAllSubscriptions -AzureAdAppNameForSCEPman SCEPman-api-root -AzureAdAppNameForCertMaster -SCEPman-CertMaster-root 6>&1`

Y luego lo llama otra vez para su CA subordinada así:

`Complete-SCEPmanInstallation -SCEPmanAppServiceName app-scepmansub -SearchAllSubscriptions -AzureAdAppNameForSCEPman SCEPman-api-sub -AzureAdAppNameForCertMaster -SCEPman-CertMaster-sub 6>&1`

## Detalles de fondo del módulo de PowerShell de SCEPman

Esta sección describe el funcionamiento interno del módulo de PowerShell. Esto puede ayudar si tiene una configuración especial que requiere modificar el script, si necesita conceder algún permiso especial, si está solucionando problemas con una instalación de SCEPman o si desea entender el funcionamiento interno para escribir un script de instalación para su propio proyecto. Tenga en cuenta que el módulo de PowerShell es software de código abierto. Puede revisar el código fuente en su [repositorio de GitHub](https://github.com/scepman/scepman-psmodule). ¡Se aceptan pull requests!

Recomendamos ejecutar el cmdlet con `6>&1`, que redirige el flujo de información y lo imprime en la pantalla, lo que proporciona más información sobre el estado del programa que si omite la redirección. Si añade `-Verbose`, habrá aún más información sobre lo que hace el script.

### Cómo el CMDlet configura SCEPman

El CMDlet de PowerShell busca el Servicio de Aplicaciones de SCEPman. El Servicio de Aplicaciones utiliza una identidad administrada asignada por el sistema, que ya tiene derechos de acceso al Azure Key Vault de SCEPman en una instalación normal. El CMDlet añade permisos para acceder a Microsoft Graph para buscar usuarios y dispositivos en AAD y Intune para las solicitudes OCSP entrantes y a Intune en sí para verificar las solicitudes SCEP entrantes.

### Cómo el CMDlet maneja las actualizaciones desde SCEPman 1.x

Además de otorgar los derechos a SCEPman, el módulo añade dos nuevos recursos de Azure al realizar una actualización:

* El Servicio de Aplicaciones SCEPman Certificate Master
* La cuenta de almacenamiento compartida por SCEPman y SCEPman Certificate Master para certificados creados manualmente

Incluso para la edición Community, que no usa el componente SCEPman Certificate Master, se añaden los dos nuevos recursos. Esto permite cambiar más fácilmente a la edición Enterprise si lo desea, y no añade ningún coste adicional: la cuenta de almacenamiento estará vacía y Microsoft factura por la cantidad de almacenamiento, y el Servicio de Aplicaciones Certificate Master comparte un plan de App Service con SCEPman, lo que tampoco añade coste adicional.

SCEPman 1.x utilizaba un registro de aplicación para autenticarse contra Microsoft Graph e Intune, mientras que SCEPman 2.x puede usar su identidad administrada. El CMDlet cambia a la identidad administrada modificando estos ajustes:

* [AppConfig:AuthConfig:ApplicationId](https://docs.scepman.com/es/configuracion-de-scepman/application-settings/dependencies-azure-services/azure-ad#appconfigauthconfigapplicationid) se establece en un registro de aplicación recién creado sin permisos. Se utiliza para autenticar *contra* SCEPman, no para que SCEPman se autentique en otro lugar. El valor antiguo se respalda como `Copia de seguridad:AppConfig:AuthConfig:ApplicationId`.
* [AppConfig:AuthConfig:ApplicationKey](https://docs.scepman.com/es/configuracion-de-scepman/application-settings/dependencies-azure-services/azure-ad#appconfigauthconfigapplicationkey) se elimina, el valor antiguo se respalda como `Copia de seguridad:AppConfig:AuthConfig:ApplicationKey`. Ya no es necesario, porque SCEPman no se autentica como la Aplicación.
* [AppConfig:AuthConfig:ManagedIdentityEnabledOnUnixTime](https://docs.scepman.com/es/configuracion-de-scepman/application-settings/dependencies-azure-services/azure-ad#appconfigauthconfigmanagedidentityenabledonunixtime) contiene la hora en que se ejecutó el CMDlet. SCEPman adquiere un token usando la identidad administrada solo después de un breve retraso tras la ejecución del CMDlet, porque solo entonces los roles en el token reflejan los permisos correctos añadidos por el CMDlet.

### Cómo el CMDlet configura SCEPman Certificate Master

El Servicio de Aplicaciones de SCEPman permite acceso anónimo a su página de inicio, ya que solo muestra información no sensible y de solo lectura. En contraste, el componente SCEPman Certificate Master permite a los usuarios emitir certificados. Por lo tanto, permite solo acceso autenticado y solo si tiene los permisos adecuados. Esto requiere un registro de aplicación de Azure con permisos delegados para ver quién ha iniciado sesión y con la configuración correcta de la URL de inicio de sesión. El módulo registra este registro de aplicación como `SCEPman-CertMaster` en su inquilino de Azure.

Además, el Servicio de Aplicaciones SCEPman Certificate Master necesita permiso para enviar Solicitudes de Firma de Certificado (CSR) al Servicio de Aplicaciones SCEPman central para emitir certificados. El mecanismo de autenticación detrás de esto se basa en otro registro de aplicación: `SCEPman-api`. SCEPman utiliza *SCEPman-api* para gestionar los permisos de envío de CSR. El script registra SCEPman-api y añade el permiso de envío a la identidad administrada de SCEPman Certificate Master.

{% hint style="info" %}
En caso de actualizar SCEPman de 1.x a 2.x y tras ejecutar correctamente el script de PS, puede eliminar el registro de aplicación que se utilizó en SCEPman 1.x

SCEPman V2.x utiliza dos nuevos registros de aplicación: "SCEPman-api" y "SCEPman-CertMaster"
{% endhint %}
