Microsoft 365: configuração de serviços online para usar o Azure Rights Management
Use as seções a seguir para ajudar a configurar o Exchange Online, o Microsoft SharePoint e o Microsoft OneDrive para uso com o serviço Azure Rights Management da Proteção de Informações do Azure.
Exchange Online: configuração do IRM
Para informações sobre como o Exchange Online funciona com o serviço Azure Rights Management, veja Exchange Online e Exchange Server na seção Compatibilidade dos aplicativos e serviços do Office com o Azure Rights Management.
O Exchange Online pode já estar habilitado para usar o serviço Azure Rights Management. Para verificar, execute os seguintes comandos:
Se esta for a primeira vez que você usa o Windows PowerShell para Exchange Online em sua máquina, configure o Windows PowerShell para executar scripts assinados. Inicie sua sessão do Windows PowerShell utilizando a opção Run as administrator, depois digite:
Set-ExecutionPolicy RemoteSigned
Pressione Y para confirmar.
Em sua sessão do Windows PowerShell, conecte-se ao Exchange Online usando uma conta habilitada para acesso remoto ao Shell. Como padrão, todas as contas criadas no Exchange Online são habilitadas para acesso remoto ao Shell, mas isso pode ser desabilitado (e habilitado) usando o comando Set-User <UserIdentity> -RemotePowerShellEnabled.
Para entrar, primeiro digite:
Connect-ExchangeOnline
Em seguida, na caixa de diálogo Windows PowerShell credential request, forneça seu nome de usuário e senha do Microsoft 365.
Execute o comando Get-IRMConfiguration para visualizar sua configuração do Exchange Online para o serviço de proteção:
Get-IRMConfiguration
Na saída, localize o valor AzureRMSLicensingEnabled:
Se o AzureRMSLicensingEnabled estiver definido como True, o Exchange Online já está habilitado para o serviço Azure Rights Management.
Se o AzureRMSLicensingEnabled estiver definido como False, execute o seguinte comando para habilitar o Exchange Online para o serviço Azure Rights Management:
Set-IRMConfiguration -AzureRMSLicensingEnabled $true
Para testar se o Exchange Online foi configurado com êxito, execute o seguinte comando:
Test-IRMConfiguration -Sender <user email address>
Por exemplo: Test-IRMConfiguration -Sender adams@contoso.com
Esse comando executa uma série de verificações que inclui a verificação da conectividade com o serviço, a recuperação da configuração, a recuperação de URIs, licenças e outros modelos. Na sessão do Windows PowerShell, os resultados de cada um serão exibidos e, no final, se tudo passar por estas verificações: OVERALL RESULT: PASS
Quando o Exchange Online está habilitado para usar o serviço Azure Rights Management, é possível configurar os seguintes recursos:
Purview Message Encryption usando regras de fluxo de mensagens.
Criptografia usando políticas de prevenção de perda de dados (DLP).
Etiquetas de confidencialidade com criptografia usando o Outlook na web, Mac, iOS e Android.
Políticas de rotulagem automática no Exchange para aplicar rótulos de confidencialidade com criptografia a mensagens de email e caixa postal protegidas.
SharePoint no Microsoft 365 e OneDrive: configuração do IRM
Para obter informações sobre como o IRM do SharePoint Online funciona com o serviço Azure Rights Management, veja SharePoint no Microsft 365 e SharePoint Server na seção Rights Management protection desta documentação.
Para configurar o SharePoint no Microsft 365 e no OneDrive para dar compatibilidade com o serviço Azure Rights Management, primeiro é preciso habilitar o serviço IRM (Gerenciamento de Direitos de Informação) para o SharePoint usando o centro de administração do SharePoint. Em seguida, os proprietários de sites poderão proteger com o IRM suas listas e bibliotecas de documentos do SharePoint e os usuários poderão proteger com o IRM suas bibliotecas do OneDrive, para que os documentos salvos e compartilhados com outras pessoas sejam protegidos automaticamente pelo serviço Azure Rights Management.
Observação
As bibliotecas protegidas por IRM para SharePoint no Microsoft 365 e no OneDrive exigem a versão mais recente do novo cliente de sincronização do OneDrive (OneDrive.exe) e a versão do cliente do RMS do Centro de Download da Microsoft. Instale esta versão do cliente RMS mesmo se tiver instalado o cliente da Proteção de Informações do Azure. Para obter mais informações sobre esse cenário de implantação, veja Implantar o novo cliente de sincronização do OneDrive em um ambiente corporativo.
Para habilitar o serviço IRM (Gerenciamento de Direitos de Informação) para o SharePoint, veja as instruções a seguir na documentação do Office:
Essa configuração é feita pelo administrador do Office 365.
Configurar o IRM para bibliotecas e listas
Depois de habilitar o serviço IRM para o SharePoint, os proprietários de sites poderão proteger suas bibliotecas e listas de documentos do SharePoint com o IRM. Para mais instruções, veja o seguinte no site do Office:
Essa configuração é feita pelo administrador do site do SharePoint.
Configurar o IRM para o OneDrive
Depois de habilitar o serviço IRM para o SharePoint Online, a biblioteca de documentos do OneDrive dos usuários pode ser configurada para a proteção do Rights Management. Os usuários podem realizar essa configuração sozinhos usando o site do OneDrive. Embora os administradores não possam configurar essa proteção para eles usando o Centro de administração do SharePoint, você pode fazer isso usando o Windows PowerShell.
Observação
Para mais informações sobre como configurar o OneDrive, veja a documentação do OneDrive.
Configuração para usuários
Forneça aos usuários estas instruções para que eles possam configurar o OneDrive e proteger seus arquivos corporativos.
Inicie sessão no Microsoft 365 com sua conta corporativa ou de estudante e acesse o site do OneDrive.
No painel de navegação, na parte inferior, selecione Return to classic OneDrive.
Selecione o ícone Settings. No painel Settings, se a Ribbon estiver definida como Off, selecione essa configuração para ativar a faixa de opções.
Para configurar todos os arquivos do OneDrive para proteção, selecione a guia LIBRARY na faixa de opções e selecione Configurações da Biblioteca.
Na página Documents > Settings, na seção Permissions and Management, clique em Information Rights Management.
Na página Information Rights Management Settings, selecione a caixa de seleção Restrict permissions on this library on download. Especifique sua escolha de nome e uma descrição para as permissões e, como opção, clique em SHOW OPTIONS para definir configurações opcionais e, em seguida, clique em OK.
Como essa configuração depende dos usuários e não de um administrador para proteger a biblioteca do OneDrive com o IRM, instrua os usuários sobre os benefícios dessa proteção de arquivos e como fazer isso. Por exemplo, explique que quando eles compartilham um documento do OneDrive, somente as pessoas autorizadas podem acessá-lo com as restrições configuradas, mesmo quando o arquivo é renomeado e copiado para outro lugar.
Configuração para administradores
Embora não seja possível configurar o IRM para o OneDrive dos usuários usando o Centro de administração do SharePoint, você pode fazer isso usando o Windows PowerShell. Para habilitar o IRM para essas bibliotecas, siga estas etapas:
Baixe e instale o SharePoint Client Components SDK.
Baixe e instale o SharePoint Management Shell.
Copie o conteúdo do script a seguir e nomeie o arquivo Set-IRMOnOneDriveForBusiness.ps1 na sua máquina.
**Isenção de responsabilidade**: Este script de exemplo não é suportado em nenhum programa ou serviço de suporte padrão da Microsoft. Esse script de exemplo é fornecido no estado em que se encontra, sem garantias de nenhum tipo.
# Requires Windows PowerShell version 3 <# Description: Configures IRM policy settings for OneDrive and can also be used for SharePoint libraries and lists Script Installation Requirements: SharePoint Client Components SDK https://www.microsoft.com/download/details.aspx?id=42038 SharePoint Management Shell https://www.microsoft.com/download/details.aspx?id=35588 ====== #> # URL will be in the format https://<tenant-name>-admin.sharepoint.com $sharepointAdminCenterUrl = "https://contoso-admin.sharepoint.com" $tenantAdmin = "admin@contoso.com" $webUrls = @("https://contoso-my.sharepoint.com/personal/user1_contoso_com", "https://contoso-my.sharepoint.com/personal/user2_contoso_com", "https://contoso-my.sharepoint.com/personal/user3_contoso_com") <# As an alternative to specifying the URLs as an array, you can import them from a CSV file (no header, single value per row). Then, use: $webUrls = Get-Content -Path "File_path_and_name.csv" #> $listTitle = "Documents" function Load-SharePointOnlineClientComponentAssemblies { [cmdletbinding()] param() process { # assembly location: C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI try { Write-Verbose "Loading Assembly: Microsoft.Office.Client.Policy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.Office.Client.Policy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.Office.Client.TranslationServices, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.Office.Client.TranslationServices, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.DocumentManagement, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.DocumentManagement, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Publishing, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Publishing, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Runtime, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Runtime, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Search.Applications, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Search.Applications, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Search, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Search, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Taxonomy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Taxonomy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.UserProfiles, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.UserProfiles, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null return $true } catch { if($_.Exception.Message -match "Could not load file or assembly") { Write-Error -Message "Unable to load the SharePoint Server 2013 Client Components.`nDownload Location: https://www.microsoft.com/download/details.aspx?id=42038" } else { Write-Error -Exception $_.Exception } return $false } } } function Load-SharePointOnlineModule { [cmdletbinding()] param() process { do { # Installation location: C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell $spoModule = Get-Module -Name Microsoft.Online.SharePoint.PowerShell -ErrorAction SilentlyContinue if(-not $spoModule) { try { Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking return $true } catch { if($_.Exception.Message -match "Could not load file or assembly") { Write-Error -Message "Unable to load the SharePoint Online Management Shell.`nDownload Location: https://www.microsoft.com/download/details.aspx?id=35588" } else { Write-Error -Exception $_.Exception } return $false } } else { return $true } } while(-not $spoModule) } } function Set-IrmConfiguration { [cmdletbinding()] param( [parameter(Mandatory=$true)][Microsoft.SharePoint.Client.List]$List, [parameter(Mandatory=$true)][string]$PolicyTitle, [parameter(Mandatory=$true)][string]$PolicyDescription, [parameter(Mandatory=$false)][switch]$IrmReject, [parameter(Mandatory=$false)][DateTime]$ProtectionExpirationDate, [parameter(Mandatory=$false)][switch]$DisableDocumentBrowserView, [parameter(Mandatory=$false)][switch]$AllowPrint, [parameter(Mandatory=$false)][switch]$AllowScript, [parameter(Mandatory=$false)][switch]$AllowWriteCopy, [parameter(Mandatory=$false)][int]$DocumentAccessExpireDays, [parameter(Mandatory=$false)][int]$LicenseCacheExpireDays, [parameter(Mandatory=$false)][string]$GroupName ) process { Write-Verbose "Applying IRM Configuration on '$($List.Title)'" # reset the value to the default settings $list.InformationRightsManagementSettings.Reset() $list.IrmEnabled = $true # IRM Policy title and description $list.InformationRightsManagementSettings.PolicyTitle = $PolicyTitle $list.InformationRightsManagementSettings.PolicyDescription = $PolicyDescription # Set additional IRM library settings # Do not allow users to upload documents that do not support IRM $list.IrmReject = $IrmReject.IsPresent $parsedDate = Get-Date if([DateTime]::TryParse($ProtectionExpirationDate, [ref]$parsedDate)) { # Stop restricting access to the library at <date> $list.IrmExpire = $true $list.InformationRightsManagementSettings.DocumentLibraryProtectionExpireDate = $ProtectionExpirationDate } # Prevent opening documents in the browser for this Document Library $list.InformationRightsManagementSettings.DisableDocumentBrowserView = $DisableDocumentBrowserView.IsPresent # Configure document access rights # Allow viewers to print $list.InformationRightsManagementSettings.AllowPrint = $AllowPrint.IsPresent # Allow viewers to run script and screen reader to function on downloaded documents $list.InformationRightsManagementSettings.AllowScript = $AllowScript.IsPresent # Allow viewers to write on a copy of the downloaded document $list.InformationRightsManagementSettings.AllowWriteCopy = $AllowWriteCopy.IsPresent if($DocumentAccessExpireDays) { # After download, document access rights will expire after these number of days (1-365) $list.InformationRightsManagementSettings.EnableDocumentAccessExpire = $true $list.InformationRightsManagementSettings.DocumentAccessExpireDays = $DocumentAccessExpireDays } # Set group protection and credentials interval if($LicenseCacheExpireDays) { # Users must verify their credentials using this interval (days) $list.InformationRightsManagementSettings.EnableLicenseCacheExpire = $true $list.InformationRightsManagementSettings.LicenseCacheExpireDays = $LicenseCacheExpireDays } if($GroupName) { # Allow group protection. Default group: $list.InformationRightsManagementSettings.EnableGroupProtection = $true $list.InformationRightsManagementSettings.GroupName = $GroupName } } end { if($list) { Write-Verbose "Committing IRM configuration settings on '$($list.Title)'" $list.InformationRightsManagementSettings.Update() $list.Update() $script:clientContext.Load($list) $script:clientContext.ExecuteQuery() } } } function Get-CredentialFromCredentialCache { [cmdletbinding()] param([string]$CredentialName) #if( Test-Path variable:\global:CredentialCache ) if( Get-Variable O365TenantAdminCredentialCache -Scope Global -ErrorAction SilentlyContinue ) { if($global:O365TenantAdminCredentialCache.ContainsKey($CredentialName)) { Write-Verbose "Credential Cache Hit: $CredentialName" return $global:O365TenantAdminCredentialCache[$CredentialName] } } Write-Verbose "Credential Cache Miss: $CredentialName" return $null } function Add-CredentialToCredentialCache { [cmdletbinding()] param([System.Management.Automation.PSCredential]$Credential) if(-not (Get-Variable CredentialCache -Scope Global -ErrorAction SilentlyContinue)) { Write-Verbose "Initializing the Credential Cache" $global:O365TenantAdminCredentialCache = @{} } Write-Verbose "Adding Credential to the Credential Cache" $global:O365TenantAdminCredentialCache[$Credential.UserName] = $Credential } # load the required assemblies and Windows PowerShell modules if(-not ((Load-SharePointOnlineClientComponentAssemblies) -and (Load-SharePointOnlineModule)) ) { return } # Add the credentials to the client context and SharePoint service connection # check for cached credentials to use $o365TenantAdminCredential = Get-CredentialFromCredentialCache -CredentialName $tenantAdmin if(-not $o365TenantAdminCredential) { # when credentials are not cached, prompt for the tenant admin credentials $o365TenantAdminCredential = Get-Credential -UserName $tenantAdmin -Message "Enter the password for the Microsoft 365 admin" if(-not $o365TenantAdminCredential -or -not $o365TenantAdminCredential.UserName -or $o365TenantAdminCredential.Password.Length -eq 0 ) { Write-Error -Message "Could not validate the supplied tenant admin credentials" return } # add the credentials to the cache Add-CredentialToCredentialCache -Credential $o365TenantAdminCredential } # connect to Office365 first, required for SharePoint cmdlets to run Connect-SPOService -Url $sharepointAdminCenterUrl -Credential $o365TenantAdminCredential # enumerate each of the specified site URLs foreach($webUrl in $webUrls) { $grantedSiteCollectionAdmin = $false try { # establish the client context and set the credentials to connect to the site $script:clientContext = New-Object Microsoft.SharePoint.Client.ClientContext($webUrl) $script:clientContext.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($o365TenantAdminCredential.UserName, $o365TenantAdminCredential.Password) # initialize the site and web context $script:clientContext.Load($script:clientContext.Site) $script:clientContext.Load($script:clientContext.Web) $script:clientContext.ExecuteQuery() # load and ensure the tenant admin user account if present on the target SharePoint site $tenantAdminUser = $script:clientContext.Web.EnsureUser($o365TenantAdminCredential.UserName) $script:clientContext.Load($tenantAdminUser) $script:clientContext.ExecuteQuery() # check if the tenant admin is a site admin if( -not $tenantAdminUser.IsSiteAdmin ) { try { # grant the tenant admin temporary admin rights to the site collection Set-SPOUser -Site $script:clientContext.Site.Url -LoginName $o365TenantAdminCredential.UserName -IsSiteCollectionAdmin $true | Out-Null $grantedSiteCollectionAdmin = $true } catch { Write-Error $_.Exception return } } try { # load the list orlibrary using CSOM $list = $null $list = $script:clientContext.Web.Lists.GetByTitle($listTitle) $script:clientContext.Load($list) $script:clientContext.ExecuteQuery() # ************** ADMIN INSTRUCTIONS ************** # If necessary, modify the following Set-IrmConfiguration parameters to match your required values # The supplied options and values are for example only # Example that shows the Set-IrmConfiguration command with all parameters: Set-IrmConfiguration -List $list -PolicyTitle "Protected Files" -PolicyDescription "This policy restricts access to authorized users" -IrmReject -ProtectionExpirationDate $(Get-Date).AddDays(180) -DisableDocumentBrowserView -AllowPrint -AllowScript -AllowWriteCopy -LicenseCacheExpireDays 25 -DocumentAccessExpireDays 90 Set-IrmConfiguration -List $list -PolicyTitle "Protected Files" -PolicyDescription "This policy restricts access to authorized users" } catch { Write-Error -Message "Error setting IRM configuration on site: $webUrl.`nError Details: $($_.Exception.ToString())" } } finally { if($grantedSiteCollectionAdmin) { # remove the temporary admin rights to the site collection Set-SPOUser -Site $script:clientContext.Site.Url -LoginName $o365TenantAdminCredential.UserName -IsSiteCollectionAdmin $false | Out-Null } } } Disconnect-SPOService -ErrorAction SilentlyContinue
Examine o script e faça as seguintes alterações:
Pesquise
$sharepointAdminCenterUrl
e substitua o valor do exemplo pela sua própria URL do Centro de administração do SharePoint.Você encontrará esse valor como a URL base ao acessar o centro de administração do SharePoint, com o seguinte formato: https://<nome_do_locatário>-admin.sharepoint.com
Por exemplo, se o nome do locatário for "contoso", você deve especificar: https://contoso-admin.sharepoint.com
Pesquise
$tenantAdmin
e substitua o valor do exemplo pela sua própria conta de administrador global totalmente qualificada do Microsoft 365.Esse valor é o mesmo usado para entrar no centro de administração do Microsoft 365 como o administrador global e tem o seguinte formato: nome_do_usuário@<nome do domínio do locatário>.com
Por exemplo, se o nome de usuário do administrador global do Microsoft 365 for "admin" para o domínio do locatário "contoso.com", você deve especificar: admin@contoso.com
Pesquise
$webUrls
e substitua os valores do exemplo pelas URLs da web do OneDrive dos seus usuários, adicionando ou excluindo quantas entradas forem necessárias.Como alternativa, veja os comentários no script sobre como substituir essa matriz importando um arquivo .CSV que contenha todas as URLs que você precisa configurar. Nós fornecemos outro script de amostra para pesquisar e extrair automaticamente as URLs para popular esse arquivo .CSV. Quando estiver pronto para fazer isso, use a seção Script adicional para inserir todas as URLs do OneDrive em um arquivo .CSV logo após estas etapas.
A URL da web do OneDrive do usuário tem o seguinte formato: https://<nome do locatário>-my.sharepoint.com/personal/<nome_do_usuário>_<nome do locatário>_com
Por exemplo, se o usuário no locatário contoso tiver um nome de usuário "rsimone", você deve especificar: https://contoso-my.sharepoint.com/personal/rsimone_contoso_com
Como estamos usando o script para configurar o OneDrive, não altere o valor de Documents para a
$listTitle
variável.Pesquise por
ADMIN INSTRUCTIONS
. Se você não fizer nenhuma alteração nesta seção, o OneDrive do usuário será configurado para o IRM com o título de política "Arquivos Protegidos" e a descrição "Esta política restringe o acesso a usuários autorizados". Nenhuma outra opção do IRM será definida, o que provavelmente é o mais apropriado para a maioria dos ambientes. No entanto, você pode alterar o título da política e a descrição sugeridos e também adicionar outras opções do IRM que sejam apropriadas para o seu ambiente. Confira o exemplo comentado no script para ajudá-lo a construir seu próprio conjunto de parâmetros para o comando Set-IrmConfiguration.
Salve o script e assine-o. Se você não assinar o script (mais seguro), o Windows PowerShell deverá ser configurado no computador para executar scripts não assinados. Para fazer isso, execute uma sessão do Windows PowerShell com a opção Executar como Administrador e digite: Set-ExecutionPolicy Unrestricted. No entanto, essa configuração permite que todos os scripts não assinados sejam executados (menos seguro).
Para obter mais informações sobre a assinatura de scripts do Windows PowerShell, consulte about_Signing na biblioteca de documentação do PowerShell.
Execute o script e, se for solicitado, forneça a senha da conta do administrador do Microsoft 365. Se você modificar o script e executá-lo na mesma sessão do Windows PowerShell, não será solicitado que você forneça credenciais.
Dica
Você também pode usar esse script para configurar o IRM para uma biblioteca do SharePoint. Para essa configuração, é importante habilitar a opção adicional Não permitir que os usuários carreguem documentos que não sejam compatíveis com o IRM, para garantir que a biblioteca contenha somente documentos protegidos. Para fazer isso, adicione o parâmetro -IrmReject
ao comando Set-IrmConfiguration no script.
Você também precisará modificar a variável $webUrls
(por exemplo, https://contoso.sharepoint.com) e a variável $listTitle
(por exemplo, $Reports).
Se você precisar desabilitar o IRM para as bibliotecas do OneDrive do usuário, confira a seção Script para desabilitar o IRM do OneDrive.
Script adicional para inserir todas as ULRs do OneDrive em um arquivo .CSV
Na etapa 4c acima, você pode usar o seguinte script do Windows PowerShell para extrair as URLs de todas as bibliotecas do OneDrive dos usuários e, em seguida, pode verificar, editar, se necessário, e importar no script principal.
Este script também requer o SDK dos componentes clientes do SharePoint e o Shell de Gerenciamento do SharePoint. Siga as mesmas instruções para copiar e colar o arquivo e salve-o localmente (por exemplo, "Report-OneDriveForBusinessSiteInfo.ps1"), modifique os valores $sharepointAdminCenterUrl
e $tenantAdmin
como antes e, em seguida, execute o script.
**Isenção de responsabilidade**: Este script de exemplo não é suportado em nenhum programa ou serviço de suporte padrão da Microsoft. Esse script de exemplo é fornecido no estado em que se encontra, sem garantias de nenhum tipo.
# Requires Windows PowerShell version 3
<#
Description:
Queries the search service of a Microsoft 365 tenant to retrieve all OneDrive sites.
Details of the discovered sites are written to a .CSV file (by default,"OneDriveForBusinessSiteInfo_<date>.csv").
Script Installation Requirements:
SharePoint Client Components SDK
https://www.microsoft.com/download/details.aspx?id=42038
SharePoint Management Shell
https://www.microsoft.com/download/details.aspx?id=35588
======
#>
# URL will be in the format https://<tenant-name>-admin.sharepoint.com
$sharepointAdminCenterUrl = "https://contoso-admin.sharepoint.com"
$tenantAdmin = "admin@contoso.onmicrosoft.com"
$reportName = "OneDriveForBusinessSiteInfo_$((Get-Date).ToString("yyyy-MM-dd_hh.mm.ss")).csv"
$oneDriveForBusinessSiteUrls= @()
$resultsProcessed = 0
function Load-SharePointOnlineClientComponentAssemblies
{
[cmdletbinding()]
param()
process
{
# assembly location: C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI
try
{
Write-Verbose "Loading Assembly: Microsoft.Office.Client.Policy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.Office.Client.Policy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.Office.Client.TranslationServices, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.Office.Client.TranslationServices, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.DocumentManagement, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.DocumentManagement, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Publishing, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Publishing, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Runtime, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Runtime, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Search.Applications, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Search.Applications, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Search, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Search, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Taxonomy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Taxonomy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.UserProfiles, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.UserProfiles, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
return $true
}
catch
{
if($_.Exception.Message -match "Could not load file or assembly")
{
Write-Error -Message "Unable to load the SharePoint Server 2013 Client Components.`nDownload Location: https://www.microsoft.com/download/details.aspx?id=42038"
}
else
{
Write-Error -Exception $_.Exception
}
return $false
}
}
}
function Load-SharePointOnlineModule
{
[cmdletbinding()]
param()
process
{
do
{
# Installation location: C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell
$spoModule = Get-Module -Name Microsoft.Online.SharePoint.PowerShell -ErrorAction SilentlyContinue
if(-not $spoModule)
{
try
{
Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking
return $true
}
catch
{
if($_.Exception.Message -match "Could not load file or assembly")
{
Write-Error -Message "Unable to load the SharePoint Online Management Shell.`nDownload Location: https://www.microsoft.com/download/details.aspx?id=35588"
}
else
{
Write-Error -Exception $_.Exception
}
return $false
}
}
else
{
return $true
}
}
while(-not $spoModule)
}
}
function Get-CredentialFromCredentialCache
{
[cmdletbinding()]
param([string]$CredentialName)
#if( Test-Path variable:\global:CredentialCache )
if( Get-Variable O365TenantAdminCredentialCache -Scope Global -ErrorAction SilentlyContinue )
{
if($global:O365TenantAdminCredentialCache.ContainsKey($CredentialName))
{
Write-Verbose "Credential Cache Hit: $CredentialName"
return $global:O365TenantAdminCredentialCache[$CredentialName]
}
}
Write-Verbose "Credential Cache Miss: $CredentialName"
return $null
}
function Add-CredentialToCredentialCache
{
[cmdletbinding()]
param([System.Management.Automation.PSCredential]$Credential)
if(-not (Get-Variable CredentialCache -Scope Global -ErrorAction SilentlyContinue))
{
Write-Verbose "Initializing the Credential Cache"
$global:O365TenantAdminCredentialCache = @{}
}
Write-Verbose "Adding Credential to the Credential Cache"
$global:O365TenantAdminCredentialCache[$Credential.UserName] = $Credential
}
# load the required assemblies and Windows PowerShell modules
if(-not ((Load-SharePointOnlineClientComponentAssemblies) -and (Load-SharePointOnlineModule)) ) { return }
# Add the credentials to the client context and SharePoint service connection
# check for cached credentials to use
$o365TenantAdminCredential = Get-CredentialFromCredentialCache -CredentialName $tenantAdmin
if(-not $o365TenantAdminCredential)
{
# when credentials are not cached, prompt for the tenant admin credentials
$o365TenantAdminCredential = Get-Credential -UserName $tenantAdmin -Message "Enter the password for the Office 365 admin"
if(-not $o365TenantAdminCredential -or -not $o365TenantAdminCredential.UserName -or $o365TenantAdminCredential.Password.Length -eq 0 )
{
Write-Error -Message "Could not validate the supplied tenant admin credentials"
return
}
# add the credentials to the cache
Add-CredentialToCredentialCache -Credential $o365TenantAdminCredential
}
# establish the client context and set the credentials to connect to the site
$clientContext = New-Object Microsoft.SharePoint.Client.ClientContext($sharepointAdminCenterUrl)
$clientContext.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($o365TenantAdminCredential.UserName, $o365TenantAdminCredential.Password)
# run a query against the Microsoft 365 tenant search service to retrieve all OneDrive URLs
do
{
# build the query object
$query = New-Object Microsoft.SharePoint.Client.Search.Query.KeywordQuery($clientContext)
$query.TrimDuplicates = $false
$query.RowLimit = 500
$query.QueryText = "SPSiteUrl:'/personal/' AND contentclass:STS_Site"
$query.StartRow = $resultsProcessed
$query.TotalRowsExactMinimum = 500000
# run the query
$searchExecutor = New-Object Microsoft.SharePoint.Client.Search.Query.SearchExecutor($clientContext)
$queryResults = $searchExecutor.ExecuteQuery($query)
$clientContext.ExecuteQuery()
# enumerate the search results and store the site URLs
$queryResults.Value[0].ResultRows | % {
$oneDriveForBusinessSiteUrls += $_.Path
$resultsProcessed++
}
}
while($resultsProcessed -lt $queryResults.Value.TotalRows)
$oneDriveForBusinessSiteUrls | Out-File -FilePath $reportName
Script para desabilitar o IRM do OneDrive
Use o script de exemplo a seguir se você precisar desabilitar o IRM do OneDrive dos usuários.
Este script também requer o SDK dos componentes clientes do SharePoint e o Shell de Gerenciamento do SharePoint. Copie e cole o conteúdo, salve o arquivo localmente (por exemplo, "Disable-IRMOnOneDriveForBusiness.ps1") e modifique os valores $sharepointAdminCenterUrl
e $tenantAdmin
. Especifique manualmente as URLs do OneDrive ou use o script na seção anterior para importá-las e, em seguida, execute o script.
**Isenção de responsabilidade**: Este script de exemplo não é suportado em nenhum programa ou serviço de suporte padrão da Microsoft. Esse script de exemplo é fornecido no estado em que se encontra, sem garantias de nenhum tipo.
# Requires Windows PowerShell version 3
<#
Description:
Disables IRM for OneDrive and can also be used for SharePoint libraries and lists
Script Installation Requirements:
SharePoint Client Components SDK
https://www.microsoft.com/download/details.aspx?id=42038
SharePoint Management Shell
https://www.microsoft.com/download/details.aspx?id=35588
======
#>
$sharepointAdminCenterUrl = "https://contoso-admin.sharepoint.com"
$tenantAdmin = "admin@contoso.com"
$webUrls = @("https://contoso-my.sharepoint.com/personal/user1_contoso_com",
"https://contoso-my.sharepoint.com/personal/user2_contoso_com",
"https://contoso-my.sharepoint.com/personal/person3_contoso_com")
<# As an alternative to specifying the URLs as an array, you can import them from a CSV file (no header, single value per row).
Then, use: $webUrls = Get-Content -Path "File_path_and_name.csv"
#>
$listTitle = "Documents"
function Load-SharePointOnlineClientComponentAssemblies
{
[cmdletbinding()]
param()
process
{
# assembly location: C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI
try
{
Write-Verbose "Loading Assembly: Microsoft.Office.Client.Policy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.Office.Client.Policy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.Office.Client.TranslationServices, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.Office.Client.TranslationServices, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.DocumentManagement, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.DocumentManagement, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Publishing, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Publishing, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Runtime, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Runtime, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Search.Applications, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Search.Applications, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Search, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Search, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Taxonomy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Taxonomy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.UserProfiles, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.UserProfiles, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
return $true
}
catch
{
if($_.Exception.Message -match "Could not load file or assembly")
{
Write-Error -Message "Unable to load the SharePoint Server 2013 Client Components.`nDownload Location: https://www.microsoft.com/download/details.aspx?id=42038"
}
else
{
Write-Error -Exception $_.Exception
}
return $false
}
}
}
function Load-SharePointOnlineModule
{
[cmdletbinding()]
param()
process
{
do
{
# Installation location: C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell
$spoModule = Get-Module -Name Microsoft.Online.SharePoint.PowerShell -ErrorAction SilentlyContinue
if(-not $spoModule)
{
try
{
Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking
return $true
}
catch
{
if($_.Exception.Message -match "Could not load file or assembly")
{
Write-Error -Message "Unable to load the SharePoint Online Management Shell.`nDownload Location: https://www.microsoft.com/download/details.aspx?id=35588"
}
else
{
Write-Error -Exception $_.Exception
}
return $false
}
}
else
{
return $true
}
}
while(-not $spoModule)
}
}
function Remove-IrmConfiguration
{
[cmdletbinding()]
param(
[parameter(Mandatory=$true)][Microsoft.SharePoint.Client.List]$List
)
process
{
Write-Verbose "Disabling IRM Configuration on '$($List.Title)'"
$List.IrmEnabled = $false
$List.IrmExpire = $false
$List.IrmReject = $false
$List.InformationRightsManagementSettings.Reset()
}
end
{
if($List)
{
Write-Verbose "Committing IRM configuration settings on '$($list.Title)'"
$list.InformationRightsManagementSettings.Update()
$list.Update()
$script:clientContext.Load($list)
$script:clientContext.ExecuteQuery()
}
}
}
function Get-CredentialFromCredentialCache
{
[cmdletbinding()]
param([string]$CredentialName)
#if( Test-Path variable:\global:CredentialCache )
if( Get-Variable O365TenantAdminCredentialCache -Scope Global -ErrorAction SilentlyContinue )
{
if($global:O365TenantAdminCredentialCache.ContainsKey($CredentialName))
{
Write-Verbose "Credential Cache Hit: $CredentialName"
return $global:O365TenantAdminCredentialCache[$CredentialName]
}
}
Write-Verbose "Credential Cache Miss: $CredentialName"
return $null
}
function Add-CredentialToCredentialCache
{
[cmdletbinding()]
param([System.Management.Automation.PSCredential]$Credential)
if(-not (Get-Variable CredentialCache -Scope Global -ErrorAction SilentlyContinue))
{
Write-Verbose "Initializing the Credential Cache"
$global:O365TenantAdminCredentialCache = @{}
}
Write-Verbose "Adding Credential to the Credential Cache"
$global:O365TenantAdminCredentialCache[$Credential.UserName] = $Credential
}
# load the required assemblies and Windows PowerShell modules
if(-not ((Load-SharePointOnlineClientComponentAssemblies) -and (Load-SharePointOnlineModule)) ) { return }
# Add the credentials to the client context and SharePoint service connection
# check for cached credentials to use
$o365TenantAdminCredential = Get-CredentialFromCredentialCache -CredentialName $tenantAdmin
if(-not $o365TenantAdminCredential)
{
# when credentials are not cached, prompt for the tenant admin credentials
$o365TenantAdminCredential = Get-Credential -UserName $tenantAdmin -Message "Enter the password for the Office 365 admin"
if(-not $o365TenantAdminCredential -or -not $o365TenantAdminCredential.UserName -or $o365TenantAdminCredential.Password.Length -eq 0 )
{
Write-Error -Message "Could not validate the supplied tenant admin credentials"
return
}
# add the credentials to the cache
Add-CredentialToCredentialCache -Credential $o365TenantAdminCredential
}
# connect to Office365 first, required for SharePoint cmdlets to run
Connect-SPOService -Url $sharepointAdminCenterUrl -Credential $o365TenantAdminCredential
# enumerate each of the specified site URLs
foreach($webUrl in $webUrls)
{
$grantedSiteCollectionAdmin = $false
try
{
# establish the client context and set the credentials to connect to the site
$script:clientContext = New-Object Microsoft.SharePoint.Client.ClientContext($webUrl)
$script:clientContext.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($o365TenantAdminCredential.UserName, $o365TenantAdminCredential.Password)
# initialize the site and web context
$script:clientContext.Load($script:clientContext.Site)
$script:clientContext.Load($script:clientContext.Web)
$script:clientContext.ExecuteQuery()
# load and ensure the tenant admin user account if present on the target SharePoint site
$tenantAdminUser = $script:clientContext.Web.EnsureUser($o365TenantAdminCredential.UserName)
$script:clientContext.Load($tenantAdminUser)
$script:clientContext.ExecuteQuery()
# check if the tenant admin is a site admin
if( -not $tenantAdminUser.IsSiteAdmin )
{
try
{
# grant the tenant admin temporary admin rights to the site collection
Set-SPOUser -Site $script:clientContext.Site.Url -LoginName $o365TenantAdminCredential.UserName -IsSiteCollectionAdmin $true | Out-Null
$grantedSiteCollectionAdmin = $true
}
catch
{
Write-Error $_.Exception
return
}
}
try
{
# load the list orlibrary using CSOM
$list = $null
$list = $script:clientContext.Web.Lists.GetByTitle($listTitle)
$script:clientContext.Load($list)
$script:clientContext.ExecuteQuery()
Remove-IrmConfiguration -List $list
}
catch
{
Write-Error -Message "Error setting IRM configuration on site: $webUrl.`nError Details: $($_.Exception.ToString())"
}
}
finally
{
if($grantedSiteCollectionAdmin)
{
# remove the temporary admin rights to the site collection
Set-SPOUser -Site $script:clientContext.Site.Url -LoginName $o365TenantAdminCredential.UserName -IsSiteCollectionAdmin $false | Out-Null
}
}
}
Disconnect-SPOService -ErrorAction SilentlyContinue