> 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).

# Identidades administradas

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

SCEPman necesita interactuar con los extremos de Entra Directory e Intune para proporcionar la validación de certificados y OCSP de usuarios y dispositivos. Después de la implementación, SCEPman todavía 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 interno necesario 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 agrega dos nuevos recursos de Azure para el componente SCEPman Certificate Master.

## Obtenga y ejecute el módulo de PowerShell de instalación de SCEPman

Tanto si acaba de realizar 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 tras cambios en la arquitectura de implementación, los pasos de instalación son los mismos. Descarga y ejecuta el módulo de PowerShell de SCEPman, que detecta lo que hay que hacer y completa la instalación. Puede ejecutar el módulo de SCEPman tantas veces como quiera; solo agregará lo que aún falte.

### Requisitos previos

* Un **Administrador global** Cuenta para el Tenant en el que desea instalar SCEPman (o para 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 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 viene preinstalado en [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 principal habilitada

Una vez cumplidos 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 ir al App Service de SCEPman y hacer clic en Default domain (vea la captura de pantalla abajo). Esto le 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. Ejecute el comando de PowerShell que se muestra en la página principal de su instancia de SCEPman en su PowerShell o Azure Cloud Shell (vea la 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, es posible que aparezca «Service not available» o «502 Server Error» en la página principal de SCEPman; espere 2-3 minutos y vuelva a actualizar la página.
{% endhint %}

#### Página principal deshabilitada

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

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

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

2. Complete las indicaciones para:

* En qué suscripción de Azure se ejecuta SCEPman (si tiene acceso a más de una)
* El nombre del App Service de SCEPman (no es necesario si utilizó el código de la página principal de SCEPman)

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

* El nombre del nuevo App Service de SCEPman Certificate Master (puede confirmar la sugerencia pulsando Enter o escribiendo un nuevo nombre para el recurso)
* El nombre del nuevo recurso Storage Account (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* parámetro de Complete-SCEPmanInstallation para ejecutar el CMDlet sin permisos de Administrador global. Esto omitirá la asignación de los App Roles necesarios a las Managed Identities de los App Services de SCEPman y Certificate Master. Después, puede 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 indique 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 configuración cambia los ajustes de SCEPman para **usar** **autenticación con Managed Identity en lugar de autenticación con Enterprise App**.

SCEPman 1.x **no** admite autenticación con Managed Identity y, por lo tanto, el CMDlet deja inutilizables los deployment slots que aún ejecutan una versión 1.x. Por ello, si tiene varios deployment slots y no desea actualizarlos todos a la vez, debería actualizar el deployment slot de producción al final -- **su actualización también afecta a todos los demás deployment slots**.

Para otros deployment slots, use el `-DeploymentSlotName` parámetro para dirigirse solo a esos deployment slots individuales. Esto es lo que muestran los comandos de PowerShell en la página principal de SCEPman del deployment slot, así que puede simplemente copiar los comandos.

Una vez que todos sus deployment slots ejecuten 2.x, vuelva a ejecutar el CMDlet Complete-SCEPmanInstallation una vez más y entonces todos usarán Managed Identities.

{% hint style="danger" %}
Si por accidente actualizó un deployment slot a autenticación con Managed Identity que aún ejecuta SCEPman 1.x, consulte 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 registros de aplicaciones: `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 aplicaciones. El CMDlet requiere que sus nombres sean únicos, así que, si tiene varias instalaciones de SCEPman en un Tenant, compartirán estos registros de aplicaciones 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 certificados a cualquier SCEPman (aunque eso no ocurre a menos que configure SCEPman Certificate Master para hacerlo).

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

Para ello, el CMDlet Complete-SCEPmanInstallation incluye los dos parámetros `-AzureADAppNameForSCEPman` y `-AzureADAppNameForCertMaster`. Estos parámetros le permiten definir nombres diferentes para sus registros de aplicaciones. Por ejemplo, podría invocar el CMDlet así para su Root CA:\
`Complete-SCEPmanInstallation -SCEPmanAppServiceName app-scepmanroot -SearchAllSubscriptions -AzureAdAppNameForSCEPman SCEPman-api-root -AzureAdAppNameForCertMaster -SCEPman-CertMaster-root 6>&1`

Y luego lo invoca otra vez para su 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 ayudarle 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 comprender 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). ¡Las solicitudes de extracción son bienvenidas!

Recomendamos ejecutar el commandlet con `6>&1`, lo que redirige el flujo de información y lo imprime en 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 App Service de SCEPman. El App Service usa una identidad administrada asignada por el sistema, que ya tiene permisos de acceso al Azure Key Vault de SCEPman en una instalación normal. El CMDlet agrega permisos para acceder a Microsoft Graph y buscar usuarios y dispositivos en AAD e Intune para las solicitudes OCSP entrantes, y a Intune propiamente dicho para verificar las solicitudes SCEP entrantes.

### Cómo el CMDlet gestiona 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 de SCEPman Certificate Master
* El Storage Account compartido por SCEPman y SCEPman Certificate Master para certificados creados manualmente

Incluso para la Community Edition, que no usa el componente SCEPman Certificate Master, se agregan los dos nuevos recursos. Esto facilita cambiar a la Enterprise Edition si lo desea y no añade ningún costo extra -- el Storage Account estará vacío y Microsoft lo factura según la cantidad de almacenamiento, y el App Service de Certificate Master comparte un App Service Plan con SCEPman, lo que tampoco añade costo extra.

SCEPman 1.x usaba un App Registration para autenticarse en 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 nuevo registro de aplicación creado sin permisos. Se usa 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 se necesita, 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 ejecutarse el CMDlet, porque solo entonces los roles del token reflejan los permisos correctos agregados por el CMDlet.

### Cómo el CMDlet configura 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 no sensible. En cambio, el componente SCEPman Certificate Master permite a los usuarios emitir certificados. Por ello, solo permite acceso autenticado y únicamente si tiene 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 la URL de inicio de sesión. El módulo registra este App Registration como `SCEPman-CertMaster` en su Tenant de Azure.

Además, el App Service de 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 Managed Identity 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, puede eliminar el App Registration que se usaba en SCEPman 1.x

SCEPman V2.x usa 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
