Parametrien suojaaminen
Joskus käyttöönotoissa on välitettävä luottamuksellisia arvoja, kuten salasanoja ja ohjelmointirajapinta-avaimia. Sinun on kuitenkin varmistettava, että nämä arvot on suojattu. Joissakin tilanteissa et halua, että käyttöönoton luova henkilö tietää salaisen koodin arvot. Toisinaan joku antaa parametriarvon, kun hän luo käyttöönoton, mutta sinun on varmistettava, että salaisia arvoja ei kirjata. Tässä osiossa opit, miten voit suojata parametrejasi.
Tip
Paras tapa on välttää tunnistetietojen kokonaan käyttämistä. Azure-resurssien hallitut käyttäjätiedot voivat mahdollistaa sen, että ratkaisusi komponentit voivat viestiä keskenään turvallisesti ilman tunnistetietoja. Hallitut käyttäjätiedot eivät ole käytettävissä jokaiselle resurssille, mutta niitä kannattaa käyttää missä tahansa. Jos et voi, voit käyttää tässä kuvattuja lähestymistapoja.
Note
Tämän yksikön komennot näytetään käsitteiden havainnollistamiseksi. Älä suorita komentoja vielä. Harjoittelet oppimaani täällä pian.
Suojattujen parametrien määrittäminen
@secure decorator -elementtillä voidaan käyttää merkkijono- ja objektiparametreja, jotka saattavat sisältää salaisia arvoja. Kun määrität parametrin @secure, Azure ei tuo parametriarvoja käytettäviksi käyttöönottolokeissa. Jos luot käyttöönoton vuorovaikutteisesti käyttämällä Azure CLI:tä tai Azure PowerShelliä ja sinun on annettava käyttöönoton aikana arvot, pääte ei näytä tekstiä näytössä.
Osana HR-sovellusten siirtämistä sinun on otettava käyttöön Azure SQL:n looginen palvelin ja tietokanta. Valmistelet loogisen palvelimen järjestelmänvalvojan kirjautumistunnuksilla ja salasanalla. Koska ne ovat herkkiä, nämä arvot on suojattava. Tässä on esimerkkimääritys, jossa luodaan kaksi merkkijonoparametria SQL-palvelimen järjestelmänvalvojan tiedoissa:
@secure()
param sqlServerAdministratorLogin string
@secure()
param sqlServerAdministratorPassword string
Huomaa, että kummassakaan parametrissa ei ole määritetty oletusarvoa. Suosittelemme välttämään oletusarvojen määrittämistä käyttäjänimille, salasanoille ja muille salaisille salasanoille. Muussa tapauksessa jos joku ottaa mallisi käyttöön eikä ymmärrä, että hänen pitäisi ohittaa arvo, hän heikentää suojaustaan, koska hän saa oletusarvon eikä jotain, jonka hän on valinnut itse.
Tip
Varmista, ettet luo luottamuksellisten tietojen tulosteita. Tulosarvoja voi käyttää kuka tahansa, jolla on käyttöoikeus käyttöönottohistoriaan. Ne eivät sovi salaisten koodien käsittelyyn.
Vältä parametritiedostojen käyttämistä salaisiin koodiin
Kuten edellisessä osiossa opit, parametritiedostot ovat erinomainen tapa määrittää joukko parametriarvoja. Luot usein parametritiedostoja kullekin ympäristölle, jossa olet ottamassa niitä käyttöön. Yleensä sinun tulee välttää salaisten arvojen määrittämistä parametritiedostojen avulla. Parametritiedostot tallennetaan usein keskitettyun versiontarkistusjärjestelmään, kuten Git. Monet saattavat käyttää sitä tulevaisuudessa. Älä tallenna luottamuksellisia tietoja versiontarkistusjärjestelmiin, koska niitä ei ole suunniteltu tämäntyyppisten tietojen tallentamiseen.
IntegroiNti Azure Key Vaultin kanssa
Azure Key Vault on palvelu, joka on suunniteltu tallentamaan ja tarjoamaan salaisten koodien käyttöoikeuksia. Voit integroida Bicep-mallit Key Vaultiin käyttämällä parametritiedostoa ja viittausta Key Vaultin salauskoodiin.
Voit käyttää tätä ominaisuutta viittaamalla parametritiedoston Key Vaultiin ja salaisuuteen. Arvoa ei koskaan näytetä, koska viittaat vain sen tunnisteisiin, jotka eivät yksinään ole mitään salaisia. Kun otat mallin käyttöön, Azure Resource Manager ottaa yhteyttä key vaultiin ja noutaa tiedot.
Tip
Voit viitata salaisiin säilöihin, jotka sijaitsevat eri resurssiryhmässä tai tilauksessa, johon olet ottamassa niitä käyttöön.
Tässä on parametritiedosto, joka käyttää Key Vault -viittauksia sql-loogisen palvelimen järjestelmänvalvojan kirjautumisen ja salasanan etsimiseen:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"sqlServerAdministratorLogin": {
"reference": {
"keyVault": {
"id": "/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/PlatformResources/providers/Microsoft.KeyVault/vaults/toysecrets"
},
"secretName": "sqlAdminLogin"
}
},
"sqlServerAdministratorPassword": {
"reference": {
"keyVault": {
"id": "/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/PlatformResources/providers/Microsoft.KeyVault/vaults/toysecrets"
},
"secretName": "sqlAdminLoginPassword"
}
}
}
}
Huomaa, että sen sijaan, että määrittäisi value kullekin parametrille, tässä tiedostossa on reference-objekti, joka sisältää key vaultin tiedot ja salaisen koodin.
Important
Avainsäilö on määritettävä siten, että Resource Manager voi käyttää avainsäilön tietoja mallikäyttöönoton aikana. Lisäksi mallin käyttöönottavalla käyttäjällä on oltava key vaultin käyttöoikeudet. Opit tekemään näitä tehtäviä seuraavassa osiossa.
Key Vaultin käyttäminen moduulien kanssa
Moduulien avulla voit luoda uudelleenkäytettäviä Bicep-tiedostoja, jotka sisältävät joukon resursseja. Moduulien avulla otetaan yleisesti käyttöön ratkaisun osia. Moduuleissa voi olla salaisia arvoja hyväksyvia parametreja. Voit tarjota nämä arvot turvallisesti Bicepin Key Vault -integroinnin avulla. Tässä on esimerkki Bicep-tiedostosta, joka ottaa moduulin käyttöön ja antaa ApiKey salaisen parametrin arvon ottamalla sen suoraan Key Vaultista:
resource keyVault 'Microsoft.KeyVault/vaults@2023-07-01' existing = {
name: keyVaultName
}
module applicationModule 'application.bicep' = {
name: 'application-module'
params: {
apiKey: keyVault.getSecret('ApiKey')
}
}
Huomaa, että tässä Bicep-tiedostossa Key Vault -resurssiin viitataan avainsanan existing. Avainsana kertoo Bicep:lle, että Key Vault on jo olemassa, ja tämä koodi on viittaus kyseiseen säilön. Bicep ei ota sitä uudelleen. Huomaa myös, että moduulin koodi käyttää getSecret()-funktiota moduulin apiKey-parametrin arvossa. Tämä on erityinen Bicep-funktio, jota voidaan käyttää vain suojattujen moduuliparametrien kanssa. Sisäisesti Bicep kääntää tämän lausekkeen samaan Key Vault -viittaukseen, jonka luit aiemmin.