> 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/pt/implementacao-do-scepman/permissions/post-installation-config.md).

# Identidades Geridas

{% hint style="info" %}
Este recurso requer a versão **2.0** ou superior.
{% endhint %}

O SCEPman precisa de interagir com os endpoints do seu Entra Directory e do Intune para fornecer a validação de certificados e OCSP de utilizadores e dispositivos. Após a implementação, o SCEPman ainda não tem as permissões necessárias para aceder a estes serviços. O módulo PowerShell descrito neste artigo adiciona as permissões necessárias à Managed Identity do App Service do SCEPman e conclui a instalação.

Além disso, o módulo PowerShell adiciona a configuração de backend necessária para o componente SCEPman Certificate Master introduzido com o SCEPman 2.0. Caso tenha atualizado do SCEPman 1.x para o SCEPman 2.x, o módulo PowerShell até adiciona dois novos recursos Azure para o componente SCEPman Certificate Master.

## Obter e executar o módulo PowerShell de instalação do SCEPman

Quer tenha acabado de instalar uma instalação nova do SCEPman 2.x ou tenha acabado de atualizar do SCEPman 1.x para o SCEPman 2.x, e em alguns casos após alterações na arquitetura de implementação, os passos de instalação são os mesmos. Faz download e executa o módulo PowerShell do SCEPman, que deteta o que precisa de ser feito e conclui a instalação. Pode executar o módulo SCEPman tantas vezes quantas quiser; ele só adicionará o que ainda estiver em falta.

### Pré-requisitos

* Um **Administrador Global** Conta para o Tenant no qual pretende instalar o SCEPman (ou outra função AAD como *Administrador de Funções Privilegiadas* e permissões de escrita na subscrição Azure). Existe a opção de usar uma conta com apenas a função *Administrador de Aplicações* e executar os comandos que requerem permissões de Administrador Global mais tarde manualmente.
* [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) (também conhecido como *az*) instalado. O Azure CLI vem pré-instalado no [Azure Cloud Shell](https://docs.microsoft.com/en-us/azure/cloud-shell/overview), a forma preferida de executar o módulo.

### Execução do CMDlet de Instalação do SCEPman

#### Homepage ativada

Assim que os pré-requisitos forem cumpridos, pode instalar o módulo de instalação do SCEPman a partir da Galeria do PowerShell e depois executar o CMDlet para concluir a instalação do SCEPman e do Certificate Master.

1. Primeiro, precisa de navegar até ao App Service do SCEPman e clicar em Default domain (ver captura de ecrã abaixo). Isto irá levá-lo para a homepage do SCEPman.

<figure><img src="https://3802289327-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. Execute o comando PowerShell apresentado na homepage da sua instância SCEPman no seu PowerShell ou Azure Cloud Shell (ver captura de ecrã abaixo). Isto inclui um parâmetro para identificar a sua instância SCEPman, para que o código possa ser executado idealmente sem qualquer interação do utilizador.

![](https://3802289327-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" %}
Depois de executar o CMDlet, poderá receber "Service not available" ou "502 Server Error" na homepage do SCEPman; aguarde 2-3 minutos e atualize a página novamente.
{% endhint %}

#### Homepage desativada

Se desativou a Homepage do SCEPman ou precisa de executar novamente o CMDlet, faça o seguinte:

1. Cole o código abaixo no seu PowerShell ou Azure Cloud Shell:

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

2. Preencha os pedidos para:

* Em qual Subscrição Azure o SCEPman é executado (se houver mais do que uma à qual tenha acesso)
* O nome do App Service do SCEPman (não é necessário se utilizou o código da Homepage do SCEPman)

3. (Apenas para atualizações do SCEPman), precisa de duas confirmações adicionais:

* O nome do novo App Service SCEPman Certificate Master (pode confirmar a sugestão premindo Enter ou escrevendo um novo nome para o recurso)
* O nome do novo recurso Storage Account (novamente, pode confirmar a sugestão premindo Enter ou escrevendo um novo nome para o recurso)

### Execução do CMDlet de Instalação do SCEPman sem a função de Administrador Global

Use o *-SkipAppRoleAssignments* sinal de Complete-SCEPmanInstallation para executar o CMDlet sem permissões de Administrador Global. Isto saltará a atribuição das App Roles necessárias às Managed Identities dos App Services do SCEPman e do Certificate Master. Pode então atribuir as App Roles manualmente como Administrador Global. O CMDlet imprimirá os comandos necessários para a consola.

### Considerações ao usar Deployment Slots

O módulo SCEPman atualiza a configuração em todos os deployment slots, a menos que lhe diga para usar apenas um deployment slot específico com o parâmetro `-DeploymentSlotName` (que não pode ser o principal, porque tecnicamente não é um deployment slot). A atualização da configuração altera as definições do SCEPman para **usar** **autenticação por Managed Identity em vez de autenticação da aplicação empresarial**.

SCEPman 1.x **não** suporta autenticação por Managed Identity e, portanto, o CMDlet torna inutilizáveis os deployment slots que ainda executam uma versão 1.x. Assim, se tiver vários deployment slots e não quiser atualizá-los todos de uma vez, deve atualizar o slot de produção por último -- **a sua atualização também afeta todos os outros deployment slots**.

Para outros deployment slots, use o `-DeploymentSlotName` parâmetro para visar apenas esses deployment slots individuais. É isto que os comandos PowerShell apresentados na homepage SCEPman desse deployment slot mostram, para que possa simplesmente copiar os comandos.

Assim que todos os seus deployment slots estiverem a executar a 2.x, basta executar novamente o CMDlet Complete-SCEPmanInstallation e então todos eles usam Managed Identities.

{% hint style="danger" %}
Se, por engano, atualizou um deployment slot para autenticação por Managed Identity que ainda executa SCEPman 1.x, consulte o [guia de downgrade](https://docs.scepman.com/pt/implementacao-do-scepman/permissions/pages/0e8600f826f6256f28a81cb2a285fa2c168a29e3#downgrade-from-2.x-to-1.x) para o fazer funcionar novamente.
{% endhint %}

### Considerações ao Instalar o SCEPman Várias Vezes num Único Tenant

O CMDlet Complete-SCEPmanInstallation cria dois Registos de Aplicação: `SCEPman-api` e `SCEPman-CertMaster`. [A secção "Como o CMDlet Configura o SCEPman Certificate Master](#how-the-cmdlet-configures-scepman-certificate-master)" explica o que estes Registos de Aplicação fazem. O CMDlet requer que os seus nomes sejam únicos, por isso, se tiver várias instalações do SCEPman num Tenant, estas partilharão estes Registos de Aplicação por predefinição. Isto significa que os utilizadores têm as mesmas funções em todos os Certificate Masters e que, tecnicamente, cada instância do Certificate Master pode submeter pedidos de certificados a qualquer SCEPman (embora isso não aconteça a menos que configure o SCEPman Certificate Master para o fazer).

Se não quiser esse comportamento, por exemplo, porque as instalações do SCEPman pertencem a diferentes partes da sua organização, ou uma instalação do SCEPman é um ambiente de pré-produção, ou quer uma PKI multi-nível com uma SCEPman Root CA e uma SCEPman Issuing CA, precisa de dizer às instâncias SCEPman para usarem outros registos de aplicação.

Para este fim, o CMDlet Complete-SCEPmanInstallation apresenta os dois parâmetros `-AzureADAppNameForSCEPman` e `-AzureADAppNameForCertMaster`. Estes parâmetros permitem definir nomes diferentes para os seus Registos de Aplicação. Por exemplo, poderia chamar o CMDlet assim para a sua Root CA:\
`Complete-SCEPmanInstallation -SCEPmanAppServiceName app-scepmanroot -SearchAllSubscriptions -AzureAdAppNameForSCEPman SCEPman-api-root -AzureAdAppNameForCertMaster -SCEPman-CertMaster-root 6>&1`

E depois chama-o outra vez para a sua Subordinate CA assim:

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

## Detalhes de Fundo do Módulo PowerShell do SCEPman

Esta secção descreve o funcionamento interno do Módulo PowerShell. Isto pode ajudar se tiver uma configuração especial que exija alterar o script, se precisar de conceder alguma permissão especial, se estiver a resolver problemas com uma instalação SCEPman, ou se quiser compreender o funcionamento interno para escrever um script de instalação para o seu próprio projeto. Note que o Módulo PowerShell é software de código aberto. Pode rever o código-fonte no seu [Repositório GitHub](https://github.com/scepman/scepman-psmodule). Pull Requests são bem-vindos!

Recomendamos executar o commandlet com `6>&1`, que redireciona o fluxo de informação e o imprime no ecrã, o que fornece mais informações sobre o estado do programa do que se omitir o redirecionamento. Se adicionar `-Verbose`, haverá ainda mais informações sobre o que o script faz.

### Como o CMDlet Configura o SCEPman

O CMDlet PowerShell procura pelo App Service do SCEPman. O App Service usa uma Managed Identity atribuída pelo sistema, que já tem direitos de acesso ao Azure Key Vault do SCEPman numa instalação regular. O CMDlet adiciona permissões para aceder ao Microsoft Graph para procurar utilizadores e dispositivos em AAD e Intune para pedidos OCSP recebidos e ao Intune propriamente dito para verificar pedidos SCEP recebidos.

### Como o CMDlet Lida com Atualizações do SCEPman 1.x

Para além de conceder os direitos ao SCEPman, o Módulo adiciona dois novos recursos Azure ao realizar uma atualização:

* O App Service SCEPman Certificate Master
* O Storage Account partilhado pelo SCEPman e pelo SCEPman Certificate Master para certificados criados manualmente

Mesmo para a Community Edition, que não usa o componente SCEPman Certificate Master, os dois novos recursos são adicionados. Isto permite mudar para a Enterprise Edition mais facilmente se quiser, e não acrescenta qualquer custo extra -- o Storage Account ficará vazio e a Microsoft cobra isto de acordo com a quantidade de armazenamento, e o App Service do Certificate Master partilha um App Service Plan com o SCEPman, o que também não acrescenta qualquer custo extra.

O SCEPman 1.x usava um Registo de Aplicação para autenticar no Microsoft Graph e no Intune, enquanto o SCEPman 2.x pode usar a sua Managed Identity. O CMDlet muda para a Managed Identity alterando estas definições:

* [AppConfig:AuthConfig:ApplicationId](/pt/configuracao-do-scepman/application-settings/dependencies-azure-services/azure-ad.md#appconfigauthconfigapplicationid) está definido para um registo de aplicação recém-criado sem quaisquer permissões. É usado para autenticar *contra* SCEPman, não para o SCEPman autenticar noutra parte. O valor antigo é guardado como cópia de segurança em `Backup:AppConfig:AuthConfig:ApplicationId`.
* [AppConfig:AuthConfig:ApplicationKey](/pt/configuracao-do-scepman/application-settings/dependencies-azure-services/azure-ad.md#appconfigauthconfigapplicationkey) é eliminado, o valor antigo é guardado como cópia de segurança em `Backup:AppConfig:AuthConfig:ApplicationKey`. Já não é necessário, porque o SCEPman não autentica como a Aplicação.
* [AppConfig:AuthConfig:ManagedIdentityEnabledOnUnixTime](/pt/configuracao-do-scepman/application-settings/dependencies-azure-services/azure-ad.md#appconfigauthconfigmanagedidentityenabledonunixtime) contém a hora em que o CMDlet foi executado. O SCEPman obtém um token usando a Managed Identity apenas após um curto atraso depois de o CMDlet ser executado, porque só então as funções no token refletem as permissões corretas adicionadas pelo CMDlet.

### Como o CMDlet Configura o SCEPman Certificate Master

O App Service do SCEPman permite acesso anónimo à sua homepage, uma vez que apenas exibe informação não sensível e apenas de leitura. Em contraste, o componente SCEPman Certificate Master permite aos utilizadores emitir certificados. Assim, permite apenas acesso autenticado e apenas se tiver as permissões corretas. Isto requer um Registo de Aplicação Azure com Permissões Delegadas para ver quem está autenticado e com a configuração correta de URL de início de sessão. O módulo regista este Registo de Aplicação como `SCEPman-CertMaster` no seu Tenant Azure.

Além disso, o App Service SCEPman Certificate Master precisa de permissão para submeter Certificate Signing Requests (CSRs) ao App Service principal do SCEPman para emitir certificados. O mecanismo de autenticação por trás disto baseia-se noutro Registo de Aplicação: `SCEPman-api`. O SCEPman usa *SCEPman-api* para gerir as permissões de submissão de CSR. O script regista SCEPman-api e adiciona a permissão de submissão à Managed Identity do App Service SCEPman Certificate Master.

{% hint style="info" %}
No caso de atualização do SCEPman de 1.x para 2.x e após executar com sucesso o script PS, pode remover o Registo de Aplicação que foi usado no SCEPman 1.x

O SCEPman V2.x usa dois novos Registos de Aplicação: "SCEPman-api" e "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/pt/implementacao-do-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.
