Nastavitve nadzora zbirke mest

08.03.2022

Kontaktirala me je stranka, ki je želela nastaviti nadzor zbirke mest. Nastavitve so načeloma zelo opisne in ni težav pri razumevanju, se pa pojavi izziv, kako to nastaviti na več 10 ali 100 zbirkah mest. V tem primeru je seveda potrebno spisati kodo oz. pripraviti PowerShell skripto.

Nadzor zbirke mest se lahko nastavi v nastavitvah mesta pod »Skrbništvo zbirke mest àNastavitve nadzora zbirke mest«.

Med nastavitvami nadzora, lahko najdemo 3 področja (slika spodaj):

  1. Skrajševanje dnevnikov nadzora omogoča samodejno čiščenje podatkov iz vsebinske baze v kateri se nahaja zbirka mest. Na tem mestu moramo določiti ali želimo to imeti vklopljeno àNUJNO
    1. Nastaviti moramo čas po katerem se dnevniki čistijo
    2. In določiti moramo mesto in knjižnico, kam želimo, da se odlaga datoteka z arhivom dnevnikov nadzora.
  2. V drugem sklopu nastavitev imamo na voljo možnosti za beleženje dogodkov na elementih. V uporabniškem vmesniku so na voljo akcije
    1. Urejanje
    2. Rezerviranje ali sproščanje
    3. Premikanje ali kopiranje elementov na drugo mesto tega mesta
    4. Brisanje ali obnavljanje elementov
  3. Zadnji sklop, pa so možnosti za beleženje akcij nad seznami, knjižnicami in mesti
    1. Urejanje vrst vsebine stolpcev
    2. Iskanje po vsebini mesta
    3. Urejanje uporabnikov in dovoljenj

 

Beleženje v podatkovno bazo

Vsi dogodki, ki so označeni za beleženje v dnevnike nadzora, se nato zbirajo v podatkovni bazi. Tabela v kateri se podatki nahajajo se imenuje »AuditData«. V tej tabeli so vsi podatki zapisani z ID-ji, zato je za razlago oz. za ugotavljanje pomena teh zapisov uporabiti tudi Microsoft dokumentacijo.

Za AuditEventType podatek:

https://docs.microsoft.com/en-us/dotnet/api/microsoft.sharepoint.spauditeventtype?view=sharepoint-server

Za AuditItemType:

https://docs.microsoft.com/en-us/dotnet/api/microsoft.sharepoint.spaudititemtype?view=sharepoint-server

Primer izpisa iz podatkovne baze:

 

PowerShell skripta za nastavitev nadzora

Skripta, ki nastavi zapisovanje v dnevnike nadzora v določenem spletni aplikaciji (web application), je naslednja.

$sites=Get-SPWebApplication https://intranet |Get-SPSite -Limit all

 

foreach($site in $sites){

    $site.AuditLogTrimmingRetention=90

    $site.TrimAuditLog=$true

 

    $site.Audit.AuditFlags=[Microsoft.SharePoint.SPAuditMaskType]::CheckIn,`

                            [Microsoft.SharePoint.SPAuditMaskType]::CheckOut,`

                            [Microsoft.SharePoint.SPAuditMaskType]::Copy,`

                            [Microsoft.SharePoint.SPAuditMaskType]::Move,`

                            [Microsoft.SharePoint.SPAuditMaskType]::SchemaChange,`

                            [Microsoft.SharePoint.SPAuditMaskType]::Search,`

                           [Microsoft.SharePoint.SPAuditMaskType]::SecurityChange,`

                            [Microsoft.SharePoint.SPAuditMaskType]::Update,`

                            [Microsoft.SharePoint.SPAuditMaskType]::View,

                            [Microsoft.SharePoint.SPAuditMaskType]::Delete,`

                            [Microsoft.SharePoint.SPAuditMaskType]::Undelete

 

    $site.Audit.Update()

 

    if($site.RootWeb.Lists["AuditLogs"] -eq $null){

        $list=$site.RootWeb.Lists.Add("AuditLogs","AuditLogs",[Microsoft.SharePoint.SpListtemplateType]::DocumentLibrary)

    }

 

 

    $list=$site.RootWeb.Lists["AuditLogs"]

    if($site.RootWeb.Properties.ContainsKey("_auditlogreportstoragelocation")){

        $site.RootWeb.Properties["_auditlogreportstoragelocation"]=$list.RootFolder.ServerRelativeUrl

        $site.RootWeb.Properties.Update() 

    }

    else{

        $site.RootWeb.Properties.Add("_auditlogreportstoragelocation",$($list.RootFolder.ServerRelativeUrl))

        $site.RootWeb.Properties.Update()

    }

 

Skripta izvede več operacij:

  1. Pridobi vse zbirke mest v določenem obsegu, ki je v tem primeru spletna aplikacija, ki se nahaja na URL naslovu http://intranet
  2. Nastavi krajšanje dnevnikov nadzora vsakih 90 dni
  3. Nastavi kateri dogodki se beležijo. Tukaj je drugače kot je v spletnem vmesniku, saj je potrebno vsak dogodek posebej definirati in to nastaviti v zbirko dogodkov »AuditFlags«.
    1. Primer: za nastavitev beleženja »CheckIn« dogodokov, je potrebno uporabiti [Microsoft.SharePoint.SPAuditMaskType]::CheckIn
  4. Skripta nato preveri, ali obstaja knjižnica, ki se imuje »AuditLogs«. Če ne obstaja, se knjižnica ustvari.
  5. V lastnosti mesta se nato zapiše relativna pot do knjižnice. Skripta preveri, ali lastnost »"_auditlogreportstoragelocation« že obstaja in nato napolni z vrednostjo.
    1. Lastnosti se nato še shranijo.
  6. Enako se ponovi na vseh zbirkah mest.

 

 

Robi Vončina
SharePoint arhitekt, predavatelj
MVP, MCT
robi.voncina@kompas-xnet.si

Need assistance?
Need assistance?