Identidades gerenciadas

circle-info

Este recurso requer a versão 2.0 ou superior.

O SCEPman precisa interagir com os seus endpoints do Entra Directory e do Intune para fornecer a validação de certificado 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 infraestrutura de suporte 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 do 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 nova instalação 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. Transfere 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 do SCEPman tantas vezes quantas quiser; ele apenas adicionará o que ainda estiver em falta.

Pré-requisitos

  • Um Global Admin Conta para o tenant no qual pretende instalar o SCEPman (ou outro papel AAD como Privileged Role Administrator e permissões de escrita na Subscrição do Azure). Existe a opção de usar uma conta com apenas o papel Application Administrator e executar mais tarde manualmente os comandos que exigem permissões de Global Administrator.

  • Azure CLIarrow-up-right (também conhecido como az) instalado. O Azure CLI vem pré-instalado no Azure Cloud Shellarrow-up-right, a forma preferencial de executar o módulo.

Executar o CMDlet de instalação do SCEPman

Homepage ativada

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

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

  1. Execute o comando PowerShell apresentado na homepage da sua instância do SCEPman no seu PowerShell ou Azure Cloud Shell (ver captura de ecrã abaixo). Isto inclui um parâmetro para identificar a sua instância do SCEPman, para que o código possa ser executado idealmente sem qualquer interação do utilizador.

circle-exclamation

Homepage desativada

Se tiver desativado a homepage do SCEPman ou precisar de executar o CMDlet novamente, faça o seguinte:

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

  1. Preencha os pedidos para:

  • Em qual Subscrição do Azure o SCEPman é executado (se houver mais do que uma a que tenha acesso)

  • O nome do App Service do SCEPman (não é necessário se tiver usado o código da Homepage do SCEPman)

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

  • O nome do novo App Service do 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)

Executar o CMDlet de instalação do SCEPman sem o papel de Global Admin

Use o -SkipAppRoleAssignments flag do Complete-SCEPmanInstallation para executar o CMDlet sem permissões de Global Admin. Isto irá ignorar a atribuição dos App Roles necessários às Managed Identities dos App Services do SCEPman e do Certificate Master. Depois, pode atribuir manualmente os App Roles como Global Administrator. O CMDlet imprimirá os comandos necessários no console.

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 por Enterprise App.

SCEPman 1.x não suporta autenticação por Managed Identity e, por isso, o CMDlet torna inutilizáveis os deployment slots que ainda executem uma versão 1.x. Assim, se tiver vários deployment slots e não quiser atualizar 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 direcionar apenas esses deployment slots individuais. É isso que os comandos PowerShell apresentados na homepage do SCEPman do deployment slot mostram, para que possa simplesmente copiar os comandos.

Quando todos os seus deployment slots estiverem a correr em 2.x, execute mais uma vez o CMDlet Complete-SCEPmanInstallation e então todos eles usarão Managed Identities.

triangle-exclamation

Considerações ao instalar o SCEPman várias vezes num único tenant

O CMDlet Complete-SCEPmanInstallation cria dois App Registrations: SCEPman-api e SCEPman-CertMaster. A secção "Como o CMDlet configura o SCEPman Certificate Master" explica o que estes App Registrations fazem. O CMDlet requer que os seus nomes sejam únicos, por isso, se tiver várias instalações do SCEPman num único tenant, estas partilharão estes App Registrations 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 certificado 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 porque uma instalação do SCEPman é um ambiente pré-produção, ou porque pretende uma PKI multicamada com uma SCEPman Root CA e uma SCEPman Issuing CA, precisa de indicar às instâncias do SCEPman para usarem outros app registrations.

Para este efeito, o CMDlet Complete-SCEPmanInstallation inclui os dois parâmetros -AzureADAppNameForSCEPman e -AzureADAppNameForCertMaster. Estes parâmetros permitem definir nomes diferentes para os seus App Registrations. Por exemplo, poderá 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 chamá-lo 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 do 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 GitHubarrow-up-right. Pull Requests são bem-vindos!

Recomendamos executar o commandlet com 6>&1, o que redireciona o fluxo de informação e o mostra no ecrã, fornecendo 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 pesquisa pelo App Service do SCEPman. O App Service utiliza uma Managed Identity atribuída pelo sistema, que já tem direitos de acesso ao Azure Key Vault do SCEPman numa instalação normal. O CMDlet adiciona permissões para aceder ao Microsoft Graph para procurar utilizadores e dispositivos no AAD e no Intune para pedidos OCSP recebidos e ao próprio Intune para verificar pedidos SCEP recebidos.

Como o CMDlet trata atualizações do SCEPman 1.x

Além de conceder os direitos ao SCEPman, o módulo adiciona dois novos recursos do Azure ao efetuar 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 na Community Edition, que não usa o componente SCEPman Certificate Master, os dois novos recursos são adicionados. Isto facilita a mudança para a Enterprise Edition, se desejar, e não acrescenta qualquer custo extra -- o Storage Account ficará vazio e a Microsoft cobra isto com base na 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 custo extra.

O SCEPman 1.x usava um App Registration para autenticar-se 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 é definido para um app registration recém-criado sem quaisquer permissões. É usado para autenticar contra o SCEPman, não para o SCEPman autenticar-se noutro local. O valor antigo é guardado como cópia de segurança como Backup:AppConfig:AuthConfig:ApplicationId.

  • AppConfig:AuthConfig:ApplicationKey é eliminado, o valor antigo é guardado como cópia de segurança como Backup:AppConfig:AuthConfig:ApplicationKey. Já não é necessário, porque o SCEPman não autentica como a Application.

  • AppConfig:AuthConfig:ManagedIdentityEnabledOnUnixTime 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 ter sido executado, porque só então os papéis 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, pois apenas apresenta informação de leitura não sensível. Em contraste, o componente SCEPman Certificate Master permite aos utilizadores emitir certificados. Por isso, permite apenas acesso autenticado e apenas se tiver as permissões corretas. Isto requer um App Registration do Azure com Delegated Permissions para ver quem está com sessão iniciada e com a configuração correta da URL de início de sessão. O módulo regista este App Registration como SCEPman-CertMaster no seu tenant do Azure.

Além disso, o App Service do 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 App Registration: SCEPman-api. O SCEPman usa SCEPman-api para gerir permissões de submissão de CSRs. O script regista SCEPman-api e adiciona a permissão de submissão à Managed Identity do SCEPman Certificate Master.

circle-info

No caso de atualização do SCEPman de 1.x para 2.x e após executar com êxito o script PS, pode remover o App Registration que era usado no SCEPman 1.x

O SCEPman V2.x usa dois novos App Registrations: "SCEPman-api" e "SCEPman-CertMaster"

Last updated

Was this helpful?