Controle de Acesso Baseado em Função para aplicativos no Exchange Online

Este artigo orienta você no uso do controle de acesso granular e escalonável com escopo de recurso: RBAC (Controle de Acesso Baseado em Função) para aplicativos no Exchange Online.

Visão Geral

O RBAC para Aplicativos no Exchange Online permite que os administradores concedam permissões a um aplicativo que acessa dados de forma independente no Exchange Online. Essa concessão pode ser emparelhada com um escopo de acesso (escopo de recurso) para especificar quais caixas de correio um aplicativo pode acessar. Esse recurso estende o modelo RBAC atual no Exchange Online e substitui as Políticas de Acesso ao Aplicativo. Essas concessões de permissão são independentes das concessões sem escopo no Microsoft Entra ID.

O núcleo desse sistema é a configuração de atribuição de função de gerenciamento, que expressa a intenção de um administrador de permitir que uma entidade de segurança acesse dados. Nesse caso, permitindo que um aplicativo desempenhe alguma função em um conjunto de recursos de destino. Por exemplo, um administrador pode configurar um sistema de reserva de salas com acesso aos dados do calendário somente em regiões específicas usando um Escopo de gerenciamento. O diagrama a seguir ilustra o modelo de atribuição de função:

Diagrama do modelo de atribuição de função com exemplo.

Instruções de configuração

As etapas a seguir orientam você a criar essas atribuições RBAC do aplicativo:

  1. Criar um novo escopo de recurso (opcional)
  2. Criar um ponteiro para uma entidade de serviço do Microsoft Entra
  3. Selecione a função de aplicativo apropriada
  4. Criar uma Nova atribuição de função
  5. Testar a Nova Entidade de Serviço

Requisitos

O grupo de funções Gerenciamento da Organização tem a atribuição de função de delegação para as novas funções do RBAC de Aplicativo. Você precisa ser membro do grupo de funções Gerenciamento da Organização para atribuir essas permissões. Como alternativa, você pode usar o RBAC do Exchange Online para conceder atribuições delegadas a essas funções de aplicativo conforme achar melhor. No Microsoft Entra ID, você precisa da função de Administrador do Exchange para atribuir essas permissões.

Definir o escopo do recurso

Escopos de Gerenciamento

Os escopos de gerenciamento permitem que um administrador defina o escopo de um conjunto de caixas de correio com base nas propriedades desses objetos. Consulte a documentação do escopo de gerenciamento para adicionar, remover, definir. Aqui está uma lista das propriedades filtráveis em um Escopo de Gerenciamento.

Observação

Embora exista uma propriedade chamada Unidades Administrativas, recomendamos que você use o parâmetro nativo Unidades de Administração em uma atribuição de função para evitar a criação de um escopo como um objeto de ponteiro intermediário.

Entidades de serviço

As entidades de serviço representam uma instância de um aplicativo em sua organização. Você deve considerar a Entidade de Serviço no Exchange como um ponteiro para uma Entidade de Serviço existente no Microsoft Entra ID. As entidades de serviço não podem ser criadas diretamente usando as ferramentas do Exchange Online. As ferramentas do Microsoft Entra são usadas para gerenciar registros de Entidade de Serviço nas organizações. O Exchange impede a criação de um ponteiro inválido e reflete todas as exclusões de Entidades de Serviço no Microsoft Entra ID automaticamente.

Nova entidade de serviço

New-ServicePrincipal -AppId <Client Application ID in AAD> -ObjectId <Service principal object ID in AAD> -DisplayName <name>

A captura de tela a seguir ajuda você a encontrar essas IDs no Microsoft Entra ID:

Captura de tela da página de aplicativos do Microsoft Entra Enterprise.

Observação

Não use as IDs da página Registros de Aplicativo, pois ela mostra valores diferentes. A "ID do aplicativo" com contorno vermelho é a AppID e a "ID do objeto" é a ServiceID.

Você pode usar outra abordagem para encontrar essas IDs usando Get-MgServicePrincipal.

Remover entidade de serviço

Remove-ServicePrincipal -Identity <ObjectID, AppID, or DisplayName>

Definir entidade de serviço

Set-ServicePrincipal -Identity <ObjectID, AppID, or DisplayName > -DisplayName <Updated name>

Funções do aplicativo

As funções de aplicativo são um tipo especial de função de gerenciamento no Exchange Online, que só pode ser atribuído a um aplicativo. Essas funções podem ser enumeradas usando Get-ManagementRole.

Atribuições de Função

As atribuições de função de gerenciamento unem um escopo de acesso de entidade de segurança, função e recurso personalizado. Essa atribuição atua como a atribuição de permissões para uma entidade de serviço que executa uma função em um escopo.

Nova atribuição de função

New-ManagementRoleAssignment [[-Name] <String>] -Role <RoleIdParameter> -App <ObjectID, AppID, or DisplayName> -CustomResourceScope <Management Scope> (or -RecipientAdministrativeUnitScope)

Definir atribuição de função

Set-ManagementRoleAssignment [-Identity] <RoleAssignmentIdParameter> -CustomResourceScope <Management Scope> (or -RecipientAdministrativeUnitScope)

Remover atribuição de função

Para remover uma atribuição de função, consulte remover atribuição de gerenciamento.

Autorização de teste

Um cmdlet de teste pode ser usado para simular o comportamento habilitado pelas atribuições de RBAC para uma entidade de serviço específica.

Observação

Esse método exclui permissões que podem ser concedidas separadamente no Microsoft Entra ID.

Ao testar a autorização, você pode incluir um parâmetro de recurso opcional para avaliar quais permissões no escopo se aplicam a essa caixa de correio de destino. InScope will = true or false para representar if, true que a permissão se aplica a essa caixa de correio para essa entidade de serviço ou false que a entidade de serviço tem essa permissão, mas não sobre essa caixa de correio específica. Omitir esse sinalizador resulta em "Não Executar".

Os resultados do teste sempre incluem o escopo de recurso permitido para uma permissão atribuída específica.

Testar o acesso à entidade de serviço

Test-ServicePrincipalAuthorization -Identity <ObjectID, AppID, or DisplayName> [-Resource] <target mailbox>

Exemplos

Depois de usar o Connect-ExchangeOnline no PowerShell, siga estas etapas:

Exemplo um: configurando o acesso de leitura do calendário para usuários canadenses usando um escopo de gerenciamento

New-ServicePrincipal -AppId 71487acd-ec93-476d-bd0e-6c8b31831053 -ObjectId 6233fba6-0198-4277-892f-9275bf728bcc -DisplayName "example"

DisplayName   ObjectId                              AppId
-----------   ---------                              -----
example       6233fba6-0198-4277-892f-9275bf728bcc   71487acd-ec93-476d-bd0e-6c8b3183105
New-ManagementScope -Name "Canadian users" -RecipientRestrictionFilter "CustomAttribute1 -eq '012332'"

Name                 ScopeRestrictionType      Exclusive      RecipientRoot          RecipientFilter
----                 --------------------      ---------      -------------          ---------------
Canadian users    RecipientScope            False                                CustomAttribute1 -eq '012332'
New-ManagementRoleAssignment -App 6233fba6-0198-4277-892f-9275bf728bcc -Role "Application Calendars.Read" -CustomResourceScope "Canadian users"

Name                      Role                 RoleAssigneeName       RoleAssigneeType        AssignmentMethod
----                      ----                 ----------------       ----------------        ----------------
Application Calendar...   Application Ca...    6233fba6-0198-...      ServicePrincipal        Direct

Exemplo dois: Configurando o Mail.Read para todas as caixas de correio da Unidade de Administração da Europa

New-ServicePrincipal -AppId eb19847b-5563-42ea-b719-ea47cb0cf4b3 -ObjectId 59b7c6cb-58d3-4ee8-a409-8c1f9dbb5d36 -DisplayName "example"

DisplayName    ObjectId                                  AppId
-----------    ---------                                  -----
example        59b7c6cb-58d3-4ee8-a409-8c1f9dbb5d36       eb19847b-5563-42ea-b719-ea47cb0cf4b3
New-ManagementRoleAssignment -App 59b7c6cb-58d3-4ee8-a409-8c1f9dbb5d36 -Role "Application Mail.Read" -RecipientAdministrativeUnitScope 4d819ce9-9257-44d7-af20-68a49e6697f4

Name                         Role                RoleAssigneeName         RoleAssigneeType             AssignmentMethod
----                         ----                ----------------          ----------------            ----------------
Application Mail.Rea...      Application Ma...   59b7c6cb-58d3-...         ServicePrincipal            Direct

Exemplo três: testando permissões atribuídas a uma entidade de serviço

Test-ServicePrincipalAuthorization -Resource b -Identity "DemoB" |Format-Table

RoleName                      GrantedPermissions          AllowedResourceScope        ScopeType                 InScope
--------                      ------------------          --------------------        ---------                 ------
Application Mail.Read         Mail.Read                   Scope-MESGaDN                CustomRecipientScope     False
Application Calendars.Read    Calendars.Read              Scope-DL1                    CustomRecipientScope     False
Application Contacts.Read     Contacts.Read               Scope-MESGa                  CustomRecipientScope     False

Limitações

  • Os aplicativos não podem se tornar membros de um Grupo de Funções.
  • As funções de aplicativo só podem ser atribuídas a entidades de serviço.
  • As funções do aplicativo não podem ser copiadas ou derivadas.
  • Escopos de gerenciamento exclusivos não restringem o acesso ao aplicativo.
  • As alterações nas permissões do aplicativo estão sujeitas à manutenção do cache que varia entre 30 minutos e 2 horas, dependendo do uso recente do aplicativo. Quando você testa configurações, o comando test ignora esse cache. O cache de um aplicativo sem chamadas de entrada para APIs é redefinido após 30 minutos. O cache de um aplicativo ativo é mantido ativo por até 2 horas.

Protocolos com suporte

  • MS Graph
  • EWS

Funções de aplicativo com suporte

Nome Protocolo Lista de permissões Descrição
Application Mail.Read MS Graph Mail.Read Permite que o aplicativo leia emails em todas as caixas de correio sem um usuário conectado.
Application Mail.ReadBasic MS Graph Mail.ReadBasic Permite que o aplicativo leia emails, exceto o corpo, previewBody, anexos e quaisquer propriedades estendidas em todas as caixas de correio sem um usuário conectado
Application Mail.ReadWrite MS Graph Mail.ReadWrite Permite que o aplicativo crie, leia, atualize e exclua emails em todas as caixas de correio sem um usuário conectado. Não inclui permissão para enviar emails.
Application Mail.Send MS Graph Mail.Send Permite ao aplicativo enviar emails como qualquer usuário sem um usuário conectado.
Application MailboxSettings.Read MS Graph MailboxSettings.Read Permite que o aplicativo leia as configurações da caixa de correio do usuário em todas as caixas de correio sem um usuário conectado.
Application MailboxSettings.ReadWrite MS Graph MailboxSettings.ReadWrite Permite que o aplicativo crie, leia, atualize e exclua as configurações de caixa de correio do usuário em todas as caixas de correio sem um usuário conectado.
Application Calendars.Read MS Graph Calendars.Read Permite ao aplicativo ler eventos de todos os calendários sem um usuário conectado.
Application Calendars.ReadWrite MS Graph Calendars.ReadWrite Permite ao aplicativo criar, ler, atualizar e excluir eventos de todos os calendários sem um usuário conectado.
Application Contacts.Read MS Graph Contacts.Read Permite ao aplicativo ler todos os contatos em todas as caixas de correio sem um usuário conectado.
Application Contacts.ReadWrite MS Graph Contacts.ReadWrite Permite ao aplicativo criar, ler, atualizar e excluir todos os contatos em todas as caixas de correio sem um usuário conectado.
Application MailboxFolder.Read MS Graph MailboxFolder.Read.All Permite que o aplicativo leia todas as pastas de caixa de correio dos usuários sem um usuário conectado.
Application MailboxFolder.ReadWrite MS Graph MailboxFolder.ReadWrite.All Permite que o aplicativo leia e grave todas as pastas da caixa de correio dos usuários sem um usuário conectado.
Application MailboxItem.Read MS Graph MailboxItem.Read.All Permite que o aplicativo leia todos os itens de caixa de correio dos usuários sem um usuário conectado.
Application MailboxItem.Export MS Graph MailboxItem.Export.All Permite que o aplicativo exporte todos os itens de caixa de correio dos usuários sem o usuário conectado.
Application MailboxItem.ImportExport MS Graph MailboxItem.ImportExport.All Permite que o aplicativo exporte e importe todos os itens de caixa de correio dos usuários sem o usuário conectado.
Application Mail Full Access MS Graph Mail.ReadWrite, Mail.Send Permite que o aplicativo crie, leia, atualize e exclua emails em todas as caixas de correio e envie emails como qualquer usuário sem um usuário conectado.
Application Exchange Full Access MS Graph Mail.ReadWrite, Mail.Send, MailboxSettings.ReadWrite, Calendars.ReadWrite, Contacts.ReadWrite Sem um usuário conectado: permite que o aplicativo crie, leia, atualize e exclua emails em todas as caixas de correio e envie emails como qualquer usuário. Permite que o aplicativo crie, leia, atualize e exclua as configurações de caixa de correio do usuário em todas as caixas de correio. Permite que o aplicativo crie, leia, atualize e exclua eventos de todos os calendários. Permite que o aplicativo crie, leia, atualize e exclua todos os contatos em todas as caixas de correio.
Application EWS.AccessAsApp EWS EWS.AccessAsApp Permite que o aplicativo use os Serviços Web do Exchange com acesso total a todas as caixas de correio.
Application SMTP.SendAsApp MS Graph SMTP.SendAsApp Permite que o aplicativo use o envio de cliente SMTP para enviar emails para a pasta caixa de saída do usuário.
Application MailboxConfigItem.Read MS Graph MailboxConfigItem.Read Permite que o aplicativo leia objetos UserConfiguration sem um usuário conectado.
Application MailboxConfigItem.ReadWrite MS Graph MailboxConfigItem.ReadWrite Permite que o aplicativo leia, grave, atualize e exclua objetos UserConfiguration sem um usuário conectado.
Application MailTips.ReadBasic.All MS Graph MailTips.ReadBasic.All Permite que o aplicativo acesse apenas metadados de Dicas de Email sem expor o conteúdo de email, sem um usuário conectado

Você pode notar que essas funções representam permissões do Microsoft Graph com as quais você pode consentir em outro lugar na plataforma de identidade do Azure. Essas permissões têm o mesmo efeito que as permissões do Graph, exceto para essas atribuições de função que permitem acesso granular com escopo de recurso.

Perguntas frequentes

Por que meu aplicativo ainda tem acesso a caixas de correio que não são concedidas pelo escopo que usei no RBAC do Aplicativo do Exchange Online?

Você precisa garantir que removeu as permissões sem escopo em toda a organização atribuídas no Microsoft Entra ID. As permissões atribuídas usando o Aplicativo RBAC atuam além das concessões que você faz no Microsoft Entra ID. As permissões do Microsoft Entra só podem ser restringidas usando Políticas de Acesso ao Aplicativo. Em outras palavras, as permissões atribuídas são uma operação de união entre as permissões do Microsoft Entra ID e as permissões atribuídas no RBAC do Exchange Online. Cada autoridade pode agir de forma independente.

Por exemplo, se sua Entidade de Serviço tiver Mail.Read concedido no Microsoft Entra ID e você configurar uma permissão com Mail.Read escopo de recurso no RBAC do Aplicativo, é importante que você remova a atribuição de Mail.Read do Microsoft Entra ID. Caso contrário, a união de uma concessão sem escopo Mail.Read do Microsoft Entra e uma concessão com Mail.Read escopo de recurso no Aplicativo RBAC resultará em nenhum escopo de recurso eficaz.

Como posso exibir e modificar todas as permissões do aplicativo em uma interface?

Para garantir que os administradores tenham uma visão consolidada das permissões do aplicativo, mostramos essas permissões concedidas no Exchange Online em uma experiência de administrador do Microsoft Entra. Esse recurso está chegando, fique ligado.

Como migrar das Políticas de Acesso ao Aplicativo para o RBAC para Aplicativos?

Com as Políticas de Acesso ao Aplicativo, você tem uma entidade de serviço, consentimento de permissões no Azure e uma política associada a uma entidade de serviço no Exchange Online. Embora você possa reestruturar seu mecanismo de escopo usando Escopos de Gerenciamento do Exchange ou Unidades Administrativas, aqui estão algumas diretrizes sobre como reutilizar grupos em uma Política de Acesso ao Aplicativo como o escopo da concessão do RBAC para Aplicativos. Esse processo não resulta em nenhuma interrupção de uso para seu aplicativo.

Etapas de migração:

  1. Crie um novo escopo de gerenciamento, que aponta para o grupo de escopo da Política de Acesso ao Aplicativo.

  2. Crie o objeto de ponteiro da entidade de serviço.

  3. Atribua as permissões necessárias à entidade de serviço no Exchange Online com a restrição de escopo de gerenciamento.

  4. Remova o consentimento para a permissão no Azure.

  5. Remover a política de acesso ao aplicativo.

    Ao criar o escopo de gerenciamento na etapa 1, você usa um filtro de destinatário com o parâmetro MemberOfGroupde filtro . Veja um exemplo:

    "MemberOfGroup -eq 'CN=mesga20220818210551,OU=Fabrikam346.onmicrosoft.com,OU=Microsoft Exchange Hosted Organizations,DC=NAMPR00A001,DC=prod,DC=outlook,DC=com'"

Observação

Esse parâmetro de filtro usa o nome distinto do grupo, que você pode localizar usando Get-Group cmdlets.

Limitações:

  • Os membros do grupo aninhados são considerados fora do escopo. Somente a associação direta ao grupo faz com que o membro seja considerado no escopo da autorização.
  • Grupos do Microsoft 365, Mail-Enabled Grupos de Segurança e Listas de Distribuição são suportados.

Como o RBAC para Aplicativos funciona junto com as Políticas de Acesso ao Aplicativo?

Compatibilidade com a Política de Acesso ao Aplicativo:

O RBAC para Aplicativos substitui as Políticas de Acesso ao Aplicativo.

A interoperabilidade de autorização pode ser descrita da seguinte forma:

  • As políticas de acesso ao aplicativo restringem SOMENTE as permissões atribuídas no Microsoft Entra ID.

  • O RBAC para Aplicativos oferece uma expressão alternativa de autorização com um escopo de recurso associado.

  • Um aplicativo pode ter permissões consentidas do Microsoft Entra e atribuições RBAC. Esperamos esse caso quando um aplicativo tiver (por exemplo) configurações de Mail.Read arquivo Mail.Send.

  • Os consentimentos de permissão são aditivos.

Exemplo um: consentimentos de 2 sistemas:

  • Um aplicativo tem Mail.Read no Microsoft Entra ID.
  • Este aplicativo tem como escopo o grupo de segurança habilitado para email 1 usando uma Política de Acesso ao Aplicativo.
  • O mesmo aplicativo consentiu Calendar.Read para o Escopo de Gerenciamento 1 no RBAC para Aplicativos.
  • A caixa de correio A está no grupo de segurança 1 habilitado para email.
  • A Caixa de Correio B está no escopo do Escopo de Gerenciamento 1.

Acesso do MS Graph a um ponto de extremidade que exige e Mail.ReadCalendar.Read para o Aplicativo 1:

  • Caixa de correio de direcionamento A: falha.
  • Caixa de correio de direcionamento B: falha.

Esse ponto de extremidade precisa de ambos e Mail.ReadCalendar.Read. Embora o aplicativo tenha essas permissões individualmente em duas caixas de correio separadas, ele não tem ambas as permissões em uma caixa de correio.

Exemplo dois: atribuir a mesma permissão duas vezes:

  • Um aplicativo tem Mail.Read no Microsoft Entra ID.
  • Este aplicativo tem como escopo o grupo de segurança habilitado para email 1 usando uma política de Acesso ao Aplicativo.
  • O mesmo aplicativo consentiu Mail.Read para o Escopo de Gerenciamento 1 usando RBAC para Aplicativos.
  • A caixa de correio A está no grupo de segurança 1 habilitado para email.
  • O Escopo de Gerenciamento 1 permite acesso a todas as caixas de correio, exceto a Caixa de Correio A (de acordo com alguns filtros como Alias -ne mbxa).

Acesso do MS Graph a um ponto de extremidade necessário Mail.Read para o Aplicativo 1:

  • Caixa de correio de direcionamento A: permitir.
  • Caixa de correio de direcionamento B: permitir.

Enquanto o Mail.Read do Microsoft Entra-only permite acesso à Caixa de Correio A, a atribuição RBAC permite acesso a tudo, exceto A. Com efeito, essa atribuição permite acesso a tudo porque "A e Não A" significa tudo.

Embora tenhamos descrito esses casos extremos para integridade, não esperamos que as Políticas de Acesso ao Aplicativo sejam normalmente usadas com RBAC para Aplicativos. As permissões de toda a organização devem ser atribuídas no Microsoft Entra ID, enquanto as permissões no escopo do recurso devem ser concedidas usando o RBAC para Aplicativos.

Quantos aplicativos têm suporte do RBAC for Applications?

Você pode ter até 10.000 aplicativos por organização usando o RBAC para Aplicativos. Informe-nos se esse limite representa um problema para você. Criamos o RBAC for Applications de uma maneira altamente escalonável para acomodar as necessidades de nossos maiores clientes.

Por que a Descoberta Automática não está funcionando?

Atualmente, o serviço de Descoberta Automática não pode ser acessado ao usar funções de aplicativo RBAC.

Se eu excluir uma entidade de serviço no Microsoft Entra, o que acontece no Exchange?

As entidades de serviço excluídas no Microsoft Entra também são removidas automaticamente no Exchange. Essa remoção exclui todas as atribuições feitas a essas entidades de serviço, mas não afeta os escopos de gerenciamento.

Comentários sobre este recurso

Os comentários sobre esse recurso podem ser compartilhados com exoapprbacpreview@microsoft.como .