Skip to content

Commit

Permalink
Merge branch 'main' of github.com:navikt/nada
Browse files Browse the repository at this point in the history
  • Loading branch information
erikvatt committed Mar 8, 2024
2 parents ee8338d + 405558b commit 95c1d78
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 20 deletions.
17 changes: 17 additions & 0 deletions docs/analyse/koble-pseudonymiserte.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Koble sammen pseudonymiserte views
I [Markedsplassen](https://data.intern.nav.no) er det mulig å tilrettelegge [pseudonymiserte tabeller](/dataprodukter/dele/dataprodukt/#pseudonymisering-av-datasett) for sammenkobling.
Du trenger tilgang til minst to pseudonymiserte tabeller registrert på [Markedsplassen](https://data.intern.nav.no).
Du spesifiserer hvilke tabeller du ønsker å koble sammen.
Du kan også velge å lage konsistente id-er for personer som har byttet fødselsnummer.
For de tabellene som inneholder fødselsnummer må du oppgi hvilken kolonne disse finnes i.
Tabellene slettes etter 21 dager, med mindre du velger noe annet.
Når du bestiller tabellene skjer følgende:

1. Et nytt `BigQuery-dataset` opprettes i et eget Markedsplassen-prosjekt i GCP. Du får tilgang til dette.
2. Markedsplassen generer en verdi som brukes i pseudonymiseringen
3. De opprinnelige tabellene som de pseudonymiserte tabellene er basert på leses av Markedsplassen
4. Konsistente id-er lages ved at vi kobler inn mapping-tabell (ikke påkrevd)
5. Markedsplassen pseudonymiserer kolonner som *produsentene* har merket som pseudonymiserte. SHA256 og den samme verdien for alle tabellene brukes i pseudonymiseringen.
6. View opprettes i `BigQuery-dataset`

Tilganger til vises under ["mine tilganger" på Markedsplassen](https://data.intern.nav.no/user/access).
78 changes: 63 additions & 15 deletions docs/analyse/notebook/generelt.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,20 @@
---
title: Generelt for notebooks
---

## Sette opp nbstripout i notebook
> nbstripout er et verktøyet som sørger for at output celler i Jupyter notebooks utelates fra Git commits.
For å unngå at output celler fra Jupyter notebooks blir pushet sammen med kode til Github anbefaler vi å installere [nbstripout](https://github.com/kynan/nbstripout) for repoet ditt.
For å unngå at output celler fra Jupyter notebooks blir pushet sammen med kode til Github anbefaler vi å installere [nbstripout](https://github.com/kynan/nbstripout).
Dette verktøyet må installeres alle stedet du har repoet sjekket ut.

For å installere, gjør som følger:
For å ta dette i bruk i din notebook:

- `pip install nbstripout --user`
- Kjør kommandoen `nbstripout --install --global` fra repoet ditt lokalt

## Autentisering
## Autentisering mot GCP

Vi anbefaler alle å lære seg å bruke sin personlige bruker fra Jupyter notebooks, dette for å sikre seg at man bruker kun de tilgangene man selv skal ha.

### Personlig bruker

1. I notebooken, åpne en terminal
2. Kjør kommandoen `gcloud auth login --update-adc`
3. Gå til lenken som vises i terminalen og logg inn med NAV-bruker
Expand All @@ -27,21 +24,24 @@ Etter å ha utført stegene over vil du i din notebook kunne jobbe med dine priv
Denne tilgangen er kun midlertidig, og man må gjøre dette hver dag.

### Service account
!!! warn "Dette gjelder kun for [managed notebooks](./managed-notebook.md). Bruker du [KNADA notebook](./knada-notebook.md), se autentisering med [personlig bruker](#personlig-bruker)."

!!! warning
Dette gjelder kun for [managed notebooks](./managed-notebook.md).
Bruker du [KNADA notebook](./knada-notebook.md), se autentisering med [personlig bruker](#personlig-bruker).

En fersk [managed notebook](./managed-notebook.md) vil automatisk autentisere seg mot GCP-tjenester med service accountens credentials.
Det betyr at man er tilkoblet GCP med en service accounten ut av boksen når man starter opp en notebook.
Bruker du denne service accounten, så er det denne brukeren som må få tilgang til kildene du skal snakke med.
Hvis du på et tidspunkt har logget på GCP med din personlige bruker fra notebooken må du bytte tilbake til service accounten.

Det gjør du slik:
Hvis du på et tidspunkt har logget på GCP med din personlige bruker fra notebooken, og har behov for å bytte tilbake kan du følge oppskriften nedenfor.

1. Sjekk hvilken bruker som er aktiv med `gcloud auth list`.
2. Hvis det er din personlige, velg service accounten ved å kjøre `gcloud config set account <eposten til service accounten din>`.
3. Fjern tilgangen til din personlige bruker ved å kjøre `gcloud auth application-default revoke --account <din personlige nav-epost>`.

## Tilpasse Oracle connector for raskere spørringer
Ved å justere `arraysize` og `prefetchrows` kan spørringer mot databaser onprem forbedres markant!

Ved å justere `arraysize` og `prefetchrows` kan spørringer mot Oracle databaser onprem forbedres markant!
Se dokumentasjonen til [oracledb-biblioteket](https://python-oracledb.readthedocs.io/en/latest/user_guide/tuning.html) for mer informasjon.

## Jupyter extensions
Expand All @@ -56,10 +56,58 @@ pip install --upgrade jupyterlab jupyterlab-git --user
```

## Bruk av Github Advanced Security og Dependabot for notebook servere
!!! warning "Dependabot støtter per i dag kun språkene Ruby, JavaScript, Python, PHP, Dart, Elixir, Elm, Go, Rust, Java og .NET så hvis man bruker R kan man ikke benytte seg av det følgende"

Vi oppfordrer notebook brukere til å ha en requirements.txt fil med python bibliotekene som de selv installerer på notebook serveren i et github repo i `navikt` orgen på github. Alle repoer i `navikt` har automatisk aktivert [Github Advanced Security inkludert Dependabot](https://docs.github.com/en/get-started/learning-about-github/about-github-advanced-security). Gjøres dette vil man få varsler om sårbarheter i bibliotekene som er i bruk samt at det automatisk blir generert pull requests i repoet med versjon av biblioteket hvor sårbarheten er fikset.
!!! warning "Dependabot støtter per i dag _ikke_ R, denne oppskriften funker kun for de som bruker kun språkene Ruby, JavaScript, Python, PHP, Dart, Elixir, Elm, Go, Rust, Java og .NET.

Vi oppfordrer Jupyter notebook brukere til å ha en `requirements.txt` fil med Python-bibliotekene som dere selv bruker i et Github-repo.
Alle repoer i `navikt` har automatisk aktivert [Github Advanced Security inkludert Dependabot](https://docs.github.com/en/get-started/learning-about-github/about-github-advanced-security).
Bruker man dette vil man få varsler om sårbarheter i bibliotekene som er i bruk, samt at det automatisk blir generert pull requests i repoet med versjon av biblioteket hvor sårbarheten er fikset.

Dersom man bygger egne Dockerimages for Jupyter eller Airflow tilbyr Dependabot også automatisk scanning etter sårbarheter for disse.

En kan også aktivere [CodeQL](https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning-with-codeql) for repoet som analyserer koden din og genererer alerts ved sårbarheter.
[Se her for informasjon om oppsett av CodeQL](https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning-for-a-repository#configuring-code-scanning-automatically).

## Autentisering mot Github

Det finnes flere måter å autentisere seg mot Github, men vi anbefaler å enten bruke SSH-nøkler eller fine-grained personal access tokens (PAT).

Er du usikker på hva du trenger så anbefaler vi at du starter med fine-grained PAT med en varighet på 7 dager.
Da har du nok tid til å utforske Jupyter, men ingen risiko for at dine tilgangsnøkler blir liggende til evig tid på Jupyter hvis du glemmer å rydde opp.

## SSH-nøkkel

Ved å bruke SSH-nøkler så lager man et nøkkelpar, hvor Github får din offentlige nøkkel, og man har sin private nøkkel lagret i Jupyter notebooken sin.
Vi anbefaler på det sterkeste å ha en egen nøkkel for Jupyter, da kan man enkelt trekke tilbake tilgangen hvis den blir slettet, eller havner på avveie.

Du kan følge Github sin [Generating a new SSH key](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent#generating-a-new-ssh-key), eller kjørende kommandoen nedenfor.
Vi anbefaler å bruke passord på SSH nøkkelen, dette er påkrevd for SSH-nøkler på lokal maskin.

Dersom man bygger egne Dockerimages for Notebooks eller Airflow tilbyr Dependabot også automatisk scanning etter sårbarheter i disse.
```
ssh-keygen -t ed25519 -C "din_epost_email@nav.no"
```

Etter at du har generet et eget nøkkelpar må du legge den offentlige delen inn hos Github.
Du kan følge Github sin [Adding a new SSH key to your account](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account#adding-a-new-ssh-key-to-your-account), eller gå direkte til [SSH and GPG keys](https://github.com/settings/keys), og trykke på `New SSH key`.

Etterpå kan du bruke `git` som vanlig og klone ned med `SSH`-adressen (git@github.com:navikt/ditt-repo.git).

!!! info
SSH-nøkler må ligge i katalogen `~/.ssh` og kun lesbar av deg.
Sette filrettigheter med `chmod 600 ~/.ssh/id_ed25519`.

## Fine-grained PAT

Personal access tokens brukes for å lage et token med en bestemt varighet, som gir alle som har ditt token mulighet til å koble seg til Github.
Med fine-grained tokens kan man spesifisere mer detaljert hva man skal ha tilgang til, for eksempel spesifisere hvilke Github repo man skal ha tilgang til.

Gå til [New fine-grained personal access token](https://github.com/settings/personal-access-tokens/new) for å komme i gang.
Merk at du vil ikke kunne hente ut en PAT etter den har blitt generert, så hvis du mister den så er det bare å rotere tokenet.

For å bruke PAT i Jupyter kan du opprette filen `.netrc` i ditt hjemmeområde i Jupyter med følgende innhold:

```
machine github.com login <PAT>
```

En kan også aktivere [CodeQL](https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning-with-codeql) for repoet som analyserer koden din og genererer alerts ved sårbarheter. [Se her for informasjon om oppsett av CodeQL](https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning-for-a-repository#configuring-code-scanning-automatically).
Etterpå kan du bruke `git` som vanlig og klone ned med `HTTPS`-adressen (https://github.com/navikt/ditt-repo.git)
14 changes: 10 additions & 4 deletions docs/dataprodukter/dele/dataprodukt.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,18 @@ Datasett legges til ved at man klikker seg inn på et `dataprodukt` på [Datamar
Under `Legg til datasett` kan man registrere den aktuelle tabellen fra BigQuery sammen med metadata som gjør det enklere for teamet å beholde oversikten.
Metadata gjør det også enklere for folk utenfor teamet å finne dataene.
Beskrivelser av kolonnene i tabellen kan legges inn i [BigQuery-konsollet](https://console.cloud.google.com/bigquery).
Metadata fra BigQuery synces med Markedsplassen èn gang i timen.


### Pseudonymisering av datasett
### Pseudonymisering av tabeller
Team har ofte data om enkeltpersoner der vi trenger identifikatorer for å kunne koble tabeller sammen og følge personer over tid.
Vi tilbyr en løsning for å registrere BigQuery-views der valgte kolonner pseudonymiseres.
Vi tilbyr en løsning for å registrere BigQuery-view der valgte kolonner pseudonymiseres.
Pseudonymiserte views baserer seg på en hvilken som helst BigQuery-tabell/view i teamets prosjekt.
Ved registrering av `datasett`, kan du velge å pseudonymisere tabellen.
Du må velge minst èn kolonne som skal pseudonymiseres.
Vi oppretter et eget view i teamets prosjekt der kolonnene er pseuodnymisert.
Vi oppretter et eget view i et separat `BigQuery-dataset` i teamets prosjekt.
Her opprettes view der kolonnene er pseuodnymisert.
Kolonnene pseudonymiseres med SHA256-algoritmen og en tilfeldig verdi som er forskjellig for hver tabell.
Metadata som vises på Markedsplassen inneholder adressen til det pseudonymiserte viewet.


Til tross for at tabellene pseudonymiseres med forskjellige verdier, kan de likevel kobles sammen gjennom en [tjenesten vi tilbyr for å koble sammen pseudonymiserte tabeller](/analyse/koble-pseudonymiserte).
3 changes: 2 additions & 1 deletion mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,10 @@ nav:
- KNADA Airflow: analyse/airflow/knada-airflow.md
- Google managed Airflow (Cloud Composer): analyse/airflow/managed-airflow.md
- Metabase: analyse/metabase.md
- Allowlisting av trafikk: analyse/allowlisting.md
- Datafortellinger: analyse/datafortellinger.md
- KNADA VM: analyse/knada-vm.md
- Koble sammen pseudonymisert tabeller: analyse/koble-pseudonymiserte.md
- Allowlisting av trafikk: analyse/allowlisting.md
- Google Secret Manager: analyse/google-secret-manager.md
- Kodeeksempler: analyse/eksempler.md
- TDV driver: analyse/tdv.md
Expand Down

0 comments on commit 95c1d78

Please sign in to comment.