---
title: "Asetustiedoston toimittaminen kehittäjälle turvallisesti"
url: https://uselinkpilot.com/fi/blog/how-to-securely-deliver-a-config-file-to-a-developer
description: "Erota asetukset salaisuuksista, lähetä salaiset arvot kertakäyttölinkillä tai liitteenä, joka tuhoutuu latauksen jälkeen, ja pidä .env poissa gitistä."
lang: fi
---

Tietoturva (https://uselinkpilot.com/fi/blog/category/security)

# Näin toimitat asetustiedoston kehittäjälle turvallisesti

Erota asetukset salaisuuksista, lähetä salaiset arvot kertakäyttölinkillä tai liitteenä, joka tuhoutuu latauksen jälkeen, ja pidä .env poissa gitistä.

LinkPilot Team (https://uselinkpilot.com/fi/author/linkpilot-team) · Ihmiset, jotka rakentavat ja ylläpitävät LinkPilotia TetraCore, LLC -yhtiössä 26. lokakuuta 2026 · Tietoa LinkPilotista (https://uselinkpilot.com/fi/about)

Uusi kehittäjä aloittaa tai alihankkija pääsee töihin, ja ensimmäiseksi hän tarvitsee tiedoston `.env`, jolla projekti saadaan käyntiin. Tiedostossa on yleensä sekaisin harmittomia asetuksia ja tiimin arkaluonteisimpia arvoja, ja siksi se päätyy niin usein yksityisviestiin tai sähköpostiliitteeksi otsikolla ”config”.

Kun toimitat asetustiedoston kehittäjälle turvallisesti, käsittele sitä kahtena eri asiana: asetuksina, jotka voivat kulkea mitä reittiä tahansa, ja salaisuuksina, jotka kulkevat kerran kanavaa pitkin, joka ei säilytä kopioita. Tässä oppaassa käydään läpi, miten nämä kaksi erotetaan, miten salainen osa lähetetään ja mitä kehittäjälle kannattaa kertoa, jotta tiedosto pysyy turvassa perillä.

## Lue tiedosto kuin jokainen rivi olisi julkinen

Avaa tiedosto ja jaa jokainen rivi toiseen kahdesta ryhmästä.

- **Asetukset**: lokitasot, portit, ominaisuusliput, muut kuin tuotannon päätepisteet ja julkiset asiakastunnisteet (client ID). Ne kuuluvat repositorioon esimerkkitiedostona, ja ne voi lähettää millä tavalla tahansa.
- **Salaisuudet**: tietokantojen salasanat, API-avaimet, allekirjoitussalaisuudet, yksityiset avaimet, OAuth-asiakassalaisuudet ja kaikki muu, mikä antaa pääsyn johonkin. Hae sanoja `PASSWORD`, `SECRET`, `TOKEN`, `KEY` ja `PRIVATE` ja lue sitten loput, koska yhteysmerkkijono, jonka sisällä on salasana, ei ilmoita itsestään.

Kysy sitten, mitä kehittäjä on tekemässä. Paikallinen kehitys staging-ympäristöä vasten tarvitsee stagingin arvot. Se ei tarvitse tuotannon avaimia, eikä se tarvitse maksupalvelun tuotantoavainta vain siksi, että tiedostossa sattuu olemaan sellainen.

## Pidä salaisuudet poissa versionhallintaan viedystä tiedostosta

Versionhallintaan viety `.env.example` kuvaa jokaisen muuttujan paikkamerkillä. Oikeat arvot syötetään ajon aikana ympäristöstä, salaisuuksien hallintapalvelusta tai alustan omasta salaisuusvarastosta. Tämän mallin ansiosta toimitettava tiedosto sisältää vain salaiset arvot, ja kehittäjän paikallinen kopio on ainoa paikka, jossa ne ovat koolla.

```bash
# .env.example (committed)
DATABASE_URL=postgres://app:CHANGE_ME@staging-db.internal:5432/app
STRIPE_SECRET_KEY=sk_test_CHANGE_ME
SESSION_SECRET=CHANGE_ME
LOG_LEVEL=debug
```

Lisää `.env` tiedostoon `.gitignore` ennen kuin kenelläkään on oikeaa versiota, ja harkitse pre-commit-koukkua, kuten gitleaksia, jotta vahingossa tehty commit kaatuu heti.

## Anna kehittäjälle omat kirjautumistiedot, kun voit

Luovutus on myös tilaisuus lopettaa tunnusten jakaminen. Jos tietokanta tukee henkilökohtaisia käyttäjiä, luo kehittäjälle oma käyttäjä, jolla on hänen työnsä vaatimat oikeudet ja vanhenemispäivä. Jos API tarjoaa rajattuja avaimia, myönnä yksi hänen nimissään. Alihankkijan tietokantatunnusten oppaassa (https://uselinkpilot.com/fi/blog/how-to-send-a-temporary-database-login-to-a-contractor-securely) käydään tämä malli läpi. Yhdelle henkilölle luodut kirjautumistiedot voi poistaa yhdeltä henkilöltä.

## Näin toimitat salaiset arvot

Kaksi reittiä toimii, eikä kumpikaan jätä tiedostoa viestiin.

**Liitä salaiset rivit kertakäyttölinkkiin.** Avaa salaisen linkin työkalu (https://uselinkpilot.com/fi/tools/free-secret-link-generator), liitä vain rivit, joissa on salaisuuksia, ja luo linkki. Teksti salataan selaimessasi ennen tallennusta, tallennettu kopio tuhotaan, kun linkki avataan ensimmäisen kerran, ja linkki vanhenee tunnin, 24 tunnin tai seitsemän päivän kuluttua, jos kukaan ei avaa sitä. Ilman tiliä mahtuu 10 000 merkkiä, mikä riittää useimmille `.env`-tiedostoille moninkertaisesti.

**Liitä koko tiedosto salaiseen linkkiin.** Kirjautuneena LinkPilot-tilillä salaisuuteen voi liittää enintään kolme tiedostoa, kukin enintään 9 Mt. Jokainen tiedosto salataan selaimessasi avaimella, joka johdetaan salaisuuden omasta avaimesta, joten palvelimella ei koskaan ole selväkielistä tiedostoa, ja liite poistetaan sen ainoan latauksen jälkeen. Tämä reitti on parempi, kun tiedoston on tultava perille tavu tavulta samana, esimerkiksi palvelutilin JSON-tiedosto tai avainsäilö.

Kumpaa tahansa käytät:

1. **Varmista kehittäjän henkilöllisyys** rekrytointi- tai sopimuskanavan kautta, älä sen osoitteen kautta, josta tiedostoa pyydettiin.
2. **Aseta voimassaoloaika** sen mukaan, milloin hän oikeasti avaa linkin. Tunti, jos hän odottaa, päivä, jos hän on toisella aikavyöhykkeellä.
3. **Aseta katselukertojen rajaksi yksi.**
4. **Lisää salalause Pro-tilillä** tuotannon arvoille ja lähetä se eri kanavaa pitkin.
5. **Lähetä linkki yhden rivin saatteella**, jossa kerrot, mitä se sisältää ja minne tiedosto kuuluu. Lähetä muut kuin salaiset asetukset erikseen tai viittaa repositorion esimerkkitiedostoon.

Kutsu holviin on parempi reitti, kun kehittäjä on vakituinen työntekijä ja tiimilläsi on jo käytössä salaisuuksien hallintapalvelu, jossa on kehittäjäkohtaiset käyttöoikeudet. Käytä kertakäyttölinkkiä siihen väliin, kunnes käyttöoikeus on järjestetty, ja kaikille, jotka eivät koskaan tule holviin.

## Kerro kehittäjälle, minne tiedosto kuuluu

Siistikin toimitus voi päättyä huonosti, jos tiedosto päätyy jaettuun kansioon. Lähetä nämä ohjeet yhteysasetusten mukana:

- **Tallenna se nimellä `.env` projektin juureen** äläkä minnekään muualle. Tarkista ennen ensimmäistä committia, että tiedosto `.gitignore` kattaa sen.
- **Älä liitä arvoja tiketteihin tai chattiin** kysyäksesi, ovatko ne oikein. Ilmoita puuttuvasta tai virheellisestä muuttujasta pelkällä nimellä, niin lähettäjä antaa uuden arvon.
- **Vaihto lähtiessä.** Kun yhteistyö päättyy, tiedoston arvot vaihdetaan. Kerro tämä etukäteen, jotta kukaan ei yllättyisi.

## Vahvista ja siivoa jäljet

Pyydä kehittäjää vahvistamaan tiedostonimi, ympäristö ja jokin ei-salainen tunnistetieto, kuten ensimmäisen rivin versiokommentti. Jos kertakäyttölinkki ilmoittaa, että se avattiin ennen kuin kehittäjä ehti avata sen, pidä jokaista sen arvoa paljastuneena ja vaihda ne.

Kun luovutus on valmis, mitätöi linkit, joita ei koskaan avattu, poista tekemäsi väliaikaiset kopiot ja kirjaa, kuka sai minkäkin ympäristön arvot ja milloin. Kirjaus on tarkastusjälki. Itse tiedoston pitäisi olla olemassa vain koneella, joka sitä tarvitsee.

## Lue myös

- API-avainten jakaminen turvallisesti: https://uselinkpilot.com/fi/blog/how-to-share-api-keys-securely
- Turvallinen linkkien jakaminen kehittäjille: https://uselinkpilot.com/fi/blog/secure-link-sharing-for-developers
- Väliaikainen suojattu linkki tiedostojen jakamiseen: https://uselinkpilot.com/fi/blog/how-to-create-a-temporary-secure-link-for-sharing-files
- Näin kertakäyttöiset salaiset linkit toimivat: https://uselinkpilot.com/fi/blog/how-one-time-secret-links-work

## Työkalut tähän artikkeliin

Kertakäyttöisen salaisen linkin luontityökalu

Jaa salasana tai muistiinpano linkillä, joka avautuu vain kerran.
https://uselinkpilot.com/fi/tools/free-secret-link-generator

Itsetuhoutuva viesti

Lähetä muistiinpano, joka katoaa, kun se on luettu kerran.
https://uselinkpilot.com/fi/tools/burn-after-read-secret

Vanhenevan linkin luontityökalu

Luo linkkejä, jotka lakkaavat toimimasta asettamanasi aikana.
https://uselinkpilot.com/fi/tools/temporary-link

## Usein kysytyt kysymykset

### Onko asetustiedoston lähettäminen sähköpostilla turvallista?

### Pitääkö salaisuuksia ylipäätään säilyttää asetustiedostossa?

### Mikä on turvallisin tapa jakaa .env-tiedosto alihankkijalle?

### Pitääkö asetustiedosto salata ennen jakamista?

### Miten varmistan, että kehittäjä sai oikean tiedoston?

### Entä jos lähetin tiedoston väärälle henkilölle?

## LinkPilot lähettää salaisen linkin, joka katoaa, kun se on avattu.

Salataan selaimessasi, näytetään kerran ja tuhotaan sitten. Tiliä ei tarvita.

Luo salainen linkki (https://uselinkpilot.com/fi/tools/free-secret-link-generator)

## Lue seuraavaksi

Tietoturva

### Turvallinen salaisuuksien jakaminen etätiimeissä

Viisi vaihetta etätiimille: kartoitus, holvi tai kertakäyttölinkki käyttöiän mukaan, kolme sääntöä, työkalu Slackissa ja suunnitelma vuotojen varalle.
https://uselinkpilot.com/fi/blog/how-to-implement-secure-secret-sharing-for-remote-teams

Tietoturva

### Kirjautumistietojen turvallinen luovutus tiimien välillä

Kirjautumistietojen turvallinen luovutus tiimien välillä: holvi tai kertakäyttölinkki käytön mukaan, rajatut oikeudet, vastuuhenkilö ja mitätöinti ajoissa.
https://uselinkpilot.com/fi/blog/how-to-create-a-secure-way-to-hand-off-credentials-between-teams

Linkkien seuranta

### Omien URL-osoitteiden hallinta usealla asiakastilillä

Toimiston malli asiakkaiden URL-osoitteille: työtila ja verkkotunnus asiakasta kohden, erilliset roolit ja tarkistuslista asiakkuuden päättymiseen.
https://uselinkpilot.com/fi/blog/how-to-manage-branded-urls-across-multiple-client-accounts

## Structured data

```json
[
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "name": "Etusivu",
        "item": "https://uselinkpilot.com/fi"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": "Blogi",
        "item": "https://uselinkpilot.com/fi/blog"
      },
      {
        "@type": "ListItem",
        "position": 3,
        "name": "Asetustiedoston toimittaminen kehittäjälle turvallisesti",
        "item": "https://uselinkpilot.com/fi/blog/how-to-securely-deliver-a-config-file-to-a-developer"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "@id": "https://uselinkpilot.com/fi/blog/how-to-securely-deliver-a-config-file-to-a-developer#article",
    "headline": "Asetustiedoston toimittaminen kehittäjälle turvallisesti",
    "description": "Erota asetukset salaisuuksista, lähetä salaiset arvot kertakäyttölinkillä tai liitteenä, joka tuhoutuu latauksen jälkeen, ja pidä .env poissa gitistä.",
    "inLanguage": "fi",
    "datePublished": "2026-10-26",
    "dateModified": "2026-10-26",
    "image": "https://uselinkpilot.com/logo-512.png",
    "author": {
      "@type": "Organization",
      "@id": "https://uselinkpilot.com/author/linkpilot-team#organization",
      "name": "LinkPilot Team",
      "url": "https://uselinkpilot.com/fi/author/linkpilot-team"
    },
    "publisher": {
      "@type": "Organization",
      "name": "LinkPilot",
      "url": "https://uselinkpilot.com",
      "logo": {
        "@type": "ImageObject",
        "url": "https://uselinkpilot.com/logo-512.png",
        "width": 512,
        "height": 512
      }
    },
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://uselinkpilot.com/fi/blog/how-to-securely-deliver-a-config-file-to-a-developer"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Onko asetustiedoston lähettäminen sähköpostilla turvallista?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Ei, jos siinä on käytössä olevia salaisuuksia. Sähköpostista jää kopiot kumpaankin postilaatikkoon, jokaiselle synkronoidulle laitteelle ja niiden varmuuskopioihin. Lähetä salaiset arvot kertakäyttölinkillä ja käytä sähköpostia vain muille kuin salaisille asetuksille."
        }
      },
      {
        "@type": "Question",
        "name": "Pitääkö salaisuuksia ylipäätään säilyttää asetustiedostossa?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Vain jos sovellus sitä vaatii. Käytä mieluummin paikkamerkkejä versionhallintaan viedyssä tiedostossa ja syötä oikeat arvot ajon aikana ympäristöstä tai salaisuuksien hallintapalvelusta. Versionhallinnassa oleva esimerkkitiedosto kuvaa rakenteen, ja salaiset arvot kulkevat erikseen."
        }
      },
      {
        "@type": "Question",
        "name": "Mikä on turvallisin tapa jakaa .env-tiedosto alihankkijalle?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Varmista hänen henkilöllisyytensä, anna hänelle omat kirjautumistiedot, jotka on rajattu hänen tarvitsemaansa ympäristöön, lähetä arvot kertakäyttölinkillä ja kerro, minne tiedosto kuuluu ja ettei sitä saa koskaan viedä versionhallintaan."
        }
      },
      {
        "@type": "Question",
        "name": "Pitääkö asetustiedosto salata ennen jakamista?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Jos liität sen LinkPilotin salaiseen linkkiin, se salataan selaimessasi ennen lähetystä ja tuhotaan yhden latauksen jälkeen, joten erillistä vaihetta ei tarvita. Jos käytät muuta kanavaa, salaa tiedosto esimerkiksi age-työkalulla tai salasanasuojatulla arkistolla ja lähetä salalause eri reittiä."
        }
      },
      {
        "@type": "Question",
        "name": "Miten varmistan, että kehittäjä sai oikean tiedoston?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Pyydä häntä vahvistamaan tiedostonimi, ympäristö ja jokin ei-salainen tunnistetieto, kuten versiokommentti tiedoston alussa. Älä koskaan pyydä häntä lähettämään sisältöä takaisin."
        }
      },
      {
        "@type": "Question",
        "name": "Entä jos lähetin tiedoston väärälle henkilölle?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Vaihda jokainen tiedoston salaisuus niissä järjestelmissä, jotka ne hyväksyvät, ja päivitä sitten vanhoja arvoja käyttäneet käyttöönotot. Itse tiedostoa ei voi kutsua takaisin."
        }
      }
    ],
    "inLanguage": "fi"
  },
  {
    "@context": "https://schema.org",
    "@type": "SoftwareApplication",
    "@id": "https://uselinkpilot.com/#software",
    "name": "LinkPilot",
    "applicationCategory": "BusinessApplication",
    "operatingSystem": "Web",
    "description": "LinkPilot is a secure link management platform for creating branded short links, tracking engagement, and sharing secrets with expiring, protected, self-destructing links.",
    "url": "https://uselinkpilot.com",
    "offers": [
      {
        "@type": "Offer",
        "name": "Free",
        "price": "0",
        "priceCurrency": "USD",
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Pro",
        "price": "29",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "29",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency",
        "price": "299",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "299",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency Plus",
        "price": "799",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "799",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Pro (yearly)",
        "price": "288",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "288",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency (yearly)",
        "price": "2988",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "2988",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency Plus (yearly)",
        "price": "7980",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "7980",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Enterprise",
        "priceSpecification": {
          "@type": "PriceSpecification",
          "priceCurrency": "USD"
        },
        "url": "https://uselinkpilot.com/pricing"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "@id": "https://uselinkpilot.com/#organization",
    "name": "LinkPilot",
    "alternateName": "LinkPilot by TetraCore",
    "url": "https://uselinkpilot.com",
    "contactPoint": {
      "@type": "ContactPoint",
      "contactType": "customer support",
      "email": "support@uselinkpilot.com",
      "url": "https://uselinkpilot.com/support"
    },
    "parentOrganization": {
      "@type": "Organization",
      "@id": "https://tetracorehq.com/#organization",
      "name": "TetraCore",
      "url": "https://tetracorehq.com/"
    },
    "logo": {
      "@type": "ImageObject",
      "url": "https://uselinkpilot.com/logo-512.png",
      "width": 512,
      "height": 512
    },
    "description": "LinkPilot is a secure link management platform for creating branded short links, tracking engagement, and sharing secrets with expiring, protected, self-destructing links.",
    "sameAs": [
      "https://x.com/uselinkpilot",
      "https://www.linkedin.com/company/uselinkpilot",
      "https://facebook.com/uselinkpilot",
      "https://github.com/TetraCoreHQ/linkpilot-cli",
      "https://github.com/TetraCoreHQ/linkpilot-mcp",
      "https://www.npmjs.com/package/linkpilot",
      "https://www.npmjs.com/package/@uselinkpilot/sdk",
      "https://www.npmjs.com/package/@uselinkpilot/mcp",
      "https://chromewebstore.google.com/detail/linkpilot-short-links-and/mnmppadihpcncicldpkmgknhnjkondad",
      "https://addons.mozilla.org/en-US/firefox/addon/uselinkpilot/"
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "name": "LinkPilot",
    "url": "https://uselinkpilot.com",
    "potentialAction": {
      "@type": "SearchAction",
      "target": "https://uselinkpilot.com/blog?q={search_term_string}",
      "query-input": "required name=search_term_string"
    }
  }
]
```