Microsoft 365: Configuração para serviços online usarem o serviço Azure Rights Management
Use as seções a seguir para ajudá-lo a configurar o Exchange Online, o Microsoft SharePoint e o Microsoft OneDrive para usar o serviço Azure Rights Management da Proteção de Informações do Azure.
Exchange Online: Configuração do IRM
Para obter informações sobre como o Exchange Online funciona com o serviço Azure Rights Management, consulte a seção Exchange Online e Exchange Server em Como os aplicativos e serviços do Office dão suporte ao 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 seu computador, você deve configurar o Windows PowerShell para executar scripts assinados. Inicie sua sessão do Windows PowerShell usando a opção Executar como administrador e digite:
Set-ExecutionPolicy RemoteSigned
Pressione Y para confirmar.
Em sua sessão do Windows PowerShell, entre no Exchange Online usando uma conta habilitada para acesso remoto ao Shell. Por 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 iniciar sessão, primeiro digite:
Connect-ExchangeOnline
Em seguida, na caixa de diálogo de solicitação de credenciais do Windows PowerShell, forneça seu nome de usuário e senha do Microsoft 365.
Execute o comando Get-IRMConfiguration para exibir sua configuração do Exchange Online para o serviço de proteção:
Get-IRMConfiguration
Na saída, localize o valor AzureRMSLicensingEnabled :
Se AzureRMSLicensingEnabled estiver definido como True, o Exchange Online já está habilitado para o serviço Azure Rights Management.
Se 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 está configurado com êxito, execute o seguinte comando:
Test-IRMConfiguration -Sender <user email address>
Por exemplo: Test-IRMConfiguration -Sender adams@contoso.com
Este comando executa uma série de verificações que incluem a verificação da conectividade com o serviço, a recuperação da configuração, a recuperação de URIs, licenças e quaisquer modelos. Na sessão do Windows PowerShell, você verá os resultados de cada um e no final, se tudo passar por estas verificações: RESULTADO GERAL: APROVAÇÃO
Quando o Exchange Online está habilitado para usar o serviço Azure Rights Management, você pode 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 sensibilidade com encriptação utilizando o Outlook na Web, Mac, iOS e Android.
Políticas de etiquetagem automática no Exchange para aplicar etiquetas de sensibilidade com encriptação a correio e mensagens de correio de voz protegidas.
SharePoint no Microsoft 365 e OneDrive: Configuração do IRM
Para obter informações sobre como o IRM do SharePoint funciona com o serviço Azure Rights Management, consulte SharePoint no Microsoft 365 e SharePoint Server na seção Proteção do Rights Management desta documentação.
Para configurar o SharePoint no Microsoft 365 e no OneDrive para dar suporte ao serviço Azure Rights Management, você deve primeiro habilitar o serviço de gerenciamento de direitos de informação (IRM) para SharePoint usando o centro de administração do SharePoint. Em seguida, os proprietários de sites podem proteger por IRM suas listas e bibliotecas de documentos do SharePoint, e os usuários podem proteger por IRM sua biblioteca do OneDrive para que os documentos salvos lá e compartilhados com outras pessoas sejam automaticamente protegidos pelo serviço Azure Rights Management.
Nota
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 RMS do Centro de Download da Microsoft. Instale esta versão do cliente RMS mesmo que tenha instalado o cliente do Azure Information Protection. Para obter mais informações sobre esse cenário de implantação, consulte Implantar o novo cliente de sincronização do OneDrive em um ambiente corporativo.
Para habilitar o serviço de gerenciamento de direitos de informação (IRM) para SharePoint, consulte as seguintes instruções da documentação do Office:
Esta configuração é feita pelo administrador do Microsoft 365.
Configurando o IRM para bibliotecas e listas
Depois de habilitar o serviço IRM para SharePoint, os proprietários de sites podem proteger suas bibliotecas de documentos e listas do SharePoint com IRM. Para obter instruções, consulte o seguinte no site do Office:
Essa configuração é feita pelo administrador do site do SharePoint.
Configurando o IRM para OneDrive
Depois de habilitar o serviço IRM para SharePoint, a biblioteca de documentos ou pastas individuais do OneDrive dos usuários podem ser configuradas para proteção do Rights Management. Os usuários podem configurar isso por si mesmos usando seu 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.
Nota
Para obter mais informações sobre como configurar o OneDrive, consulte a documentação do OneDrive .
Configuração para utilizadores
Dê aos usuários as instruções a seguir para que eles possam configurar o OneDrive para proteger seus arquivos de negócios.
Inicie sessão no Microsoft 365 com a sua conta escolar ou profissional e aceda ao Web site do OneDrive.
No painel de navegação, na parte inferior, selecione Retornar ao OneDrive clássico.
Selecione o ícone Configurações . No painel Definições, se o Friso estiver definido como Desativado, selecione esta definição para ativar o friso.
Para configurar todos os ficheiros do OneDrive para serem protegidos, selecione o separador BIBLIOTECA no friso e, em seguida, selecione Definições da Biblioteca.
Na página Configurações de Documentos, na seção Permissões e Gerenciamento, selecione Gerenciamento de Direitos de Informação.>
Na página Configurações de Gerenciamento de Direitos de Informação, marque a caixa de seleção Restringir permissões nesta biblioteca ao baixar. Especifique a sua escolha de nome e uma descrição para as permissões e, opcionalmente, clique em MOSTRAR OPÇÕES para configurar configurações opcionais e, em seguida, clique em OK.
Como essa configuração depende de usuários em vez de um administrador para proteger seus arquivos do OneDrive por IRM, instrua os usuários sobre os benefícios de proteger seus arquivos e como fazer isso. Por exemplo, explique que, quando compartilham um documento do OneDrive, apenas as pessoas autorizadas podem acessá-lo com quaisquer restrições que configurarem, mesmo que o arquivo seja renomeado e copiado em 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 SDK de componentes de cliente do SharePoint.
Baixe e instale o Shell de Gerenciamento do SharePoint.
Copie o conteúdo do script a seguir e nomeie o arquivo Set-IRMOnOneDriveForBusiness.ps1 no seu computador.
**Isenção de responsabilidade**: Este script de exemplo não é suportado em nenhum programa ou serviço de suporte padrão da Microsoft. Este script de exemplo é fornecido no estado em que se encontra sem garantia de qualquer 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
Revise o script e faça as seguintes alterações:
Procure
$sharepointAdminCenterUrl
e substitua o valor de exemplo pela sua própria URL do centro de administração do SharePoint.Você encontrará esse valor como a URL base quando entrar no centro de administração do SharePoint e ele tem o seguinte formato: https://< tenant_name-admin.sharepoint.com>
Por exemplo, se o nome do locatário for "contoso", você deve especificar: https://contoso-admin.sharepoint.com
Procure
$tenantAdmin
e substitua o valor de exemplo pela sua própria conta de administrador global totalmente qualificada para o Microsoft 365.Esse valor é o mesmo que você usa para entrar no centro de administração do Microsoft 365 como administrador global e tem o seguinte formato: user_name@<nome> de 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 de locatário "contoso.com", você deve especificar: admin@contoso.com
Pesquise
$webUrls
e substitua os valores de exemplo pelas URLs da Web do OneDrive dos seus usuários, adicionando ou excluindo quantas entradas forem necessárias.Como alternativa, consulte os comentários no script sobre como substituir essa matriz importando um arquivo . CSV que contém todos os URLs que você precisa configurar. Fornecemos outro script de exemplo para procurar e extrair automaticamente os URLs para preencher este . Arquivo CSV. Quando estiver pronto para fazer isso, use o script Adicional para enviar todas as URLs do OneDrive para um arquivo . Seção do arquivo CSV imediatamente após essas etapas.
O URL Web do OneDrive do utilizador está no seguinte formato: https://< nome> do inquilino-my.sharepoint.com/personal/< user_name> nome do< inquilino_com>
Por exemplo, se o usuário no locatário contoso tiver um nome de usuário de "rsimone", você especificaria: 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.Procurar
ADMIN INSTRUCTIONS
. Se você não fizer alterações nesta seção, o OneDrive do usuário será configurado para IRM com o título da política de "Arquivos protegidos" e a descrição de "Esta política restringe o acesso a usuários autorizados". Nenhuma outra opção de IRM será definida, o que provavelmente é apropriado para a maioria dos ambientes. No entanto, você pode alterar o título e a descrição da política sugeridos e também adicionar quaisquer outras opções de IRM apropriadas para seu ambiente. Veja 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 em seu 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 seguros).
Para obter mais informações sobre como assinar scripts do Windows PowerShell, consulte about_Signing na biblioteca de documentação do PowerShell.
Execute o script e, se solicitado, forneça a senha para a conta de administrador do Microsoft 365. Se você modificar o script e executá-lo na mesma sessão do Windows PowerShell, não serão solicitadas credenciais.
Gorjeta
Você também pode usar esse script para configurar o IRM para uma biblioteca do SharePoint. Para essa configuração, você provavelmente desejará habilitar a opção adicional Não permitir que os usuários carreguem documentos que não suportam IRM, para garantir que a biblioteca contenha apenas documentos protegidos. Para fazer isso, adicione o -IrmReject
parâmetro ao comando Set-IrmConfiguration no script.
Você também precisaria modificar a variável (por exemplo, https://contoso.sharepoint.com) e $listTitle
a $webUrls
variável (por exemplo, $Reports).
Se você precisar desabilitar o IRM para bibliotecas do OneDrive do usuário, consulte a seção Script para desabilitar o IRM para OneDrive .
Script adicional para exportar todas as URLs do OneDrive para um arquivo . Arquivo CSV
Para a etapa 4c acima, você pode usar o seguinte script do Windows PowerShell para extrair as URLs das bibliotecas do OneDrive de todos os usuários, que você pode verificar, editar, se necessário, e importar para o script principal.
Esse script também requer o SDK de Componentes de Cliente do SharePoint e o Shell de Gerenciamento do SharePoint. Siga as mesmas instruções para copiá-lo e colá-lo, salve o arquivo localmente (por exemplo, "Report-OneDriveForBusinessSiteInfo.ps1"), modifique os $sharepointAdminCenterUrl
valores e $tenantAdmin
como antes e 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. Este script de exemplo é fornecido no estado em que se encontra sem garantia de qualquer 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 para OneDrive
Use o script de exemplo a seguir se precisar desabilitar o IRM para o OneDrive dos usuários.
Esse script também requer o SDK de Componentes de Cliente 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 $sharepointAdminCenterUrl
valores and $tenantAdmin
. Especifique manualmente as URLs do OneDrive ou use o script na seção anterior para importá-las e 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. Este script de exemplo é fornecido no estado em que se encontra sem garantia de qualquer 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