> For the complete documentation index, see [llms.txt](https://docs.realmjoin.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.realmjoin.com/pt/automacao/runbooks/runbook-references/org/security/sync-mfa-secure-users-to-group_scheduled.md).

# Sincronizar Utilizadores MFA Seguros Para Grupo Agendado

### Descrição

Este runbook sincroniza um grupo do Entra ID com todos os utilizadores membros que tenham, pelo menos, um método de autenticação "seguro" registado, com base no relatório de registo de métodos de autenticação do Entra ID. Quais grupos de métodos contam como seguros é configurável através de alternâncias (Passkeys/FIDO2, credenciais da plataforma, aplicação Microsoft Authenticator, OTP de software, OTP de hardware, autenticação baseada em certificado). Os utilizadores que já não tenham um método seguro registado são removidos do grupo. Um modo estrito opcional ("SecureOnly") também desqualifica utilizadores que tenham qualquer método não seguro (telefone, email, perguntas de segurança) registado em conjunto com o seu método seguro. Utilizadores convidados e membros de grupo que não sejam utilizadores nunca são afetados.

Opcionalmente, pode ser enviado por email um relatório detalhado e/ou carregado para um Azure Storage Account (retornando ligações de download com tempo limitado). O relatório contém ficheiros CSV e um livro do Excel formatado com uma folha de rosto de informações (parâmetros escolhidos e contagens de resultados), as alterações efetuadas e uma avaliação por utilizador de todos os utilizadores membros. Os ficheiros do relatório só são gerados quando o email ou a ligação de download está ativado.

### Como funciona

O runbook lê o Entra ID [authentication methods registration report](https://learn.microsoft.com/en-us/graph/api/authenticationmethodsroot-list-userregistrationdetails) (`userRegistrationDetails`) e espelha o grupo de destino em relação a todos os **utilizadores membros** que cumpram os critérios:

* Um utilizador cumpre os critérios quando, pelo menos, um dos seus métodos registados está no conjunto **seguro** configurado.
* Em **modo estrito** (`SecureOnly`), um utilizador também não pode ter qualquer método do conjunto **não seguro** registado — um utilizador com passkey que também mantenha um fator SMS não cumpre os critérios.
* Os utilizadores que cumprem os critérios e que ainda não sejam membros do grupo são adicionados; os membros que já não cumpram os critérios são removidos (sincronização espelhada).
* Utilizadores convidados nunca são adicionados nem removidos. Membros de grupo que não sejam utilizadores (dispositivos, service principals, grupos aninhados) nunca são afetados.

O grupo de destino deve ser gerido exclusivamente por este runbook.

### Grupos de métodos seguros

Cada alternância controla quais valores `methodsRegistered` contam como seguros:

| Alternância                         | Predefinição | Valores abrangidos                                                                   |
| ----------------------------------- | ------------ | ------------------------------------------------------------------------------------ |
| Passkeys / FIDO2 security keys      | ativado      | `fido2SecurityKey`, `passKeyDeviceBound`, `passKeyDeviceBoundAuthenticator`          |
| Credenciais da plataforma           | ativado      | `windowsHelloForBusiness`, `passKeyDeviceBoundWindowsHello`, `macOsSecureEnclaveKey` |
| Aplicação Microsoft Authenticator   | ativado      | `microsoftAuthenticatorPush`, `microsoftAuthenticatorPasswordless`                   |
| OTP de software                     | desativado   | `softwareOneTimePasscode`                                                            |
| OTP de hardware                     | desativado   | `hardwareOneTimePasscode`                                                            |
| Autenticação baseada em certificado | ativado      | `certificateBasedAuthentication`                                                     |

### Modo estrito (SecureOnly)

Com o modo estrito ativado, utilizadores com qualquer um dos seguintes métodos inseguros incorporados nunca cumprem os critérios:

`mobilePhone`, `alternateMobilePhone`, `officePhone`, `email`, `securityQuestion`

Se um método acabar nos conjuntos seguro e não seguro (só é possível através dos parâmetros de substituição), o não seguro prevalece — esses utilizadores nunca cumprem os critérios em modo estrito. O runbook apresenta um aviso sobre isto no arranque.

### Referência de classificação de métodos

Use os valores exatos do Graph desta tabela ao criar as cadeias de substituição separadas por vírgulas:

| `methodsRegistered` valor            | Nome amigável                                                             | Classificação | Abrangido pela alternância (predefinição)     |
| ------------------------------------ | ------------------------------------------------------------------------- | ------------- | --------------------------------------------- |
| `fido2SecurityKey`                   | Chave de segurança FIDO2                                                  | Seguro        | Passkeys / FIDO2 (ativado)                    |
| `passKeyDeviceBound`                 | Passkey (vinculada ao dispositivo)                                        | Seguro        | Passkeys / FIDO2 (ativado)                    |
| `passKeyDeviceBoundAuthenticator`    | Passkey no Microsoft Authenticator                                        | Seguro        | Passkeys / FIDO2 (ativado)                    |
| `windowsHelloForBusiness`            | Windows Hello for Business                                                | Seguro        | Credenciais da plataforma (ativado)           |
| `passKeyDeviceBoundWindowsHello`     | Passkey no Windows Hello                                                  | Seguro        | Credenciais da plataforma (ativado)           |
| `macOsSecureEnclaveKey`              | Credencial da plataforma para macOS                                       | Seguro        | Credenciais da plataforma (ativado)           |
| `microsoftAuthenticatorPush`         | Microsoft Authenticator (notificação push)                                | Seguro        | Aplicação Microsoft Authenticator (ativado)   |
| `microsoftAuthenticatorPasswordless` | Microsoft Authenticator (início de sessão sem palavra-passe no telemóvel) | Seguro        | Aplicação Microsoft Authenticator (ativado)   |
| `softwareOneTimePasscode`            | Token OATH de software (aplicação TOTP)                                   | Seguro        | OTP de software (desativado)                  |
| `hardwareOneTimePasscode`            | Token OATH de hardware                                                    | Seguro        | OTP de hardware (desativado)                  |
| `certificateBasedAuthentication`     | Autenticação baseada em certificado                                       | Seguro        | Autenticação baseada em certificado (ativado) |
| `mobilePhone`                        | Telefone (SMS / chamada de voz)                                           | Não seguro    | lista não segura incorporada                  |
| `alternateMobilePhone`               | Telefone alternativo (chamada de voz)                                     | Não seguro    | lista não segura incorporada                  |
| `officePhone`                        | Telefone do escritório (chamada de voz)                                   | Não seguro    | lista não segura incorporada                  |
| `email`                              | Email (apenas SSPR)                                                       | Não seguro    | lista não segura incorporada                  |
| `securityQuestion`                   | Perguntas de segurança (apenas SSPR)                                      | Não seguro    | lista não segura incorporada                  |
| `temporaryAccessPass`                | Temporary Access Pass                                                     | Neutro        | nunca cumpre os critérios, nunca desqualifica |

Valores desconhecidos ou futuros do Graph são tratados como neutros, exceto se estiverem explicitamente listados num parâmetro de substituição.

### Parâmetros de substituição

Ambos os parâmetros de substituição estão ocultos por predefinição e destinam-se à personalização do runbook RealmJoin:

* **SecureMethodsOverride** — lista separada por vírgulas de `methodsRegistered` valores que define o conjunto seguro. Quando definido, **todos** os alternadores de grupos de métodos são ignorados. Exemplo: `fido2SecurityKey,passKeyDeviceBound,passKeyDeviceBoundAuthenticator,windowsHelloForBusiness`
* **UnsecureMethodsOverride** — lista separada por vírgulas que substitui a lista não segura incorporada. Só é avaliada em modo estrito. Exemplo: `mobilePhone,alternateMobilePhone,officePhone,email,securityQuestion,softwareOneTimePasscode`

Valores desconhecidos geram um aviso, mas continuam a ser avaliados, pelo que os valores futuros do Graph podem ser usados antes de esta documentação ser atualizada.

### Relatório por email e ligações de download

Opcionalmente, pode ser entregue um relatório detalhado - especialmente útil para rever a primeira execução (idealmente em conjunto com o modo de execução de teste):

* **Enviar relatório por email** (`SendEmail`, desativado por predefinição): envia o relatório para os destinatários configurados. O campo de destinatário só aparece quando o email está ativado. Requer a definição de tenant `RJReport.EmailSender` (ver a [configuração de relatório por email](https://github.com/realmjoin/realmjoin-runbooks/tree/master/docs/general/setup-email-reporting.md)).
* **Criar ligações de download de ficheiros** (`CreateDownloadLink`, desativado por predefinição): carrega os ficheiros do relatório para um Azure Storage Account e devolve ligações de download com tempo limitado (usa as `RJReport.StorageAccount.*` definições de tenant).

Os ficheiros do relatório só são gerados quando pelo menos uma das duas opções está ativada. O relatório consiste em:

* **mfa-secure-users-group-sync-changes.csv** - todas as alterações efetuadas (ou, em execução de teste, pendentes) com detalhes de métodos por utilizador
* **mfa-secure-users-group-sync-all-users.csv** - a avaliação de todos os utilizadores membros: métodos registados, classificação seguro/não seguro, cumprimento dos critérios e pertença ao grupo
* **mfa-secure-users-group-sync-report.xlsx** - os mesmos dados num livro do Excel formatado: uma folha de rosto "Info" com os parâmetros escolhidos e contagens de resultados, uma folha de cálculo "Changes" (utilizadores adicionados realçados a verde, removidos a vermelho) e uma folha de cálculo "All Users"

Em tenants grandes, os ficheiros CSV em bruto podem exceder o limite de tamanho dos anexos de email (o Graph rejeita emails com cerca de 4 MB no total). Quando os ficheiros CSV excedem um orçamento de 2,5 MB, o email é enviado apenas com o livro do Excel anexado (que contém os dados completos em forma comprimida) e uma nota a explicar a omissão; um envio completo falhado também é automaticamente repetido com apenas o livro. O carregamento da ligação de download inclui sempre todos os ficheiros, independentemente do tamanho.

### Notas e limitações

* O relatório de registo requer uma licença **Entra ID P1 ou P2** .
* O relatório não inclui utilizadores **desativados** ou eliminados de forma suave — essas contas são removidas do grupo na execução seguinte.
* Os dados do relatório podem ficar atrasados em relação às alterações de registo recentes; um método registado recentemente pode demorar um ciclo de sincronização a ser refletido.
* O runbook processa tenants grandes (20 mil+ utilizadores) através de leituras paginadas do relatório e gravações em lote no grupo com novas tentativas automáticas de limitação.

### Agendamento

A sincronização é idempotente — um único agendamento recorrente (por exemplo, diário) mantém o grupo atualizado, e novas execuções após falhas parciais recuperam automaticamente. Recomendação: executar uma vez com **Dry run (WhatIf)** ativado e rever a saída do trabalho antes de agendar o runbook em modo ativo.

### Localização

Organization → Security → Sync MFA Secure Users To Group (Scheduled)

**Nome completo do runbook**

rjgit-org\_security\_sync-MFA-secure-users-to-group\_scheduled

### Permissões

#### Permissões da aplicação

* **Tipo**: Microsoft Graph
  * AuditLog.Read.All
  * Group.Read.All
  * GroupMember.ReadWrite.All
  * User.Read.All
  * Organization.Read.All
  * Mail.Send

### Parâmetros

#### TargetGroupId

O grupo do Entra ID para o qual sincronizar. Os membros deste grupo serão geridos exclusivamente por este runbook.

| Propriedade       | Valor  |
| ----------------- | ------ |
| Obrigatório       | true   |
| Valor predefinido |        |
| Tipo              | String |

#### IncludePasskeys

Contar passkeys e chaves de segurança FIDO2 como seguras (fido2SecurityKey, passKeyDeviceBound, passKeyDeviceBoundAuthenticator).

| Propriedade       | Valor      |
| ----------------- | ---------- |
| Obrigatório       | false      |
| Valor predefinido | Verdadeiro |
| Tipo              | Booleano   |

#### IncludePlatformCredentials

Contar credenciais da plataforma como seguras (windowsHelloForBusiness, passKeyDeviceBoundWindowsHello, macOsSecureEnclaveKey).

| Propriedade       | Valor      |
| ----------------- | ---------- |
| Obrigatório       | false      |
| Valor predefinido | Verdadeiro |
| Tipo              | Booleano   |

#### IncludeMicrosoftAuthenticator

Contar a aplicação Microsoft Authenticator como segura (microsoftAuthenticatorPush, microsoftAuthenticatorPasswordless).

| Propriedade       | Valor      |
| ----------------- | ---------- |
| Obrigatório       | false      |
| Valor predefinido | Verdadeiro |
| Tipo              | Booleano   |

#### IncludeSoftwareOtp

Contar OTP de software / aplicações TOTP de autenticação como seguras (softwareOneTimePasscode).

| Propriedade       | Valor    |
| ----------------- | -------- |
| Obrigatório       | false    |
| Valor predefinido | Falso    |
| Tipo              | Booleano |

#### IncludeHardwareOtp

Contar tokens OTP de hardware como seguros (hardwareOneTimePasscode).

| Propriedade       | Valor    |
| ----------------- | -------- |
| Obrigatório       | false    |
| Valor predefinido | Falso    |
| Tipo              | Booleano |

#### IncludeCertificateBasedAuth

Contar a autenticação baseada em certificado como segura (certificateBasedAuthentication).

| Propriedade       | Valor      |
| ----------------- | ---------- |
| Obrigatório       | false      |
| Valor predefinido | Verdadeiro |
| Tipo              | Booleano   |

#### SecureOnly

Modo estrito: utilizadores que tenham qualquer método não seguro registado (mobilePhone, alternateMobilePhone, officePhone, email, securityQuestion) nunca cumprem os critérios, mesmo que também tenham um método seguro. São removidos do grupo se já forem membros.

| Propriedade       | Valor    |
| ----------------- | -------- |
| Obrigatório       | false    |
| Valor predefinido | Falso    |
| Tipo              | Booleano |

#### SecureMethodsOverride

Opcional. Lista separada por vírgulas de valores methodsRegistered que definem o conjunto seguro. Quando definido, TODOS os alternadores de grupos de métodos são ignorados. Consulte a documentação do runbook para todos os valores conhecidos.

| Propriedade       | Valor  |
| ----------------- | ------ |
| Obrigatório       | false  |
| Valor predefinido |        |
| Tipo              | String |

#### UnsecureMethodsOverride

Opcional. Lista separada por vírgulas de valores methodsRegistered que substituem a lista não segura incorporada. Só é avaliada em modo estrito (SecureOnly).

| Propriedade       | Valor  |
| ----------------- | ------ |
| Obrigatório       | false  |
| Valor predefinido |        |
| Tipo              | String |

#### WhatIfMode

Execução de teste: registar quais utilizadores seriam adicionados ou removidos sem alterar o grupo.

| Propriedade       | Valor    |
| ----------------- | -------- |
| Obrigatório       | false    |
| Valor predefinido | Falso    |
| Tipo              | Booleano |

#### SendEmail

Se ativado, o relatório é enviado por email com anexos CSV e Excel (xlsx). Desativado por predefinição.

| Propriedade       | Valor    |
| ----------------- | -------- |
| Obrigatório       | false    |
| Valor predefinido | Falso    |
| Tipo              | Booleano |

#### EmailTo

Endereço(s) de email do destinatário para o relatório. Pode ser um único endereço ou vários endereços separados por vírgulas (string). Apenas usado quando SendEmail está ativado.

| Propriedade       | Valor  |
| ----------------- | ------ |
| Obrigatório       | false  |
| Valor predefinido |        |
| Tipo              | String |

#### EmailFrom

O endereço de email do remetente. Obtido a partir das definições de tenant do RJReport.

| Propriedade       | Valor  |
| ----------------- | ------ |
| Obrigatório       | false  |
| Valor predefinido |        |
| Tipo              | String |

#### ReportFileFormat

Controla quais formatos de ficheiro do relatório são gerados e entregues: "apenas CSV", "CSV & XLSX" (predefinição) ou "apenas XLSX".

| Propriedade       | Valor      |
| ----------------- | ---------- |
| Obrigatório       | false      |
| Valor predefinido | CSV & XLSX |
| Tipo              | String     |

#### CreateDownloadLink

Se ativado, os ficheiros do relatório são carregados para um Azure Storage Account e são devolvidas ligações de download com validade limitada. Desativado por predefinição.

| Propriedade       | Valor    |
| ----------------- | -------- |
| Obrigatório       | false    |
| Valor predefinido | Falso    |
| Tipo              | Booleano |

#### ContainerName

Nome do contentor de armazenamento usado para o carregamento. Configurado por runbook (não é uma definição global do RJReport).

| Propriedade       | Valor                          |
| ----------------- | ------------------------------ |
| Obrigatório       | false                          |
| Valor predefinido | sync-mfa-secure-users-to-group |
| Tipo              | String                         |

#### ResourceGroupName

Grupo de recursos que contém a Storage Account. Obtido das configurações do Tenant do RJReport.

| Propriedade       | Valor  |
| ----------------- | ------ |
| Obrigatório       | false  |
| Valor predefinido |        |
| Tipo              | String |

#### StorageAccountName

Nome da Storage Account usado para o carregamento. Obtido das configurações do Tenant do RJReport.

| Propriedade       | Valor  |
| ----------------- | ------ |
| Obrigatório       | false  |
| Valor predefinido |        |
| Tipo              | String |

#### LinkExpiryDays

Número de dias até que a ligação de download gerada expire. Obtido das configurações do Tenant do RJReport.

| Propriedade       | Valor |
| ----------------- | ----- |
| Obrigatório       | false |
| Valor predefinido | 6     |
| Tipo              | Int32 |

[Voltar à visão geral da referência do Runbook](/pt/automacao/runbooks/runbook-references.md)


---

# 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.realmjoin.com/pt/automacao/runbooks/runbook-references/org/security/sync-mfa-secure-users-to-group_scheduled.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.
