Teknisen arkkitehtuurin yleiskatsaus IT-tiimeille, jotka arvioivat AccessPointia
Last updated: August 09, 2026 by Steve
Tekninen arkkitehtuuri
Tämä asiakirja tarjoaa teknisen yleiskatsauksen AccessPoint-alustasta ratkaisuarkkitehdeille, kyberturvallisuusinsinööreille ja IT-johtajille, jotka arvioivat tuotetta organisaatiolleen. Se pohjautuu AccessPoint Solution Architecture Guideen (v2.0.67).
Alustan yleiskatsaus
AccessPoint on Microsoft 365:n ja Azuren päälle rakennettu tietopyyntöjen ja tietosuojan hallinta-alusta. Se sai alkunsa rekisteröidyn tietopyyntöjen (subject access request, SAR) hallintatyökaluna ja on kasvanut integroiduksi ATIP-/tietosuojatoimiston kokonaisuudeksi, joka kattaa koko pyynnön elinkaaren sekä ympäröivän tietosuojaohjelman. Se toimii kokonaan organisaatiosi omassa Microsoft 365- ja Azure-vuokraajassa: ajonaikana ei ole ulkoisia palvelimia, tietokantoja eikä kolmannen osapuolen pilvipalveluriippuvuuksia, ja kaikki tiedot pysyvät ympäristössäsi sinun hallinnassasi.
Alusta on jäsennelty moduuleiksi, jotka jakavat yhteisen identiteetin, RBAC:n, ilmoitusjärjestelmän, tarkastuksen ja raportoinnin selkärangan:
- Tietopyynnöt — ATI-/FOIA-/GDPR-vastaanotto, haltijan tehtävänjako, asiakirjojen tarkastus ja peittäminen, vastauksen paketointi sekä lakisääteinen raportointi
- Tietosuoja-arvioinnit — konfiguroitava PIA-/AIA-/Security-arviointimoottori
- Tietosuojapoikkeamat ja tietoturvaloukkaukset — vastaanotto, rajaaminen, vahingon riskin arviointi ja ilmoitusvelvollisuuden työnkulut
- Kantelut ja muutoksenhaut — kantelun elinkaari osapuolineen, lakisääteisine määräaikoineen ja tutkintoineen
- Tietosuojan riskirekisteri — ISO 31000 -tyyliset riskit, käsittelysuunnitelmat ja keskeiset riski-indikaattorit
- Käsittelytoimien selosteet (ROPA) — GDPR Article 30 -tietueet ja rekisterin vienti
- Sitoumusrekisteri — seurattavat tietosuojasitoumukset aikatauluineen ja tarkistuspisteineen
- AI Assist (valinnainen) — Azure OpenAI -pohjaiset ehdotukset ja luonnostelu, jotka toimivat kokonaan asiakkaan omassa tilauksessa: asiakirjayhteenvedot, tekoälyn peittoehdotukset, faktoihin perustuva luonnostelu, vastaanottoseulonta, arvioinnin vastausten esitäyttö, semanttinen haku ja kaksoiskappaleiden tunnistus, säädöstietoinen tapauskohtainen avustaja (Kysy AccessPointilta — napsautettavat viittaukset, tallennetut keskustelut, Oma tapauskanta -tila), "Kysy AccessPointilta" -datavastaukset, lainkäyttöalueen toimintaopas, joka perustaa prosessivastaukset, automaattikäännös ja päivittäinen tiivistelmä — kaikki vuokraajakohtaisesti valittavissa, kirjattuna vain metatietoina, tietuekohtaisen tekoälyaktiviteetin ilmoituksen kera
Kaikki moduulit ovat lainkäyttöaluepakettien ohjaamia, eikä staattista alkudataa käytetä.
Keskeiset ominaisuudet:
- Vuokraajanatiivi — otetaan käyttöön SharePoint Framework (SPFx) -ratkaisuna ja Azure PaaS -palveluina olemassa olevassa vuokraajassasi
- Ei Power Platform -riippuvuuksia — Dataverse-, Power Automate- tai Power Apps -lisensointia ei tarvita
- Tietojen suvereniteetti — kaikki tiedot sijaitsevat Azure-vuokraajasi määritetyssä maantieteellisessä sijainnissa
- Ei toimittajan ajonaikaista pääsyä — julkaisija ei voi käyttää tietojasi normaalin toiminnan aikana
- Kiinteähintainen lisensointi — osastokohtainen lisensointi ilman käyttäjäkohtaista mittausta
- Sisäänrakennettu tietosuoja — haltija- ja avustajaroolit on rakenteellisesti eristetty pyytäjän ja rekisteröidyn henkilötiedoista
- Määritys koodin sijaan — pyyntötyypit, poikkeuskoodit ja valintakentät ovat datapohjaisia
- Monikielisyys suunnitteluperiaatteena — kolmitasoinen käännösjärjestelmä, joka tukee 11 kieltä
Arkkitehtuurikaavio
Customer's Microsoft 365 Tenant Customer's Azure Subscription
┌──────────────────────────────┐ ┌─────────────────────────────────────────┐
│ │ │ │
│ SPFx Web Part │ │ Azure App Service (Linux) │
│ (SharePoint Online / │──HTTPS──│ ASP.NET Core 10 Web API │
│ Teams Personal App / │ (JWT) │ ├─ Entra ID JWT validation │
│ Teams Tab) │ │ ├─ Role-based authorization │
│ │ │ ├─ PII filter middleware │
│ Installed from AppSource │ │ ├─ User upsert from JWT claims │
│ or Tenant App Catalog │ │ ├─ License validation middleware │
│ │ │ └─ Syncfusion document conversion │
│ │ │ │
│ SharePoint Tenant Storage │ │ Azure SQL Database │
│ (API URL override, │ │ (222 tables, 3,410 fields) │
│ optional) │ │ │
└──────────────────────────────┘ │ Azure Blob Storage │
│ (Document files) │
Microsoft Graph API │ │
┌──────────────────────┐ │ Application Insights + Log Analytics │
│ Mail.Send │◄────────│ (Telemetry, diagnostics) │
│ User.ReadBasic.All │ │ │
│ TeamsActivity.Send │ │ (opt-in) Azure AI Search │
│ TeamsAppInstall │ │ (opt-in) Azure OpenAI │
│ Calendars.Read │ │ (opt-in) Azure Document Intelligence │
│ AiEnterprise…Read │ └─────────────────────────────────────────┘
└──────────────────────┘ ← M365 record capture (delegated + app-only Copilot)
Komponentti-inventaario
| Komponentti | Teknologia | Otettu käyttöön | Tarkoitus |
|---|---|---|---|
| SPFx Web Part | TypeScript, React 17, Fluent UI 8, SPFx 1.23.2 | Asiakkaan SharePoint Online / Teams | Käyttöliittymä kaikille rooleille |
| Teams App | Teams manifest v1.19, versio lukittu yhteen SPFx-ratkaisun ja ApiVersion.Current -arvon kanssa (CI leimaa) |
Asiakkaan Teams-hallintakeskus | Henkilökohtainen sovellus, määritettävä välilehti, aktiviteettisyötteen ilmoitukset syvälinkityksellä |
| Web API | C# / ASP.NET Core 10, .NET 10 (~103 ohjainta, ~124 palvelurajapintaa) | Asiakkaan Azure App Service (Linux) | Liiketoimintalogiikka, tietojen käsittely, asiakirjojen käsittely |
| Tietokanta | SQL Server (DacPac) | Asiakkaan Azure SQL Database | Relaatiotietovarasto (221 taulua, 3 410 kenttää) |
| Blob Storage | Azure Blob Storage | Asiakkaan Azure Storage Account | Asiakirjatiedostojen tallennus |
| Valvonta | Application Insights + Log Analytics | Asiakkaan Azure-tilaus | Telemetria, diagnostiikka, hälytykset |
| AI Search (valinnainen) | Azure AI Search | Asiakkaan Azure-tilaus | Asiakirjasisällön kokotekstihaku sekä semanttinen vektorihaku (asiakirjat + tapausindeksi); provisioidaan vain, kun deployAiSearch=true |
| Azure OpenAI (valinnainen) | Azure OpenAI Service | Asiakkaan Azure-tilaus | AI Assist — faktoihin perustuva luonnostelu, ehdotukset, semanttinen haku, tapausavustaja (Kysy AccessPointilta); hallitun identiteetin todennus (ei API-avaimia), provisioidaan vain, kun AI Assist on otettu käyttöön |
| Document Intelligence (valinnainen) | Azure AI Document Intelligence (prebuilt-read) | Asiakkaan Azure-tilaus | OCR pelkkää kuvaa sisältäville skannauksille sisältöhakua, kaksoiskappaleiden tunnistusta, yhteenvetoja ja peittoehdotuksia varten; hallitun identiteetin todennus, provisioidaan vain, kun deployDocumentIntelligence=true |
Mitä julkaisija operoi
| Palvelu | Tarkoitus |
|---|---|
| Realizer Platform | Lisenssin validointi, Teams-ilmoitusten välityspalvelu, SPFx:n API-osoitteen tunnistus, Teamsin henkilökohtaisen välilehden älykäs reititin sekä käyttöönoton jälkeinen Viimeistele asennus -sivu (asiakkaan tapaustietoja ei välitetä) |
| AppSource Listing | SPFx-paketin jakelu |
| Käyttöönottomalli | Bicep/ARM-malli Azure-taustajärjestelmälle, otetaan käyttöön yhdellä napsautuksella Azure-portaalista asiakkaan tilaukseen |
| Teams App Package | Teams-manifestin jakelu (sivulataus tai organisaation sovelluskauppa) |
Asiakastietoja ei välitetä eikä tallenneta mihinkään julkaisijan operoimaan palveluun.
Toiminnalliset moduulit
Kaikki moduulit toimivat yhden Web API:n / SPFx-web-osan sisällä ja jakavat yhteisen identiteetin, RBAC:n, kommentoinnin, ilmoitusjärjestelmän, Oma päivä -näkymän, tarkastuksen, tuntikirjauksen ja tarkastustyönkulun sekä raportoinnin selkärangan. Kukin on datapohjainen lainkäyttöaluepakettien kautta.
| Moduuli | Yhteenveto |
|---|---|
| Pyynnöt (ATIP/SAR) | Pyynnön vastaanotto → haltijan tehtävänjako → keräys → vastaus. Konfiguroitavat tyypit, tilat, numerointi, kalenterit ja SLA:t. |
| Asiakirjat ja peittäminen | Fasettipohjainen asiakirjatyötila: tunnisteet, kansiot, sähköpostiperheet, lukemisen seuranta, tallennetut näkymät, päätösperusteinen kaksoiskappaleiden tunnistus, Syncfusion-esikatselu, peittämisputki poikkeuksineen ja XFDF-edestakaisine siirtoineen, etsi ja peitä -kuviot, sääntöpohjaiset ja tekoälyn peittoehdotukset, aiempien pyyntöjen peittojen uudelleenkäyttö, vastauksen paketointi kirjelomakkeen yhdistämisellä. |
| Pyytäjät / yhteystiedot | Ensiluokkainen uudelleenkäytettävä pyytäjän identiteetti, vastaanottovirran hallinta, kevytmielinen/häiritsevä-käytöksenhallintatyötila, maksut ja vahvistus, yhdistäminen; konsultaatiot; kirjeenvaihdon laadintatyökalu henkilötietopalomuurilla. |
| Tietosuoja-arvioinnit | Konfiguroitava PIA-/AIA-/Security-moottori: mallipohjat, seulontakyselyt, osion tehtävänanto, pisteytys/tasoitus, riskirekisteri, sulkemis-/valvontaviranomaisyhteenvedot. |
| Tietosuojapoikkeamat / tietoturvaloukkaukset | Poikkeaman vastaanotto, rajaaminen, vahingon riskin arviointi, säädöskohtaiset ilmoitusvelvollisuussäännöt, korjaavat toimet. |
| Kantelut ja muutoksenhaut | Kantelun elinkaari: osapuolet, lakisääteiset määräajat, tutkittavaksi ottaminen, tutkinta, näkemysten tarkastelu. |
| Riskit ja sitoumukset | ISO 31000 -riskirekisteri riskinottohalukkuudella, KRI:llä ja käsittelytehtävillä; sitoumusrekisteri aikatauluineen ja tarkistuspisteineen. |
| ROPA / tietosuojan kohteet | Uudelleenkäytettävät ohjelmat/järjestelmät GDPR Article 30 -tietueineen ja rekisterin vienti. |
| Tarkastukset | Konfiguroitava peräkkäinen/rinnakkainen tarkastus- ja hyväksyntämoottori, jota käytetään uudelleen kaikissa tapausentiteeteissä. |
| Raportointi ja tarkastus | Kiinteät raportit, katalogiohjattu mukautettu raportinmuokkain (Report Studio -koontinäytöt), tilastolliset vuosiraportit, SLA-/johdon koontinäytöt, hash-ketjutettu tarkastusloki ja oikeuskelpoiset tapauksen tarkastusviennit. |
| AI Assist (valinnainen) | Azure OpenAI -pohjaiset ehdotukset ja luonnostelu: yhteenvedot, peittoehdotukset, faktoihin perustuva luonnostelu, vastaanottoseulonta, haltijaehdotukset, arvioinnin esitäyttö ja johdonmukaisuustarkistukset, semanttinen haku ja kaksoiskappaleet, säädöstietoinen tapausavustaja — Kysy AccessPointilta (napsautettavat viittaukset, kirjeen valmistelu, tallennetut keskustelut) — sekä Oma tapauskanta- / salkkuavustaja, lainkäyttöaluepaketin alustama lainkäyttöalueen toimintaopas, Kysy AccessPointilta -raportointi, päivittäinen tiivistelmä ja kiinnikurontikooste, riskiportfolio- ja käytösanalyysi. Ominaisuuskohtaiset vuokraajakytkimet; kirjaus vain metatietoina (avustaja voi lisäksi tallentaa omistajakohtaisia yksityisiä keskusteluja). |
| Konfiguraatio ja alusta | Lainkäyttöaluepaketin tuonti (1 Universal Baseline -paketti + 106 lainkäyttöaluepakettia, mukaan lukien tyyppikohtaiset automaattiset oletetun epäämisen tilat ja valinnainen tekoälyn perusta), vuokraaja-asetukset, mukautetut roolit/oikeudet, ominaisuuskytkimet, mukautetut kentät, 11 kielen käännöstaulut. |
Käyttöönottomalli
AccessPoint käyttää jaettua käyttöönottomallia. SPFx-web-osa asennetaan Microsoft AppSourcesta (tai vuokraajan App Catalogista), Teams-sovelluspaketti asennetaan sivulatauksena tai organisaation sovelluskaupan kautta, ja Azure-taustajärjestelmä otetaan käyttöön asiakkaan omaan tilaukseen jommallakummalla seuraavista menetelmistä:
- Azure-portaali (suositeltu) — kaikkien Azure-resurssien (App Service, SQL, Blob Storage, Application Insights sekä valinnaiset AI Search-/Azure OpenAI-/Document Intelligence -resurssit) käyttöönotto yhdellä napsautuksella ARM:n/Bicepin kautta. API otetaan käyttöön
zipdeploy-toiminnolla ARM-käyttöönoton aikana; koodi ladataan kerran julkaisijan CDN:stä ja tallennetaan asiakkaan App Serviceen ilman ajonaikaista ulkoista riippuvuutta. Pakollinen käyttöönottotyypin valinta suojaa uudelleenkäyttöönottoja: Uusi asennus luo SQL-palvelimen Entra-ensin-periaatteella (käyttöönoton suorittavasta pääkäyttäjästä tulee ensimmäinen Entra-pääkäyttäjä, Entra-pohjainen todennus alusta asti — SQL-tunnusta ei ole koskaan olemassa), kun taas Päivitä olemassa oleva asennus säilyttää operaattorin sovellusasetukset eikä koske tietokannan käyttöoikeuksiin. Asiakas säilyttää resurssiryhmän täyden omistajuuden. - Bicep-malli + PowerShell-skripti (manuaalinen) — organisaatioille, joilla on tiukka muutoksenhallinta. Deploy to Azure -painike tai
Deploy-AccessPoint.ps1ottaa käyttöön infrastruktuurin, varmistaa uudelleen SQL:n pelkän Entra-todennuksen (varmistus — malli soveltaa sen), myöntää Microsoft Graph -oikeudet hallitulle identiteetille (skriptattu vaihtoehto julkaisijan Viimeistele asennus -sivulle), määrittää valinnaisen SharePointin tallennusentiteetin API-osoitteen ohituksen ja hyväksyy SPFx:n API-oikeuspyynnöt. Jokainen vaihe voidaan ohittaa itsenäisesti.
Graph-käyttöoikeudet myönnetään yleensä julkaisijan Viimeistele asennus -sivun kautta — käyttöönotto tuottaa finishSetupUrl-tulosteen, jonka asiakkaan Entra-pääkäyttäjä avaa myöntääkseen kaikki hallitun identiteetin tarvitsemat oikeudet yhdellä idempotentilla ajolla (suoritetaan uudelleen päivitysten jälkeen uusien oikeuksien saamiseksi).
Käyttöönotto on oletuksena tietoturvakovennettu: TLS 1.3, FTPS pois käytöstä, SCM/FTP-perustodennus pois käytöstä, HTTP/2 käytössä ja Microsoft Defender for SQL päällä oletuksena (voidaan poistaa käytöstä). API sisältää oman tietokannan DacPac-paketin ja soveltaa sen käynnistyksen yhteydessä migraatiopalvelun kautta käyttäen DacServices.Deploy(upgradeExisting: true) -komentoa — tämä ei tee mitään jo ajantasaisessa skeemassa ja tuottaa additiivisen, ei-destruktiivisen deltan skeeman muutoksen jälkeen (BlockOnPossibleDataLoss = true, DropObjectsNotInSource = false). Migraation lopputulos näkyy /api/health-päätepisteen kautta. Käyttöönoton jälkeen pääkäyttäjä myöntää suostumuksen Realizer-yrityssovellukselle (Teams-ilmoitukset), määrittää lähettäjän postilaatikon ja tuo lainkäyttöaluepaketin.
Todennus ja identiteetti
AccessPoint käyttää Microsoft Entra ID:tä ainoana identiteetin tarjoajana. Sovelluskohtaisia käyttäjätilejä tai salasanoja ei ole. SPFx-web-osa hankkii JWT-tokenin API-yleisölle AadHttpClient-luokan kautta; API validoi myöntäjän, yleisön, allekirjoituksen ja voimassaolon jokaisessa pyynnössä. Vuokraajassa määritetyt MFA- ja Conditional Access -käytännöt ovat täysimääräisesti voimassa.
User (Browser) SharePoint Online AccessPoint API
│ │ │
│ 1. Load SPFx web part │ │
│─────────────────────────────►│ │
│ │ │
│ 2. AadHttpClient.getClient()│ │
│ (SPFx acquires token for │ │
│ api://<client-id> audience)│ │
│ │ │
│ 3. API call + Bearer token │ │
│──────────────────────────────┼─────────────────────────►│
│ │ │
│ │ 4. Validate JWT: │
│ │ - Issuer (Entra ID) │
│ │ - Audience (api://) │
│ │ - Signature │
│ │ - Expiry │
│ │ │
│ │ 5. UserUpsertMiddleware: │
│ │ Extract claims → │
│ │ Upsert Users table │
│ │ │
│ │ 6. PermissionService: │
│ │ resolve roles + │
│ │ permission grants │
│ │ │
│ ◄── JSON response ───────┼──────────────────────────│
| Parametri | Arvo |
|---|---|
| Identiteetin tarjoaja | Microsoft Entra ID (Azure AD) |
| Protokolla | OAuth 2.0 / OpenID Connect |
| Tokenin tyyppi | JWT Bearer |
| Yleisö | api://<client-id> ja <client-id> (sekä v1- että v2-tokenit hyväksytään) |
| Myöntäjä | Minkä tahansa Entra-vuokraajan myöntäjä — muodot https://login.microsoftonline.com/{tenantId}/v2.0 (v2) ja https://sts.windows.net/{tenantId}/ (v1) validoidaan; tokenin tid-vaatimus ohjaa vuokraajakohtaista rajausta |
| Sovellusrekisteröinti | Julkaisijan operoima monivuokraaja-sovellus, hyväksytty erikseen kunkin asiakasvuokraajan toimesta (ei asiakaskohtaista sovellusrekisteröintiä hallittavaksi tai kierrätettäväksi); julkaistu laajuus access_as_user; ei asiakassalaisuutta. Asiakasvuokraajien välinen eristys pakotetaan validoidulla tid-vaatimuksella sekä lisenssi-/tilaustarkistuksella |
Hallittu identiteetti
App Service käyttää järjestelmälle määritettyä hallittua identiteettiä todentautuakseen taustajärjestelmän palveluihin, joten sovellukseen ei tallenneta asiakassalaisuuksia tai varmenteita:
- Azure SQL Database — pelkkä Entra-todennus (palvelin luodaan Entra-ensin-periaatteella; SQL-tunnusta ei ole koskaan olemassa)
- Azure Blob Storage —
DefaultAzureCredential(hallittu identiteetti tuotannossa) - Microsoft Graph API —
ManagedIdentityCredentialsovellusoikeuksilla - Valinnaiset tekoälyresurssit (AI Search, Azure OpenAI, Document Intelligence) — pelkän hallitun identiteetin todennus, paikallinen/avaintodennus pois käytöstä
Azure kierrättää hallitun identiteetin tunnistetiedot automaattisesti.
Valtuutus ja RBAC
AccessPoint toteuttaa hienojakoisen, vuokraajakohtaisesti muokattavan käyttöoikeusmallin, joka tallennetaan Azure SQL:ään ja pakotetaan API-kerroksessa jokaisessa pyynnössä: tuotteen määrittelemä luettelo atomisista käyttöoikeuskoodeista (esim. request.modify, document.view, redaction.approve, request.view.pii) ryhmitellään rooleiksi, ja jokainen ohjaintoiminto on portitettu käyttöoikeuskoodilla.
| Roolityyppi | Roolit | Huomiot |
|---|---|---|
| Järjestelmärooli | Administrator (ainoa sisäänrakennettu vakiorooli) | Sisältää aina kaikki luettelon käyttöoikeudet — lasketaan luettelosta, ei tietokantaan alustettuna — joten sitä ei voi koskaan lukita ulos; muuttumaton eikä poistettavissa. |
| Suhderoolit | Reviewer, Custodian, Contributor, Reader, Advisor | Tuotteen määrittelemät käyttöoikeuspaketit, jotka myönnetään automaattisesti ja kohdekohtaisesti työ-/yhteistyösuhteiden perusteella (Custodian-tehtävänanto, Contributor-tehtävä, tarkistus, Advisor-/Reader-jäsenyys). Ei suoraan määritettävissä, rajattu liittyvään tietueeseen, eivätkä koskaan sisällä pyynnön esittäjän henkilötietoja. |
| Vuokraajaroolit | esim. Request Coordinator (toimitetaan Universal Baseline -paketin mukana), sekä mahdolliset mukautetut roolit | Täysin muokattavat käyttöoikeuspaketit, joita hallitaan kohdassa Asetukset > Roolit ja käyttöoikeudet. Koordinaattori-/vastaavatyyppiset roolit ovat kokonaan vuokraajakohtaisesti määritettyjä — paketin mukana toimitettava Request Coordinator on käytännössä tietopyyntö- ja tietosuojavastaavan rooli. |
| Rooli | Näkee pyynnön esittäjän henkilötiedot | Tyypillinen käyttöoikeus | Tyypillinen käyttäjä |
|---|---|---|---|
| Administrator | Kyllä | Kaikki (kaikki luettelon käyttöoikeudet) | IT-ylläpitäjä, järjestelmän omistaja |
| Request Coordinator (vuokraajarooli) | Kyllä | Hallinnoi pyyntöjä, tehtävänantoja, mustauksia, kirjeenvaihtoa | Tietopyyntö- ja tietosuojavastaava |
| Reviewer | Ei | Luku + tarkistuksessa olevien pyyntöjen mustaushuomioiden merkitseminen/ratkaiseminen | Oikeudellinen neuvonantaja, laadunvarmistus |
| Advisor | Ei | Luku + mustausten tarkastelu/merkitseminen (ei koskaan soveltaminen tai hyväksyminen) | Konsultoiva neuvonantaja, asiantuntija |
| Custodian | Ei | Omat tehtävänannot ja niiden asiakirjat | Osaston asiakirjavastaava |
| Contributor | Ei | Omat tehtävät ja niiden asiakirjat | Asiantuntija |
| Reader | Ei | Vain luku -oikeus liittyviin pyyntöihin ja jaettuihin asiakirjoihin | Valvonta, tarkastus |
Toteutuspisteet:
[RequirePermission(code)]-attribuutit — dynaaminen käytäntötarjoaja yhdistää jokaisen ohjaintoiminnon luettelon käyttöoikeuskoodiinPermissionService— ratkaisee kutsujan tosiasialliset käyttöoikeudet (vakiotyyppiset roolit yhdistettynä kohdekohtaisiin suhdemyönnytyksiin), objektikohtaisin tarkistuksin pyynnön/asiakirjan/tehtävänannon/tehtävän tasolla- Resurssitason omistajuustarkistukset — esim. Contributor pääsee käsiksi vain omiin tehtäviinsä; Custodian vain omiin tehtävänantoihinsa
PiiFilterMiddleware— poistaa pyynnön esittäjän henkilötietokentät JSON-vastauksista jokaiselta kutsujalta, jolla ei ole view-requestor-PII-käyttöoikeutta
Kaikki API:n kirjoituspäätepisteet pakottavat käyttöoikeudet palvelinpuolella ohjaintasolla. Asiakirjan uudelleenluokittelu on laajuustietoinen — käyttäjä, joka keräsi asiakirjan, on ainoa, joka voi luokitella sen uudelleen — ja kun pyyntö on suljettu, sen objektikaavion muutokset palauttavat HTTP 409:n, lukuun ottamatta pientä joukkoa tarkoituksellisia poikkeuksia (sulkemisen jälkeinen kirjeenvaihto, säilytyksen puhdistus ja uudelleenavaus). Vakiotyyppiset roolimääritykset on rajattu (globaali, pyyntö-, tehtävänanto- tai tehtävälaajuus), valinnaisesti määräaikaisia, eikä suhderooleja koskaan kirjata vakiomäärityksinä — ne johdetaan kohdekohtaisesti taustalla olevista työtietueista. Ensimmäinen järjestelmään pääsevä käyttäjä alustetaan Administrator-roolilla, ja palvelinpuolen suoja estää viimeisen aktiivisen pääkäyttäjän poistamisen.
Tietojen sijainti ja suvereniteetti
Kaikki tiedot sijaitsevat asiakkaan Azure-vuokraajassa käyttöönoton aikana valitulla alueella. Tietoja ei välitetä eikä tallenneta muille alueille, ellei asiakas nimenomaisesti määritä Azuren georeplikointia.
Kanadan liittovaltion ministeriöt: GC-kohtaisia tietojen sijaintivaatimuksia, ITSG-33-kontrollikartoitusta ja GC Cloud Guardrails -vaatimustenmukaisuutta varten katso GC-turvallisuuskontrolliviite.
Asiakastietojen sijainnit
| Tietotyyppi | Tallennussijainti | Hallitsee |
|---|---|---|
| Pyyntötietueet, käyttäjätiedot, tarkastusketju | Azure SQL Database | Asiakkaan Azure-tilaus |
| Ladatut asiakirjat | Azure Blob Storage | Asiakkaan Azure-tilaus |
| Sovelluksen telemetria | Application Insights / Log Analytics | Asiakkaan Azure-tilaus |
| SPFx-web-osan resurssit | SharePoint CDN | Asiakkaan M365-vuokraaja |
| API-osoitteen ohitus (valinnainen) | SharePoint Tenant Storage Entity | Asiakkaan M365-vuokraaja (ensisijainen tunnistus tapahtuu julkaisijan API-tunnistuspäätepisteen kautta) |
| Tekoälyhaun indeksit, yhteenvedot, OCR-tuloste (valinnainen) | Azure AI Search / Azure SQL | Asiakkaan Azure-tilaus |
Mikä ylittää vuokraajan rajat
| Tietovirta | Suunta | Mitä välitetään | Tarkoitus |
|---|---|---|---|
| Lisenssin validointi | API → Publisher Platform | Entra-hallitun identiteetin token (tokenin tid-vaatimus tunnistaa vuokraajan), API:n versio ja API:n oma perusosoite (itserekisteröinti web-osan tunnistusta varten) |
Aktiivisen tilauksen validointi; vastaus sisältää myös AccessPointin uusimman julkaistun version, jotta Asennus-paneeli voi näyttää "Päivitys saatavilla" -ilmoituksen (vain versionumerot — ei käyttö- tai tapaustietoja) |
| API-osoitteen tunnistus | SPFx → Publisher Platform | Bearer-token (vain vuokraajatunnusvaatimus) | Asiakkaan API:n perusosoitteen ratkaiseminen, kun tallennusentiteetin ohitusta ei ole asetettu |
| Sähköposti-ilmoitukset | API → Microsoft Graph | Sähköpostin sisältö Mail.Send-kautta |
Ilmoitusten lähettäminen jaetusta postilaatikosta |
| Teams-ilmoitukset (valinnainen — kytkettävissä / poistettavissa kokonaan) | API → Publisher Platform → Microsoft Graph | Aktiviteettityyppi, vastaanottajan + vuokraajan GUID-tunnukset, ilmoituksen otsikko-/esikatseluteksti, toimivan käyttäjän nimi, pyyntönumero, tietuetunnus (syvälinkki) | Teams-aktiviteettisyöteilmoitusten lähettäminen (välitetään julkaisijan monivuokraajayrityssovelluksen kautta, koska sendActivityNotification-kutsun on tultava sovellukselta, joka omistaa Teams-manifestin). Tämä on ainoa ilmoituskanava, joka poistuu vuokraajasta — sähköposti ja sovelluksen sisäinen syöte toimittavat samat ilmoitukset vuokraajan sisällä. Katso Teams-ilmoitusten tietojenjako |
| Käyttäjäprofiilin haku | SPFx → Microsoft Graph | Käyttäjähakukyselyt | Henkilövalitsin, käyttäjien ratkaiseminen |
Mikä ei koskaan poistu vuokraajasta
- Pyyntötietueet ja pyytäjän henkilötiedot
- Ladatut asiakirjat
- Tarkastushistoria
- Määritystiedot (pyyntötyypit, mallipohjat, numerointi)
- Roolimääritykset
- AI Assist -kehotteet ja -vastaukset — kun AI Assist on otettu käyttöön, Azure OpenAI -resurssi toimii asiakkaan omassa tilauksessa ja alueella; Microsoft ei kouluta malleja sisällöllä, eikä kehotteiden/vastausten sisältöä tallenneta (vain käyttömetatiedot, budjettimittaria ja tapauksen tarkastusviennin tekoälyn osallisuuden ilmoitusta varten)
- Sovelluksen sisäiset ja sähköposti-/Outlook-ilmoitukset — sovelluksen sisäinen syöte tarjotaan asiakkaan omasta API:sta; sähköposti lähetetään asiakkaan omasta jaetusta postilaatikosta
Mail.Send-toiminnon kautta. Kumpikaan ei kulje julkaisijan kautta. Vain valinnainen Teams-aktiviteettisyöte lähettää mitään tietoa vuokraajan ulkopuolelle, ja sekin voidaan minimoida tai poistaa kokonaan (alla)
Teams-ilmoitusten tietojenjako (valinnainen)
Tietosuvereniteettilupauksen mukaisesti ainoa vuokraajan tieto, joka poistuu rajan yli ilmoituksia varten, on valinnainen Teams-aktiviteettihyötykuorma — ja sekin voidaan minimoida tai poistaa kokonaan. Jokainen ilmoitus toimitetaan enintään kolmella kanavalla; kaksi niistä pysyy aina vuokraajan sisällä (sovelluksen sisäinen syöte, joka tarjotaan asiakkaan API:sta, ja sähköposti/Outlook, joka lähetetään asiakkaan omasta jaetusta postilaatikosta). Teams-aktiviteettisyöte on mukavuustoiminto: oletustilassaan asiakkaan API lähettää POST-pyynnöllä pienen hyötykuorman julkaisijan monivuokraajasovellukselle, joka kutsuu Graphin sendActivityNotification-toimintoa (jonka on tultava sovellukselta, joka omistaa Teams-manifestin). Julkaisija ei tallenna mitään siitä ja kirjaa vain vastaanottajan + vuokraajan GUID-tunnukset.
Kentät oletusarvoisessa (julkaisijan välittämässä) Teams-hyötykuormassa — ja mitä Minimoi-kytkin poistaa:
| Kenttä | Sisältää | Henkilötietoa? | Poistaa Minimoi? |
|---|---|---|---|
tenantId / recipientUserId |
Vuokraajan + vastaanottajan Entra-GUID-tunnukset | Ei — tunnisteita | Ei (reititys) |
activityType |
Kiinteä manifestin enum-arvo (esim. assignmentCreated) |
Ei | Ei |
previewText / topicText |
Esikatselu + otsikko (tehtävänannon/tehtävän nimi, ilmoitusteksti) | Mahdollisesti (vapaa teksti) | Kyllä → paikkamerkki |
actorName |
Toimivan henkilöstön jäsenen näyttönimi | Kyllä — henkilönimi | Kyllä → ”AccessPoint” |
requestNumber |
Pyynnön viitekoodi | Ei — viite | Ei (konteksti) |
relatedEntity + relatedRecordId |
Tietuetyyppi + GUID (syvälinkki) | Ei — tunnisteita | Ei (syvälinkki) |
Pyytäjän henkilötietoja ei koskaan ole hyötykuormassa — pyytäjän nimi-/sähköpostikenttää ei ole, ja Custodian-/Contributor-ilmoitukset on joka tapauksessa tyhjennetty henkilötiedoista jo ylävirrassa. Kaksi hallintaa tiukentaa tätä edelleen:
- Minimoi (
Notifications:TeamsMinimalPayload, vuokraaja-asetus) korvaa kentätpreviewText,topicTextjaactorNameneutraaleilla paikkamerkeillä, joten nimet, otsikot ja vapaa teksti eivät koskaan poistu vuokraajasta — vain reititys-/syvälinkkitunnisteet poistuvat. Manifestin muutosta ei vaadita. - Poista kokonaan (
Notifications:TeamsRelayMode=Direct) saa asiakkaan API:n kutsumaan GraphinsendActivityNotification-toimintoa itse omalla hallitulla identiteetillään, jolloin mikään hyötykuorma ei koskaan saavuta julkaisijaa. Tämä edellyttääTeamsActivity.Send-sovellusroolia API:n hallitulle identiteetille sekä Teams-manifestinwebApplicationInfo.id-arvon osoittamista asiakkaan omaan sovellukseen — katso Käyttöönotto-opas.
| Tila | Hyötykuorma julkaisijalle | Henkilötieto/vapaa teksti poistuu vuokraajasta | Käyttöönottovaiva |
|---|---|---|---|
| Oletusvälitys | Kyllä (yllä olevat kentät) | Nimet/otsikot, ellei minimoitu | Ei mitään |
| Minimointikytkin | Kyllä (vain tunnisteet) | Ei | Yksi kytkin |
| Suora (itse isännöity) välitys | Ei | Ei | MI-myöntö + manifestin muokkaus |
| Teams pois käytöstä | Ei | Ei (vain sähköposti + sovelluksen sisäinen) | Ei mitään |
Salaus
Siirron aikana
| Yhteys | Protokolla | Minimi-TLS |
|---|---|---|
| Selain → App Service | HTTPS (pakotettu, httpsOnly: true) |
TLS 1.3 |
| SPFx → App Service | HTTPS (pakotettu SharePoint-kontekstin toimesta) | TLS 1.3 |
| App Service → Azure SQL | TDS salauksella (Encrypt=True) |
TLS 1.2+ |
| App Service → Blob Storage | HTTPS (hallittu identiteetti) | TLS 1.2+ |
| App Service → Microsoft Graph | HTTPS | TLS 1.2+ |
App Service pakottaa TLS 1.3:n vähimmäisvaatimuksena etuovella (TLS 1.0/1.1/1.2 hylätään); lähtevät yhteydet Azuren taustajärjestelmän palveluihin neuvottelevat TLS 1.2:n tai uudemman.
Levossa
| Tietovarasto | Salaus | Avainten hallinta |
|---|---|---|
| Azure SQL Database | Transparent Data Encryption (TDE) | Microsoftin hallinnoimat avaimet (oletus) tai asiakkaan hallinnoimat avaimet (CMK) |
| Azure Blob Storage | Storage Service Encryption (SSE), AES-256 | Microsoftin hallinnoimat avaimet (oletus) tai asiakkaan hallinnoimat avaimet (CMK) |
| Application Insights | Alustan salaus | Microsoftin hallinnoimat avaimet |
Sovellustaso
| Ominaisuus | Mekanismi |
|---|---|
| Asiakirjankatselimen tokenit | ASP.NET Core Data Protection (WOPI-tyylinen token, 15 minuutin TTL, vuokraajan ristiintarkistus jokaisella anonyymillä katselukutsulla) |
| Vahvistuksen sähköiset allekirjoitukset | Allekirjoittajan ja aikaleiman SHA-256-tiiviste tallennettuna tarkastuskenttiin |
Sisäänrakennettu tietosuoja
AccessPoint toteuttaa rakenteellisia tietosuojakontrolleja, jotka pakotetaan API-kerroksessa, ei vain käyttöliittymässä.
Henkilötietosuodattimen väliohjelmisto
Vastaustason väliohjelmisto sieppaa kaikki JSON-vastaukset ja poistaa henkilötietokentät miltä tahansa kutsujalta, jolla ei ole view-requestor-PII-käyttöoikeutta (Custodianeilla, Contributoreilla, Readereilla, Reviewereillä ja Advisoreilla ei koskaan ole sitä), palvelinpuolella, riippumatta siitä, mitä asiakaspää pyytää. Poistettavat kentät: requestorName, requestorEmail, requestorPhone, requestorAddress, subjectName, subjectDateOfBirth, sekä edustajan identiteetti-/yhteystietokentät ja henkilöllisyyden vahvistamiseen liittyvät muistiinpanot.
Ilmoitusten henkilötietojen piilotus
Kun ilmoituksia lähetetään haltijoille tai avustajille, pyytäjän henkilötiedot korvataan paikkamerkkitekstillä itse ilmoituksen sisällössä — vaikka ilmoitusmalli sisältäisi henkilötietojen yhdistämiskenttiä.
Haltijan/avustajan eristys
- Haltijat näkevät vain heille osoitetut pyynnöt ja työskentelevät puhdistettujen ohjeiden pohjalta
- Avustajat näkevät vain heille osoitetut tehtävät
- Kumpikaan rooli ei voi hakea, selata tai käyttää pyyntöjä oman laajuutensa ulkopuolelta
Lokitus, valvonta ja tarkastus
Application Insights
Kaikki API:n telemetria lähetetään asiakkaan Application Insights -instanssiin:
| Signaali | Mitä tallennetaan |
|---|---|
| Pyyntöjäljet | HTTP-metodi, polku, tilakoodi, kesto, korrelaatiotunnus |
| Riippuvuusseuranta | SQL-kyselyt, Blob-operaatiot, Graph API -kutsut (kesto, onnistuminen/epäonnistuminen) |
| Poikkeukset | Käsittelemättömät poikkeukset pinojäljityksineen |
| Mukautetut mittarit | Pyyntöjen käsittelyajat, asiakirjojen muunnosajat |
Tarkastusketju
AccessPoint ylläpitää kattavaa tarkastusketjua AuditHistory-taulussa (Azure SQL), johon kirjataan entiteettityyppi, entiteettitunnus, toiminto (Create, Update, Delete, StatusChange), kentän nimi, vanha/uusi arvo, valinnainen muutoksen syy (tallennetaan tilasiirtymissä kuten sulkeminen ja uudelleenavaus), todennettu käyttäjä sekä UTC-aikaleima. Tarkastustietueet ovat muuttumattomia — niitä ei voi muokata tai poistaa API:n kautta.
Hash-ketjutettu tarkastusloki
Kenttätason tarkastusketjun lisäksi peukaloinnin paljastava, vain lisäävä AuditLedger (SHA-256-hash-ketju) tallentaa toiminnot kaikissa moduuleissa. Eheys voidaan tarkistaa palvelinpuolella, ja pyyntöä varten voidaan tuottaa oikeuskelpoinen tapauksen tarkastusvienti (aiemmin ”todistepaketti”).
Optimistinen samanaikaisuus
Korkean kilpailun entiteeteillä (Requests, Documents, CustodianAssignments) on kullakin SQL Serverin ROWVERSION-samanaikaisuustoken. Asiakaspää palauttaa rivin version päivityksen yhteydessä; jos toinen kirjoittaja on muuttanut riviä sillä välin, tallennus hylätään HTTP 409 -virheellä ("Concurrent edit detected" eli samanaikainen muokkaus havaittu) sen sijaan, että se ylikirjoitettaisiin hiljaisesti.
Säilytyksen puhdistusloki
Yksi RetentionService-moottori poistaa vanhentuneet tietueet viidestä rekisteristä — pyynnöt, arvioinnit, poikkeamat, kantelut ja itsenäiset tietosuojariskit — ohjattuna tyyppikohtaisella RetentionPeriodMonths + RetentionStartPoint -parilla (NULL = säilytys toistaiseksi, oletusarvo). Tietueet, joiden ei tule vanhentua, on suljettu pois rakenteen vuoksi (Voimassa-tilassa oleva arviointi, Hyväksytty riski, tapaukseen ankkuroitu riski), ja vanhentunut tietue, josta toinen avoin tapaus on yhä riippuvainen, hylätään palvelinpuolella; kelpoisuus arvioidaan uudelleen puhdistushetkellä. Kun tietue puhdistetaan, moottori poistaa tietokantatietueiden lisäksi asiakirjablobit, muunnetut PDF:t, merkinnät ja vientipaketit Blob Storagesta. RetentionPurgeLog tallentaa, mitä poistettiin, milloin ja kenen toimesta — EntityName tunnistaa, mistä rekisteristä tietue oli peräisin, sen numeron, tyypin, sulkemispäivän ja asiakirjamäärän tilannekuvan ohella — vaatimustenmukaisuustason jäljen, joka säilyy tietojen poistamisen jälkeenkin eikä itse koskaan puhdistu.
Log Analytics ja hälytykset
Application Insightsin taustalla on Log Analytics -työtila, jonka säilytysaika on määritettävissä (oletus 90 päivää; määritettävissä 30–730 päivää). Tiedot voidaan viedä Microsoft Sentineliin tai olemassa olevaan SIEM-järjestelmään. Bicep-käyttöönotto sisältää kaksi oletusmittarihälytystä App Servicelle:
| Hälytys | Vakavuus | Ehto | Aikaikkuna |
|---|---|---|---|
| Palvelinvirheet | 2 (Varoitus) | HTTP 5xx -määrä > 5 | 5 minuuttia |
| Korkea latenssi | 3 (Tiedoksi) | Keskimääräinen vasteaika > 5 sekuntia | 15 minuuttia |
Asiakkaat voivat mukauttaa kynnysarvoja ja lisätä toimintaryhmiä (sähköposti, SMS, webhook) Azure-portaalissa.