> For the complete documentation index, see [llms.txt](https://docs.scepman.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.scepman.com/es/despliegue-de-scepman/permissions/post-installation-config.md).

# Las identidades administradas

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

SCEPman necesita interactuar con tus endpoints de Entra Directory e Intune para proporcionar la validación del certificado y OCSP de usuarios y dispositivos. Después de la implementación, 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 App Service de SCEPman y completa la instalación.

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

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

Tanto si acabas de realizar una instalación nueva de SCEPman 2.x como si acabas de actualizar de SCEPman 1.x a SCEPman 2.x, y en algunos casos después de cambios en la arquitectura de implementación, los pasos de instalación son los mismos. Descargas y ejecutas el módulo de PowerShell de SCEPman, que detecta lo que hay que hacer y completa la instalación. Puedes ejecutar el módulo de SCEPman tantas veces como quieras; solo añadirá lo que aún falte.

### Requisitos previos

* A **Administrador global** Cuenta del Tenant en el que quieres instalar SCEPman (o otro rol de AAD como *Administrador de roles con privilegios* y permisos de escritura en la suscripción de Azure). Existe la opción de usar una cuenta con solo el *Administrador de aplicaciones* rol y ejecutar posteriormente 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 viene preinstalado en [Azure Cloud Shell](https://docs.microsoft.com/en-us/azure/cloud-shell/overview), la forma preferida de ejecutar el módulo.

### Ejecutando el CMDlet de instalación de SCEPman

#### Página principal habilitada

Una vez cumplidos los prerrequisitos, puedes 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, debes navegar al App Service de SCEPman y hacer clic en dominio predeterminado (consulta la captura de pantalla a continuación). Esto te llevará a la página principal 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&amp;token=ee0ac055-4107-494d-9990-8a610fbec7f7" alt=""><figcaption></figcaption></figure>

2. Ejecuta el comando de PowerShell que se muestra en la página principal de tu instancia de SCEPman en tu PowerShell o Azure Cloud Shell (consulta la captura de pantalla a continuación). Esto incluye un parámetro para identificar tu 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, es posible que aparezca "Service not available" o "502 Server Error" en la página principal de SCEPman; espera 2-3 minutos y vuelve a actualizar la página.
{% endhint %}

#### Página principal deshabilitada

Si has deshabilitado la página principal de SCEPman o necesitas ejecutar el CMDlet de nuevo, haz lo siguiente:

1. Pega el siguiente código en tu PowerShell o Azure Cloud Shell:

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

2. Rellena los valores solicitados para:

* Qué suscripción de Azure usa SCEPman (si hay más de una a la que tienes acceso)
* El nombre del App Service de SCEPman (no es necesario si usaste el código de la página principal de SCEPman)

3. (Solo para actualizaciones de SCEPman), necesitas dos confirmaciones adicionales:

* El nombre del nuevo App Service de SCEPman Certificate Master (puedes confirmar la sugerencia pulsando Enter o escribiendo un nuevo nombre para el recurso)
* El nombre del nuevo recurso Storage Account (de nuevo, puedes confirmar la sugerencia pulsando Enter o escribiendo un nuevo nombre para el recurso)

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

Usa el *-SkipAppRoleAssignments* indicador de Complete-SCEPmanInstallation para ejecutar el CMDlet sin permisos de Administrador global. Esto omitirá la asignación de los App Roles necesarios a las identidades administradas de los App Services de SCEPman y Certificate Master. Luego podrás asignar los App Roles manualmente como Administrador global. El CMDlet imprimirá los comandos necesarios en la consola.

### Consideraciones al usar Deployment Slots

El módulo de SCEPman actualiza la configuración en todos los Deployment Slots, a menos que le indiques que use solo un Deployment Slot específico con el parámetro `-DeploymentSlotName` (que no puede ser el principal, porque técnicamente no es un Deployment Slot). La actualización de la configuración cambia los ajustes de SCEPman a **usar** **autenticación con Identidad administrada en lugar de autenticación de Enterprise App**.

SCEPman 1.x **no** admite la autenticación con Identidad administrada y, por lo tanto, el CMDlet deja inutilizables los Deployment Slots que aún ejecutan una versión 1.x. Por tanto, si tienes varios Deployment Slots y no quieres actualizarlos todos a la vez, deberías actualizar el slot de producción al final -- **su actualización también afecta a todos los demás Deployment Slots**.

Para otros Deployment Slots, usa el `-DeploymentSlotName` parámetro para dirigirte solo a esos Deployment Slots individuales. Eso es lo que muestran los comandos de PowerShell que aparecen en la página principal de SCEPman del Deployment Slot, así que puedes simplemente copiar los comandos.

Una vez que todos tus Deployment Slots estén ejecutándose en 2.x, ejecuta de nuevo el CMDlet Complete-SCEPmanInstallation una vez más y entonces todos usarán Identidades administradas.

{% hint style="danger" %}
Si por accidente actualizaste un Deployment Slot a autenticación con Identidad administrada y todavía ejecuta SCEPman 1.x, consulta la [guía de degradación](https://docs.scepman.com/es/despliegue-de-scepman/permissions/pages/8e12aef145dd1be8214afb1bed3f0408c3be9035#downgrade-from-2.x-to-1.x) para que vuelva a funcionar.
{% endhint %}

### Consideraciones al instalar SCEPman varias veces en un Tenant

El CMDlet Complete-SCEPmanInstallation crea dos App Registrations: `SCEPman-api` y `SCEPman-CertMaster`. [La sección "Cómo configura el CMDlet SCEPman Certificate Master](#how-the-cmdlet-configures-scepman-certificate-master)" explica qué hacen estas App Registrations. El CMDlet requiere que sus nombres sean únicos, así que si tienes varias instalaciones de SCEPman en un Tenant, compartirán estas App Registrations de forma predeterminada. 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 certificado a cualquier SCEPman (aunque eso no ocurre a menos que configures SCEPman Certificate Master para hacerlo).

Si no quieres ese comportamiento, por ejemplo, porque las instalaciones de SCEPman pertenecen a distintas partes de tu organización, o una instalación de SCEPman es un entorno de preproducción, o quieres una PKI multinivel con una SCEPman Root CA y una SCEPman Issuing CA, necesitas indicar a las instancias de SCEPman que usen otras app registrations.

Para ello, el CMDlet Complete-SCEPmanInstallation incluye los dos parámetros `-AzureADAppNameForSCEPman` y `-AzureADAppNameForCertMaster`. Estos parámetros te permiten definir nombres distintos para tus App Registrations. Por ejemplo, podrías llamar al CMDlet así para tu Root CA:\
`Complete-SCEPmanInstallation -SCEPmanAppServiceName app-scepmanroot -SearchAllSubscriptions -AzureAdAppNameForSCEPman SCEPman-api-root -AzureAdAppNameForCertMaster -SCEPman-CertMaster-root 6>&1`

Y luego lo llamas otra vez para tu Subordinate CA 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 tienes una configuración especial que requiere modificar el script, si necesitas conceder algún permiso especial, si estás solucionando problemas con una instalación de SCEPman o si quieres comprender el funcionamiento interno para escribir un script de instalación para tu propio proyecto. Ten en cuenta que el módulo de PowerShell es software de código abierto. Puedes revisar el código fuente en su [repositorio de GitHub](https://github.com/scepman/scepman-psmodule). ¡Se aceptan Pull Requests!

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

### Cómo configura el CMDlet SCEPman

El CMDlet de PowerShell busca el App Service de SCEPman. El App Service usa una Identidad administrada asignada por el sistema, que ya tiene permisos de acceso al Key Vault de Azure de SCEPman en una instalación normal. El CMDlet agrega permisos para acceder a Microsoft Graph para buscar usuarios y dispositivos en AAD e Intune para solicitudes OCSP entrantes y a Intune para verificar las solicitudes SCEP entrantes.

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

Además de conceder los permisos a SCEPman, el módulo agrega dos nuevos recursos de Azure al realizar una actualización:

* El App Service SCEPman Certificate Master
* El Storage Account compartido por SCEPman y SCEPman Certificate Master para certificados creados manualmente

Incluso en la edición Community, que no utiliza el componente SCEPman Certificate Master, se agregan los dos nuevos recursos. Esto facilita cambiar a la edición Enterprise si quieres, y no añade ningún coste adicional: el Storage Account estará vacío y Microsoft factura esto según la cantidad de almacenamiento, y el App Service de SCEPman Certificate Master comparte un App Service Plan con SCEPman, lo que tampoco añade coste adicional.

SCEPman 1.x utilizaba un App Registration 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](/es/configuracion-de-scepman/application-settings/dependencies-azure-services/azure-ad.md#appconfigauthconfigapplicationid) se establece en un App Registration recién creado sin permisos. Se utiliza para autenticarse *contra* SCEPman, no para que SCEPman se autentique en otro lugar. El valor antiguo se guarda como `Backup:AppConfig:AuthConfig:ApplicationId`.
* [AppConfig:AuthConfig:ApplicationKey](/es/configuracion-de-scepman/application-settings/dependencies-azure-services/azure-ad.md#appconfigauthconfigapplicationkey) se elimina, el valor antiguo se guarda como `Backup:AppConfig:AuthConfig:ApplicationKey`. Ya no es necesario, porque SCEPman no se autentica como la aplicación.
* [AppConfig:AuthConfig:ManagedIdentityEnabledOnUnixTime](/es/configuracion-de-scepman/application-settings/dependencies-azure-services/azure-ad.md#appconfigauthconfigmanagedidentityenabledonunixtime) contiene la hora en que se ejecutó el CMDlet. SCEPman obtiene un token usando la Identidad administrada solo después de un breve retraso tras ejecutar el CMDlet, porque solo entonces los roles del token reflejan los permisos correctos añadidos por el CMDlet.

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

El App Service de SCEPman permite el acceso anónimo a su página principal, ya que solo muestra información de solo lectura que no es sensible. En cambio, el componente SCEPman Certificate Master permite a los usuarios emitir certificados. Por tanto, solo permite acceso autenticado y solo si tienes los permisos correctos. Esto requiere un App Registration de Azure con permisos delegados para ver quién ha iniciado sesión y con la configuración correcta de URL de inicio de sesión. El módulo registra este App Registration como `SCEPman-CertMaster` en tu Tenant de Azure.

Además, el App Service SCEPman Certificate Master necesita permiso para enviar solicitudes de firma de certificados (CSR) al App Service principal de SCEPman para emitir certificados. El mecanismo de autenticación detrás de esto se basa en otro App Registration: `SCEPman-api`. SCEPman usa *SCEPman-api* para administrar los permisos de envío de CSR. El script registra SCEPman-api y agrega 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 después de ejecutar correctamente el script de PowerShell, puedes eliminar el App Registration que se usó en SCEPman 1.x

SCEPman V2.x utiliza dos nuevos App Registrations: "SCEPman-api" y "SCEPman-CertMaster"
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.scepman.com/es/despliegue-de-scepman/permissions/post-installation-config.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
