Reitaðgangstakmörk

Cloud Events API styður hæfnina að takmarka API-aðgang á reitastigsstigi. Reitir geta verið lokaðir fyrir lestur, skrif eða hvort tveggja í gegnum stillingarborðið — án þess að breyta neinum AL-kóða.


Takmörkunartegundir

TegundGildiAPI les?API skrifar?Lýsing
Both0Reitur er algerlega útilokaður frá API
Read1Reitur getur verið skrifaður en er látinn þegjandi við lestur
Write2Reitur má vera lesinn en skrif eru stöðvuð með villu
Bypass3Takmörkun óvirk — reitur er aðgengilegur alla vega (notað til að undanskilja reiti úr breiðari takmarkana)

Hegðun við lestur (Data.Records.Get, CSV.Records.Get)

Reitir með Read eða Both tegund eru þegjandi slepptir frá útgangi: enginn villudagar, reiturinn birtist einfaldlega ekki í JSON-svaritöflum. Þetta tryggir bakwardstengda samhæfni.

Hegðun við skrif (Data.Records.Set)

Ef kallari reynir að skrifa í reit sem er lokaður með Write eða Both tegund, skilar API villu með skýru skilaboði: "Field 'FieldName' is write-restricted in table 'TableName'." Skrifun fer ekki fram þrátt fyrir villu — örar breytingar á öðrum reitum í sömu beiðni eru framkvæmdar áður en villan kemur upp.


Algildisreglur (wildcards)

Kerfið styður tvö algildisgildi til að setja takmarkanir á breiðum grundvelli án þess að búa til færslur fyrir hvern reit eða hverja töflu:

AlgildisgildiMerkingStaðfestingarregla
Svæðisnúmer = 0Allir reitir í tilgreindri töfluTöflunúmer verður að vera gild tafla (eða 0)
Töflunúmer = 0Allar töflur fyrir notandannSvæðisnúmer er sjálfkrafa sett í 0 (ekki hægt að tilgreina reit án töflu)

Uppflettingarröð (fallback-keðja)

Þegar athugað er hvort reitur sé takmarkaður, metur kerfið færslur í þessari röð:

  1. Nákvæm færsla — Notandi + Tafla + Reitur
  2. Allir reitir — Notandi + Tafla + Svæðisnúmer = 0
  3. Allar töflur — Notandi + Töflunúmer = 0 + Svæðisnúmer = 0

Fyrsta samsvörun gildir. Ef engin færsla finnst á neinu stigi er reiturinn ótakmarkaður.

Staðfestingarreglur

Dæmi

TaflaReiturTegundÁhrif
Customer (18)Name (2)ReadEinungis þessi reitur er lokaður frá lestur
Customer (18)0 (allir)WriteAllir reitir í Customer eru lokaðir frá skrifum
0 (allar)0 (allir)BothAllar töflur og allir reitir eru algerlega lokaðir

Uppsetning reitaðgangstakmarka

Leið í BC

Valmynd → Þjónusta → Cloud Events → Reitaðgangstakmörk (Field Access Restrictions)

Útlit síðu

Stillingarsíðan sýnir þrjár dálkar:

Auk þess er hægt að takmarkaðara notkun:

Þegar (All Users) er valinn á tegund Both, Read eða Write, gildir takmörkun um alla API-kallara nema þeir sem hafa sérstaka Bypass-færslu stillt fyrir sig.

Bæta við takmörkun

  1. Opnaðu Reitaðgangstakmörk síðuna.
  2. Veldu eða sláðu inn heiti Töflu (t.d. Customer).
  3. Veldu Reit í þeirri töflu (t.d. Credit Limit (LCY)).
  4. Veldu Tegund: Both, Read, Write eða Bypass.
  5. Valfrjálst: Veldu ákveðinn Notanda til að beita einungis á þann notanda.
  6. Vistaðu.

Athugið: Þegar BC útfærsla er með Azure AD auðkenningu (service principal) er auðkennirinn settur út sem ENTRA/{clientId} útlit. AAD-notendur eru ekki með BC-notendanöfn, svo notendatengdar takmarkanir eiga aðeins við um gagnaðgenga BC-notendur, ekki API-þjónustur.

Dæmi um notkun

Loka lestur á viðkvæmum fjárhagsreitum:

TaflaReiturTegundNotandi
CustomerCredit Limit (LCY)Both(All Users)
CustomerBalance (LCY)Read(All Users)
CustomerBalance Due (LCY)Read(All Users)

Undanskilja tiltekinn samþættingarnotanda:

TaflaReiturTegundNotandi
CustomerCredit Limit (LCY)Both(All Users)
CustomerCredit Limit (LCY)BypassSVC_INT_USR

Í þessu dæmi geta allir notendur/API-þjónustur ekki lesið né skrifað Credit Limit (LCY), nema SVC_INT_USR-notandinn sem fær fullan aðgang.


API-tilvísun

Tafla 65304 — Cloud Events Field Access

Reitur nr.Heiti reitsTegundLýsing
1Table No.IntegerTöflunúmer töflunnar sem takmarkaður reitur tilheyrir
2Field No.IntegerReitanúmer reitsins sem er takmarkaður
3User NameCode[50]BC-notendanafn. (All Users) = allar keyrslur
4Restriction TypeEnumBoth (0), Read (1), Write (2), Bypass (3)
5Table NameText[250]Heiti töflu (ritlæst, sótt sjálfkrafa)
6Field NameText[250]Heiti reits (ritlæst, sótt sjálfkrafa)

Kóðaeining 65350 — Cloud Events Field Access Mgt

Þessi kóðaeining útfærir athuganarrök fyrir reitaðgangstakmörk.

Opinberar aðferðir:

/// <summary>
/// Athugar hvort reitur sé lokaður frá lestur fyrir gefinn notanda.
/// </summary>
procedure IsReadRestricted(TableNo: Integer; FieldNo: Integer; UserName: Code[50]): Boolean

/// <summary>
/// Athugar hvort reitur sé lokaður frá skrifum fyrir gefinn notanda.
/// </summary>
procedure IsWriteRestricted(TableNo: Integer; FieldNo: Integer; UserName: Code[50]): Boolean

/// <summary>
/// Skilar lista yfir alla takmarkaða reiti í töflu fyrir gefinn notanda.
/// </summary>
procedure GetRestrictedFields(TableNo: Integer; UserName: Code[50]; var CloudEventsFieldAccess: Record "CE Field Access")

Þróunarsnotkun

Reitaðgangstakmörk eru framfylgt sjálfkrafa af Data.Records.Get og Data.Records.Set meðhöndlun skilaboðategunda. Þú þarft ekki að kalla á Cloud Events Field Access Mgt kóðaeininguna beint nema þú sért að smíða eigin viðbætur ofan á Cloud Events grunninn.

Ef þú vilt athuga hvort ákveðinn reitur sé lokaður í kóða:

var
    CloudEventsFieldAccessMgt: Codeunit "CE Field Access Mgt";
begin
    if CloudEventsFieldAccessMgt.IsWriteRestricted(Database::Customer, 21, UserId()) then
        Error('Reitur er lokaður frá skrifum.');
end;

Þekktar takmarkanir


© Origo – Cloud Events Base Extension