Anbefalinger for å beskytte programhemmeligheter
Gjelder for denne Power Platform anbefalingen for sjekkliste for godt strukturert sikkerhet:
SE:07 | Beskytt programhemmeligheter ved å herde lagringsplassen og begrense tilgang til og manipulering samt ved å overvåke disse handlingene. Kjør en pålitelig og regelmessig prosess som kan improvisere rotasjoner for nødssituasjoner. |
---|
Denne veiledningen beskriver anbefalingene for sikring av sensitiv informasjon i arbeidsbelastninger. Riktig behandling av hemmeligheter er avgjørende for å opprettholde sikkerheten og integriteten til programmet, arbeidsbelastningen og de tilknyttede dataene. Uriktig håndtering av hemmeligheter kan føre til datainnbrudd, tjenesteavbrudd, regelbrudd og andre problemer.
Legitimasjon, for eksempel API-nøkler, Open Authorization-tokener (OAuth) og SSH-nøkler (Secure Shell) er hemmeligheter. Krav til overholdelse kan føre til at konfigurasjonsinnstillinger som vanligvis ikke anses som hemmelige, blir behandlet som programhemmeligheter.
Definisjoner
Term | Definisjon |
---|---|
Sertifikater | Digitale filer som inneholder fellesnøklene for kryptering eller dekryptering. |
Legitimasjon | Informasjon som brukes til å kontrollere identiteten til utgiveren eller forbrukeren i en kommunikasjonskanal. |
Søk etter legitimasjon | Prosessen med å validere kildekoden for å forsikre deg om at hemmeligheter ikke er inkludert. |
Kryptering | Prosessen som data gjøres uleselige og låses med en hemmelig kode på. |
Key | En hemmelig kode som brukes til å låse eller låse opp krypterte data. |
Minste tillatelsestilgang | Et nulltillitsprinsipp som har som mål å minimere et sett med tillatelser for å fullføre en jobbfunksjon. |
Administrert identitet | En identitet som er tildelt til ressurser og administrert av Azure. |
Ikke-hemmelig | Informasjon som ikke setter arbeidsbelastningen i fare hvis den er lekket. |
Rotasjon | Prosessen med regelmessig oppdatering av hemmeligheter slik at hvis de er kompromittert, er de bare tilgjengelige i begrenset tid. |
Hemmelighet | En konfidensiell komponent i systemet som muliggjør kommunikasjon mellom komponenter i arbeidsbelastningen. Hvis hemmeligheter lekkes, kan det føre til et sikkerhetsbrudd. |
X.509 | En standard som definerer formatet for fellesnøkkelsertifikater. |
Viktig!
Ikke behandle ikke-hemmeligheter like hemmeligheter. Hemmeligheter krever streng drift som er unødvendig for ikke-hemmelige, og som kan føre til ekstra kostnader.
Programinnstillinger som ikke er hemmeligheter, for eksempel nettadressene til API-ene som programmet trenger, må holdes atskilt fra programkoden eller programhemmelighetene. Hvis du vil lagre programkonfigurasjon, kan du vurdere å bruke en tilpasset tilkobling eller miljøvariabler. Et annet alternativ er å bruke en Dataverse-tabell til å lagre metadata om programkonfigurasjonen. Du må imidlertid finne en måte å fylle ut disse dataene på i et nytt miljø, for eksempel ved å overføre konfigurasjonsdata fra utvikling til testing eller produksjon. Du kan bruke dataflyter til å oppnå dette.
Viktige utformingsstrategier
Vurder følgende områder for behandling av hemmeligheter før du lagrer og behandler hemmeligheter:
- Opprettede hemmeligheter bør lagres i sikker lagring med strenge tilgangskontroller.
- Hemmelig rotasjon er en proaktiv operasjon, mens tilbakekalling er reaktiv.
- Bare klarerte identiteter skal ha tilgang til hemmeligheter.
- Du bør vedlikeholde et revisjonsspor for å inspisere og validere tilgang til hemmeligheter.
Lag en strategi rundt disse punktene for å hindre identitetstyveri, unngå avvisning og minimere unødvendig informasjonsutnyttelse.
Sikre fremgangsmåter for hemmelig administrasjon
Vi anbefaler at nøkler har tre ulike roller: bruker, administrator og sikkerhetsrevisor. Rolleskillelse bidrar til å sikre at bare klarerte identiteter har tilgang til hemmeligheter med riktig tillatelsesnivå. Informer utviklere, administratorer og annet relevant personell om viktigheten av gode fremgangsmåter for hemmelig administrasjon og sikkerhet.
Forhåndsdelte nøkler
Du kan kontrollere tilgangen ved å opprette distinkte nøkler for hver forbruker. En klient, for eksempel en app eller flyt, kommuniserer med en tredjeparts API ved hjelp av en forhåndsdelt nøkkel. Hvis en annen klient må ha tilgang til samme API, må de bruke en annen nøkkel. Ikke del nøkler selv om to personer har samme tilgangsmønstre eller roller. Forbrukeromfang kan endres over tid, og du kan ikke oppdatere tillatelser uavhengig eller skille bruksmønstre etter at en nøkkel er delt. Distinkt tilgang gjør også tilbakekalling enklere. Hvis en forbrukernøkkel blir kompromittert, er det enklere å trekke tilbake eller påvirke nøkkelen uten å påvirke andre kunder.
Denne veiledningen gjelder for ulike miljøer. Den samme nøkkelen bør ikke brukes til både førproduksjons- og produksjonsmiljøer. Hvis du er ansvarlig for å opprette forhåndsdelte nøkler, må du passe på at du oppretter flere nøkler for å støtte flere klienter.
Hvis du vil ha mer informasjon, kan du se Anbefalinger for identitets- og tilgangsadministrasjon.
Hemmelig lager
Bruk et hemmelig administrasjonssystem, for eksempel Azure Key Vault, til å lagre hemmeligheter i et herdet miljø, kryptere inaktive og under overføring, og overvåke tilgang og endringer i hemmeligheter. Hvis du trenger å lagre programhemmeligheter, holder du dem utenfor kildekoden for enkel rotasjon.
Et eget, hemmelig administrasjonssystem gjør det enkelt å lagre, rulle ut og kontrollere tilgang til programhemmeligheter. Bare autoriserte identiteter og tjenester skal ha tilgang til hemmelige lagre. Tilgang til systemet kan begrenses via tillatelser. Bruk alltid metoden med minste rettigheter når du tildeler tillatelser.
Du må også kontrollere tilgang på det hemmelige nivået. Hver hemmelighet skal bare ha tilgang til ett enkelt ressursomfang. Opprett isolasjonsgrenser slik at en komponent bare kan bruke hemmeligheter den trenger. Hvis en isolert komponent er kompromittert, kan den ikke få kontroll over andre hemmeligheter og potensielt hele arbeidsbelastningen. Én måte å isolere hemmeligheter på er å bruke flere nøkkelhvelv. Det koster ikke noe ekstra å opprette ekstra nøkkelhvelv.
Implementer sporing av endringer og overvåking for hemmelig tilgang. Logg hvem som har tilgang til hemmeligheter, og når uautorisert aktivitet eller mistenkelig aktivitet pågår. Hvis du vil ha informasjon om logging fra et sikkerhetsperspektiv, kan du se Anbefalinger for overvåking og trusselregistrering.
Hemmelig rotasjon
Ha en prosess på plass som opprettholder hemmelighetsrensing. Levetiden til en hemmelig påvirker administrasjonen av hemmeligheten. For å redusere antall angrep bør hemmeligheter avvikles og erstattes med nye hemmeligheter så ofte som mulig.
Håndter OAuth tilgangstokens forsiktig, og ta hensyn til tiden de kan leve. Vurder om vinduet for innsigelse må justeres til en kortere periode. Oppdateringstokener må lagres sikkert med begrenset tilgang til programmet. Fornyede sertifikater bør også bruke en ny nøkkel. Hvis du vil ha informasjon om oppdateringstokener, kan du se Secure OAuth 2.0 On-Behalf-Of-oppdateringstokener.
Erstatt hemmeligheter etter at de har nådd slutten av levetiden,ikke lenger brukes av arbeidsbelastningen, eller om de har blitt kompromittert. Derimot må du ikke trekke tilbake aktive hemmeligheter med mindre det er en nødsituasjon. Du kan finne statusen til en hemmelighet ved å vise tilgangslogger. Hemmelige rotasjonsprosesser skal ikke påvirke påliteligheten eller ytelsen til arbeidsbelastningen. Bruk strategier som bygger opp overflødighet i hemmeligheter, forbrukere og tilgangsmetoder for jevn rotasjon.
Sikre fremgangsmåter ved bruk av hemmeligheter
Som hemmelig generator eller operatør bør du kunne rulle ut hemmeligheter på en sikker måte. Mange organisasjoner bruker verktøy til å dele hemmeligheter sikkert både internt i organisasjonen og eksternt med partnere. I fravær av et verktøy må du ha en prosess for riktig avlevering av legitimasjon til autoriserte mottakere. Planene for nødgjenoppretting skal inkludere hemmelige gjenopprettingsprosedyrer. Ha en prosess for situasjoner der en nøkkel blir kompromittert eller utsatt og må genereres på nytt ved behov. Vurder følgende gode fremgangsmåter for sikkerhet når du bruker hemmeligheter:
Forhindre hardkoding
Ikke hardkode hemmeligheter som statisk tekst i kodeartefakter, for eksempel skyflyter og lerretsapper, konfigurasjonsfiler og samlebånd for kompileringsdistribusjon. Denne praksisen med høy risiko gjør koden utsatt fordi hemmeligheter utsettes for alle med lesetilgang.
Bruk verktøy som med jevne mellomrom oppdager eksponerte hemmeligheter i programkoden og bygger artefakter. Du kan legge til disse verktøyene som en del av utrullingskanalene for å søke etter legitimasjon før utrulling av kildekoden. Gå gjennom og rens programlogger regelmessig for å sikre at ingen hemmeligheter registreres utilsiktet. Du kan også vise gjenkjenning via kollegaanmeldelser.
Merk
Hvis søkeverktøyene oppdager en hemmelighet, må denne hemmeligheten betraktes som kompromittert. Den må trekkes tilbake.
Svar på hemmelig rotasjon
Som eier av en arbeidsbelastning må du forstå planen og policyer for hemmelig rotasjon slik at du kan innlemme nye hemmeligheter med minimalt avbrudd for brukere. Når en hemmelighet roteres, kan det hende at det finnes et vindu der den gamle hemmeligheten ikke er gyldig, men den nye hemmeligheten er ikke plassert. I dette vinduet bekrefter ikke komponenten som arbeidsbelastningen prøver å nå, forespørsler. Du kan redusere disse problemene ved å bygge inn logikk for nytt forsøk i koden. Du kan også bruke samtidige tilgangsmønstre som gjør det mulig å ha flere legitimasjoner som trygt kan endres uten at det påvirker hverandre.
Arbeid med driftsteamet og vær en del av endringsbehandlingsprosessen. Du bør la legitimasjonseiere få vite når du avvikler en del av arbeidsbelastningen som bruker legitimasjoner som det ikke lenger er behov for.
Integrer hemmelighetshenting og -konfigurasjon i den automatiske utrullingskanalen. Hemmelighetshenting bidrar til å sikre at hemmeligheter hentes automatisk under utrulling. Du kan også bruke hemmelige injeksjonsmønstre for innsetting av hemmeligheter i programkoden eller konfigurasjonen ved kjøretid, noe som hindrer at hemmeligheter blir utsatt for logger eller versjonskontroll ved et uhell.
Tilrettelegging for Power Platform
Avsnittene nedenfor beskriver Power Platform-funksjoner og -egenskaper du kan bruke til å administrere programhemmeligheter.
Bruk Azure Key Vault-hemmeligheter
Miljøvariabler gjør det mulig å henvise til hemmeligheter lagret i Azure Key Vault. Disse hemmelighetene blir deretter gjort tilgjengelige i Power Automate-flyter og egendefinerte koblinger. Vær oppmerksom på at hemmelighetene ikke er tilgjengelige for bruk i andre tilpassinger eller generelt via API-en.
De faktiske hemmelighetene lagres i Azure Key Vault, og miljøvariabelen henviser til plasseringen til Key Vault-hemmeligheten. Bruk av Azure Key Vault-hemmeligheter med miljøvariabler krever at du konfigurerer Azure Key Vault slik at Power Platform kan lese de bestemte hemmelighetene du vil henviser til. Hvis du vil ha mer informasjon, kan du se Bruk miljøvariabler i løsninger og Bruk miljøvariabler i egendefinerte koblinger for løsninger.
Bruk løsningskontroll
Med løsningskontrollen kan du utføre en omfattende statisk analysekontroll av løsningene mot et sett med regler for beste fremgangsmåte og raskt finne disse problematiske mønstrene. Når kontrollen er fullført, får du en detaljert rapport som viser en liste over problemene som ble funnet, komponentene og koden som er berørt, og koblinger til dokumentasjon som beskriver hvordan du løser hvert enkelt problem. Se gjennom tilgjengelige regler for løsningskontroll i kategorien Sikkerhet. Hvis du vil ha mer informasjon, kan du se Bruk løsningskontroll til å validere løsningene.
Bruk CyberArk-handlinger
CyberArk tilbyr en plattform for identitetssikkerhet som sikrer identiteter for mennesker og maskiner fra ende-til-ende. Power Automate-skrivebordsflyter gjør at du kan hente legitimasjoner fra CyberArk. Hvis du vil ha mer informasjon, kan du se CyberArk-handlinger.
Relatert informasjon
- Bruke miljøvariabler i løsninger
- Bruke miljøvariabler i egendefinerte løsningskoblinger
- Bruk løsningskontroll til å validere løsningene dine
- CyberArk Handlinger
- Azure DevOps Legitimasjonsskanner-oppgave
- Konfigurer DevOps-utvidelsen Azure DevOps Microsoft Security
- Konfigurer GitHub Advanced Security for Azure DevOps
- Anbefalinger for overvåking og trusseldeteksjon
- Anbefalinger for identitets- og tilgangsadministrasjon
Sikkerhetssjekkliste
Se hele settet med anbefalinger.