Exchange Online e o Role Based Access Control (RBAC) parte II
By: Caio Ribeiro César
O intuito deste post é clarificar customizações em cenários de RBAC em ambientes Exchange Online (EXO).
Anteriormente, discutimos as funcionalidades disponíveis em RBAC. Vamos entrar em mais detalhes nas questões de customizações e RBAC vs. cmdlets específicos.
Da última vez, explicamos que o RBAC funciona em camadas:
1) Expandimos o RoleGroup “Compliance Management”;
2) Listamos as roles atribuídas ao RoleGroup;
3) Expandimos os RoleAssignments de uma role em questão (Data Loss Prevention).
Vamos então um pouco além dos RoleAssignments. Como podemos ver, a última camada de permissionamento em RBAC é a de permissões individuais ou “cmdlets/parameters” específicos:
RoleGroup
Expandindo os membros do RoleGroup “Discovery Management” e também seus RoleAssignments:
Get-RoleGroup "Discovery Management" | Select-Object -ExpandProperty RoleAssignments
Legal Hold-Discovery Management
Mailbox Search-Discovery Management
Get-RoleGroupMember "Discovery Management"
Name RecipientType
---- -------------
caioc UserMailbox
Conclusão: o RoleGroup "Discovery Management" possui dois RoleAssignments: Legal Hold-Discovery Management & Mailbox Search-Discovery Management. O usuário “caioc” é membro deste RoleGroup, logo possui as permissões atribuídas.
ManagementRoleAssignment
Expandindo o ManagementRoleAssignment “Legal Hold-Discovery Management”:
Get-ManagementRoleAssignment "Legal Hold-Discovery Management" | fl
RunspaceId :
DataObject : Legal Hold-Discovery Management
User : Discovery Management
AssignmentMethod : Direct
Identity : Legal Hold-Discovery Management
EffectiveUserName : All Group Members
AssignmentChain :
RoleAssigneeType : RoleGroup
RoleAssignee : Discovery Management
Role : Legal Hold
RoleAssignmentDelegationType : Regular
CustomRecipientWriteScope :
CustomConfigWriteScope :
RecipientReadScope : Organization
ConfigReadScope : OrganizationConfig
RecipientWriteScope : Organization
ConfigWriteScope : None
Enabled : True
RoleAssigneeName : Discovery Management
IsValid : True
ExchangeVersion : 0.11 (14.0.550.0)
Name : Legal Hold-Discovery Management
ObjectClass : {top, msExchRoleAssignment}
Conclusão: O ManagementRoleAssignment possui uma única role atribuída: Legal Hold.
ManagementRole
Expandindo o ManagementRole “Legal Hold”:
Get-ManagementRole "Legal Hold" | fl
RoleEntries : {(Microsoft.Exchange.Management.PowerShell.E2010) Set-Mailbox -AccountDisabled -Confirm -ElcProcessingDisabled -Force
-Identity -InactiveMailbox -LitigationHoldDate -LitigationHoldDuration -LitigationHoldEnabled -LitigationHoldOwner
-RecalculateInactiveMailbox -RetentionComment -RetentionPolicy -RetentionUrl -SingleItemRecoveryEnabled
-StsRefreshTokensValidFrom, (Microsoft.Exchange.Management.PowerShell.E2010) Get-MailboxPreferredLocation -Identity,
(Microsoft.Exchange.Management.PowerShell.E2010) Start-AuditAssistant -Identity,
(Microsoft.Exchange.Management.PowerShell.E2010) Get-Mailbox -Anr -ErrorAction -ErrorVariable -Filter -Identity -MailboxPlan
-OrganizationalUnit -OutBuffer -OutVariable -PublicFolder -RecipientTypeDetails -ResultSize -SortBy -WarningAction
-WarningVariable...}
RoleType : LegalHold
ImplicitRecipientReadScope : Organization
ImplicitRecipientWriteScope : Organization
ImplicitConfigReadScope : OrganizationConfig
ImplicitConfigWriteScope : None
IsRootRole : True
IsEndUserRole : False
MailboxPlanIndex :
Description : This role enables administrators to configure whether data within a mailbox should be retained for litigation purposes in an organization.
Parent :
IsDeprecated : False
AdminDisplayName :
ExchangeVersion : 0.12 (14.0.451.0)
Name : Legal Hold
Identity : Legal Hold
Conclusão: O ManagementRole “Legal Hold” possui diversas entradas (ManagementRoleEntries). Temos também a descrição do permissionamento da role – admins com tais permissões podem configurar litigation na organização.
ManagementRoleEntry
Expandindo ManagementRoleEntries do ManagementRole “Legal Hold”:
Get-ManagementRoleEntry "Legal Hold\*"
Name Role Parameters
---- ---- ----------
Set-Mailbox Legal Hold {AccountDisabled, Confirm, ElcProcessingDisabled, Force...}
Get-MailboxPreferredLocation Legal Hold {Identity}
Start-AuditAssistant Legal Hold {Identity}
Get-Mailbox Legal Hold {Anr, ErrorAction, ErrorVariable, Filter...}
Get-MailboxSearch Legal Hold {ErrorAction, ErrorVariable, Identity, InPlaceHoldIdentity...}
Get-Recipient Legal Hold {Anr, AuthenticationType, BookmarkDisplayName, ErrorAction...}
Get-User Legal Hold {Anr, ErrorAction, ErrorVariable, Filter...}
New-MailboxSearch Legal Hold {Confirm, Description, ErrorAction, ErrorVariable...}
Remove-MailboxSearch Legal Hold {Confirm, ErrorAction, ErrorVariable, Identity...}
Set-MailboxSearch Legal Hold {Confirm, Description, ErrorAction, ErrorVariable...}
Write-AdminAuditLog Legal Hold {Comment, Confirm, ErrorAction, ErrorVariable...}
GetDiscoverySearchConfigura... Legal Hold {}
GetHoldOnMailboxes Legal Hold {}
SetHoldOnMailboxes Legal Hold {}
Get-UnifiedAuditSetting Legal Hold {ErrorAction, ErrorVariable, Identity, OutBuffer...}
Set-UnifiedAuditSetting Legal Hold {ErrorAction, ErrorVariable, Identity, OutBuffer...}
Conclusão: Os comandos exportados (e seus respectivos parâmetros) são disponibilizados para o ManagementRole “Legal Hold”. Consequentemente, o usuário “caioc” possui a permissão de executar os comandos.
Agora que as camadas foram explicadas, vamos customizar a criação de um novo grupo e suas respectivas permissões.
1) Criação do ManagementRole customizado com os cmdlets que os admins irão executar:
New-ManagementRole -Name "Message Trace Somente Pshell" -Parent "Transport Hygiene"
Name RoleType
---- --------
Message Trace Somente Pshell TransportHygiene
2) Customização da ManagementRole, editando os comandos disponibilizados em “ManagementRoleEntry”:
Get-ManagementRoleEntry "Message Trace Somente Pshell\*" | Where { $_.Name -NotLike "Get*" } | Remove-ManagementRoleEntry
3) Criação do grupo com a role customizada seus respectivos membros:
New-RoleGroup -Name "Message Tracer Simples" -ManagedBy "caioc" -Members "olavo" -Roles "Message Trace Somente Pshell"
Name AssignedRoles RoleAssignments ManagedBy
---- ------------- --------------- ---------
Message Tracer Simples {Message Trace Somente Pshell} {c4iocesar.onmicrosoft.com\Message Trace Somente Pshell-Message Tracer Simples} {caioc}
As customizações também existem para usuários finais (non-admin permissions). Neste exemplo, bloqueamos o usuário final (Olavo) para bloquear a criação de uma “Fwd Rule”:
New-ManagementRole -Parent MyBaseOptions -Name "Block Forward Emails"
Set-ManagementRoleEntry "Block Forward Emails\set-mailbox” -parameters DeliverToMailboxAndForward,ForwardingAddress,ForwardingSmtpAddress -RemoveParameter
Set-ManagementRoleEntry "Block Forward Emails\New-InboxRule" -Parameters ForwardAsAttachmentTo,ForwardTo,RedirectTo –RemoveParameter
New-ManagementRoleAssignment -Role "Block Forward Emails" -User Olavo
Get-ManagementRoleAssignment block* | fl User,Identity
User : olavo
Identity : Block Forward Emails-olavo
Resultado:
Mais informações
Para coletar informações de Roles atribuídas aos usuários da organização:
Get-ManagementRoleAssignment -GetEffectiveUsers | Export-Csv Users.csv
Para coletar informações de Roles atribuídas a usuários específicos:
Get-ManagementRoleAssignment -GetEffectiveUsers | Where { $_.EffectiveUserName -Eq "admin" }
Comments
- Anonymous
March 29, 2017
Life is short, and this article saved vallbaue time on this Earth.- Anonymous
April 05, 2017
Thank you :)
- Anonymous