Acesso Condicional: proteção de token (versão prévia)
A proteção de token (às vezes chamado de vinculação de token no setor) tenta reduzir os ataques usando roubo de token, garantindo que um token seja utilizável apenas no dispositivo pretendido. Quando um invasor consegue roubar um token, por sequestro ou repetição, ele pode se passar por sua vítima até que o token expire ou seja revogado. O roubo de token é considerado um evento relativamente raro, mas o dano dele pode ser significativo.
A proteção de token cria um vínculo criptograficamente seguro entre o token e o dispositivo (segredo do cliente) para o qual é emitido. Sem o segredo do cliente, o token vinculado é inútil. Quando um usuário registra um dispositivo Windows 10 ou mais recente na ID do Microsoft Entra, sua identidade principal é vinculada ao dispositivo. O que isso significa: uma política pode garantir que apenas tokens de sessão de entrada (ou atualização) vinculados, também conhecidos como PRTs (Tokens de Atualização Principal), sejam usados pelos aplicativos ao solicitar acesso a um recurso.
Importante
A Proteção do token está atualmente em versão preliminar pública. Para obter mais informações, consulte Termos de Licença Universal para Serviços Online. Com esta versão preliminar, estamos lhe dando a capacidade de criar uma política de Acesso Condicional para exigir proteção de token para tokens de entrada (tokens atualizados) para serviços específicos. Oferecemos suporte à proteção de token para tokens de entrada no Acesso Condicional para aplicativos de desktop que acessam o Exchange Online e o SharePoint Online em dispositivos Windows.
Importante
As seguintes alterações foram feitas na Proteção de Token desde a versão de visualização pública inicial:
- Saída de logs de entrada: o valor da cadeia de caracteres usada em "enforcedSessionControls" e "sessionControlsNotSatisfied" foi alterado de "Binding" para "SignInTokenProtection" no final de junho de 2023. As consultas nos dados do Log de Entrada devem ser atualizadas para refletir essa alteração.
Observação
Podemos fazer o intercâmbio entre tokens de entrada e tokens atualizados neste conteúdo. Se você quiser fornecer proteção para tokens de acesso do Microsoft 365 e cookies de sessão do aplicativo, considere tentar a imposição de verificação de rede compatível.
Essa versão prévia oferece suporte às seguintes configurações para acesso a recursos com políticas de Acesso Condicional de Proteção de Token aplicadas:
- Dispositivos Windows 10 ou mais recentes ingressados no Microsoft Entra, ingressados no Microsoft Entra híbrido ou registrados no Microsoft Entra.
- Cliente de sincronização do OneDrive versão 22.217 ou posterior
- Cliente nativo do Teams versão 1.6.00.1331 ou posterior
- Power BI Desktop versão 2.117.841.0 (maio de 2023) ou posterior
- Visual Studio 2022 ou posterior ao usar a opção de entrada “Autenticação do agente do Windows”
- Não há suporte para clientes Perpétuos do Office
- Não há suporte para os usuários externos (Microsoft Entra B2B) e não devem ser incluídos na política de Acesso Condicional.
- Os seguintes aplicativos não dão suporte à entrada usando fluxos de token protegidos e os usuários são bloqueados ao acessar o Exchange e o SharePoint:
- Módulos do PowerShell que acessam escopos do Exchange, SharePoint ou Microsoft Graph que são atendidos pelo Exchange ou SharePoint
- Extensão do PowerQuery para Excel
- Extensões para Visual Studio Code que acessam o Exchange ou o SharePoint
- O novo cliente de versão prévia do Teams 2.1 é bloqueado após a saída devido a um bug. Esse bug deve ser corrigido em uma atualização de serviço futura.
- Não há suporte para os seguintes dispositivos cliente Windows:
- Windows Server
- Hub de Superfície
- Sistemas MTR (Salas do Microsoft Teams) baseados em Windows
O uso desse recurso requer licenças P2 do Microsoft Entra ID. Para encontrar a licença certa para seus requisitos, confira Comparar recursos do Microsoft Entra ID com disponibilidade geral.
Observação
A imposição da Proteção de Token faz parte do Microsoft Entra ID Protection e fará parte da licença P2 em disponibilidade geral.
Para os usuários, a implantação de uma política de Acesso Condicional para reforçar a proteção de token deve ser invisível ao usar plataformas de cliente compatíveis em dispositivos registrados e aplicativos compatíveis.
Para minimizar a probabilidade de interrupção do usuário devido à incompatibilidade do aplicativo ou dispositivo, recomendamos:
- Comece com um grupo piloto de usuários e expanda ao longo do tempo.
- Crie uma política de Acesso Condicional no modo somente relatório antes de passar para a imposição da proteção de token.
- Capture logs de entrada Interativos e Não interativos.
- Analise esses logs por tempo suficiente para cobrir o uso normal do aplicativo.
- Adicione bons usuários conhecidos a uma política de imposição.
Esse processo ajuda a avaliar a compatibilidade do aplicativo e do cliente de seus usuários para a imposição da proteção de token.
Os usuários que executam funções especializadas como as descritas em Níveis de segurança de acesso privilegiado são alvos possíveis para essa funcionalidade. Recomendamos a pilotagem com um subconjunto pequeno para começar.
As etapas a seguir ajudam a criar uma política de Acesso Condicional para exigir proteção de token para Exchange Online e SharePoint Online em dispositivos Windows.
- Entre no centro de administração do Microsoft Entra como pelo menos Administrador de acesso condicional.
- Navegar para Proteção> de acesso condicional de >Políticas.
- Selecione Nova política.
- Dê um nome à sua política. Recomendamos que as organizações criem um padrão significativo para os nomes de suas políticas.
- Em Atribuições, selecione Usuários ou identidades de carga de trabalho.
- Em Incluir, selecione os usuários ou grupos que estão testando essa política.
- Em Excluir, selecione Usuários e grupos e escolha o acesso de emergência ou as contas urgentes da sua organização.
- Em Recursos de destino>Recursos (anteriormente aplicativos de nuvem)>Incluir>recursos selecionados
Em Selecionar, selecione os seguintes aplicativos compatíveis com a versão prévia:
- Office 365 Exchange Online
- Office 365 SharePoint Online
Aviso
Sua política de Acesso Condicional só deve ser configurada para esses aplicativos. A seleção do grupo de aplicativos do Office 365 pode resultar em falhas não intencionais. Essa é uma exceção à regra geral de que o grupo de aplicativos do Office 365 deve ser selecionado em uma política de Acesso Condicional.
Escolha Selecionar.
- Em Condições:
- Em Plataformas de dispositivo:
- Defina Configurar como Sim.
- Inclua>Selecionar plataformas de dispositivos >Windows.
- Selecione Concluído.
- Em Aplicativos do cliente:
- Defina Configurar como Sim.
Aviso
Não configurar a condição Aplicativos Cliente ou deixar o Navegador selecionado pode fazer com que os aplicativos que usam MSAL.js, como o Teams Web, sejam bloqueados.
- Em Clientes de autenticação modernos, selecione apenas Aplicativos móveis e clientes de desktop. Deixe outros itens desmarcados.
- Selecione Concluído.
- Defina Configurar como Sim.
- Em Plataformas de dispositivo:
- Em Controle de acesso>Sessão, selecione Exigir proteção de token para sessões de entrada e selecione Selecionar.
- Confirme suas configurações e defina Habilitar política com Somente relatório.
- Selecione Criar para criar e habilitar sua política.
Depois que os administradores confirmarem as configurações com o modo somente relatório, eles poderão alternar a opção Habilitar política de Somente relatório para Ativado.
Monitoramento da imposição de Acesso Condicional da proteção de token antes e depois da imposição.
Use o log de entrada do Microsoft Entra para verificar o resultado de uma política de imposição da proteção de token no modo somente relatório ou no modo habilitado.
- Entre no centro de administração do Microsoft Entra como pelo menos Administrador de acesso condicional.
- Navegue até Identidade>Monitoramento e integridade>Logs de entrada.
- Selecione uma solicitação específica para determinar se a política é aplicada ou não.
- Vá para o painel Acesso Condicional ou Somente Relatório, dependendo de seu estado, e selecione o nome de sua política que requer proteção de token.
- Em Controles de Sessão, verifique se os requisitos da política foram atendidos ou não.
Você também pode usar a Análise de Logs para consultar os logs de entrada (interativos e não interativos) para solicitações bloqueadas devido a falha na imposição da proteção de token.
Aqui está um exemplo de consulta da Análise de Logs que pesquisa os logs de entrada não interativos nos últimos sete dias, realçando solicitações Bloqueadas versus Permitidas por Aplicativo. Essas consultas são apenas exemplos e estão sujeitas a alterações.
Observação
Saída de logs de entrada: o valor da cadeia de caracteres usada em "enforcedSessionControls" e "sessionControlsNotSatisfied" foi alterado de "Binding" para "SignInTokenProtection" no final de junho de 2023. As consultas nos dados do Log de Entrada devem ser atualizadas para refletir essa alteração. Os exemplos abrangem os dois valores para incluir dados históricos.
//Per Apps query
// Select the log you want to query (SigninLogs or AADNonInteractiveUserSignInLogs )
//SigninLogs
AADNonInteractiveUserSignInLogs
// Adjust the time range below
| where TimeGenerated > ago(7d)
| project Id,ConditionalAccessPolicies, Status,UserPrincipalName, AppDisplayName, ResourceDisplayName
| where ConditionalAccessPolicies != "[]"
| where ResourceDisplayName == "Office 365 Exchange Online" or ResourceDisplayName =="Office 365 SharePoint Online"
//Add userPrinicpalName if you want to filter
// | where UserPrincipalName =="<user_principal_Name>"
| mv-expand todynamic(ConditionalAccessPolicies)
| where ConditionalAccessPolicies ["enforcedSessionControls"] contains '["Binding"]' or ConditionalAccessPolicies ["enforcedSessionControls"] contains '["SignInTokenProtection"]'
| where ConditionalAccessPolicies.result !="reportOnlyNotApplied" and ConditionalAccessPolicies.result !="notApplied"
| extend SessionNotSatisfyResult = ConditionalAccessPolicies["sessionControlsNotSatisfied"]
| extend Result = case (SessionNotSatisfyResult contains 'SignInTokenProtection' or SessionNotSatisfyResult contains 'SignInTokenProtection', 'Block','Allow')
| summarize by Id,UserPrincipalName, AppDisplayName, Result
| summarize Requests = count(), Users = dcount(UserPrincipalName), Block = countif(Result == "Block"), Allow = countif(Result == "Allow"), BlockedUsers = dcountif(UserPrincipalName, Result == "Block") by AppDisplayName
| extend PctAllowed = round(100.0 * Allow/(Allow+Block), 2)
| sort by Requests desc
O resultado da consulta anterior deve ser semelhante à seguinte captura de tela:
O exemplo de consulta a seguir examina o log de entrada não interativo dos últimos sete dias, realçando solicitações Bloqueadas versus Permitidas pelo Usuário.
//Per users query
// Select the log you want to query (SigninLogs or AADNonInteractiveUserSignInLogs )
//SigninLogs
AADNonInteractiveUserSignInLogs
// Adjust the time range below
| where TimeGenerated > ago(7d)
| project Id,ConditionalAccessPolicies, UserPrincipalName, AppDisplayName, ResourceDisplayName
| where ConditionalAccessPolicies != "[]"
| where ResourceDisplayName == "Office 365 Exchange Online" or ResourceDisplayName =="Office 365 SharePoint Online"
//Add userPrincipalName if you want to filter
// | where UserPrincipalName =="<user_principal_Name>"
| mv-expand todynamic(ConditionalAccessPolicies)
| where ConditionalAccessPolicies ["enforcedSessionControls"] contains '["Binding"]' or ConditionalAccessPolicies ["enforcedSessionControls"] contains '["SignInTokenProtection"]'
| where ConditionalAccessPolicies.result !="reportOnlyNotApplied" and ConditionalAccessPolicies.result !="notApplied"
| extend SessionNotSatisfyResult = ConditionalAccessPolicies.sessionControlsNotSatisfied
| extend Result = case (SessionNotSatisfyResult contains 'SignInTokenProtection' or SessionNotSatisfyResult contains 'SignInTokenProtection', 'Block','Allow')
| summarize by Id, UserPrincipalName, AppDisplayName, ResourceDisplayName,Result
| summarize Requests = count(),Block = countif(Result == "Block"), Allow = countif(Result == "Allow") by UserPrincipalName, AppDisplayName,ResourceDisplayName
| extend PctAllowed = round(100.0 * Allow/(Allow+Block), 2)
| sort by UserPrincipalName asc