Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo fornisce linee guida per gestire al meglio i requisiti di configurazione delle funzioni di rete usando Azure Operator Service Manager. Ciò include la progettazione di schemi di gruppo di configurazione ottimali (CGS), valori del gruppo di configurazione (CGV) e modelli di risorse networkFunctions (NFS). Tenere presenti queste procedure durante l'onboarding e la distribuzione di NFS.
Approccio di configurazione
Quando si progettano le risorse di configurazione, considerare le seguenti linee guida per il metaschema:
- Scegliere prima di tutto quali parametri esporre all'operatore.
- Una regola generale consiste nell'esporre i parametri supportati dall'operazione diretta, ad esempio .
helm value - Eliminare i parametri supportati da un altro agente, ad esempio
cloudinit userdata.
- Una regola generale consiste nell'esporre i parametri supportati dall'operazione diretta, ad esempio .
- Ordinare i parametri in set specifici del sito, specifici dell'istanza e specifici della sicurezza.
- Assicurarsi che i parametri non si sovrappongano tra i set.
- Definire i parametri obbligatori e facoltativi.
- Per i parametri facoltativi, definire un valore predefinito ragionevole.
- Per evitare l'esposizione dei segreti, assicurarsi di configurare correttamente i parametri specifici della sicurezza.
approccio One-CGS
La raccomandazione originale era quella di usare solo un singolo insieme CGS/CGV per l'intero NF. Questo approccio ha consolidato i parametri specifici del sito, specifici dell'istanza e specifici della sicurezza insieme. Solo in rari casi, in cui un servizio aveva più NFs, venivano utilizzati più set di dati. Molti partner aziendali hanno eseguito correttamente l'onboarding con questo approccio, che continua a essere supportato. Tuttavia, questo approccio non nasconde segreti. Tutti i valori di configurazione vengono archiviati in testo normale e sono visualizzabili tramite la maggior parte dei metodi di Azure.
Approccio Tre-CGS
È ora consigliabile usare almeno tre set CGS/CGV, organizzando i parametri come indicato di seguito:
Parametri specifici del sito
- Gli esempi includono indirizzi IP e nomi univoci.
- Usa CGS/CGV senza segreti.
- Archivia i valori in testo normale durante le distribuzioni.
Parametri specifici dell'istanza
- Gli esempi includono timeout e livelli di debug.
- Usa CGS/CGV senza segreti.
- Archivia i valori in testo normale durante la distribuzione.
Parametri specifici della sicurezza
- Gli esempi includono password e certificati.
- Utilizza CGS/CGV con segreti.
- Archiviare i valori in Azure Key Vault (AKV) per nascondere durante le distribuzioni.
Avviso
- Quando si utilizzano informazioni riservate, è consigliabile limitare l'accesso all'ambito del controllo degli accessi in base al ruolo
Microsoft.Resources/deployments/exportTemplate/action.
CGS senza segreti
In questo esempio viene illustrato un CGS che espone i parametri abc, xyz e qwe. Due dei parametri hanno valori predefiniti e uno è contrassegnato come obbligatorio.
{
"type": "object",
"properties": {
"abc": {
"type": "integer",
"default": 30
},
"xyz": {
"type": "integer",
"default": 40
},
"qwe": {
"type": "integer"
}
}
"required": "qwe"
}
CGV senza segreti
Questo esempio mostra l'input CGV fornito dall'operatore durante l'implementazione CGV per soddisfare i requisiti del precedente CGS.
{
"qwe": 20
}
Questo esempio mostra la risorsa CGV renderizzata creata al termine della distribuzione di CGV.
{
"abc": 30,
"xyz": 40,
"qwe": 20
}
CGV con segreti senza AKV
Quando AKV non viene utilizzato, considera i seguenti requisiti per il modello di Azure Resource Manager (ARM) per offuscare correttamente i valori segreti durante il ciclo di vita delle risorse CGV.
- Per contenere tutti i segreti, definire un parametro dell'oggetto con
"type": "secureObject".- Questa configurazione nasconde la visualizzazione dei segreti come parametri del modello.
In questo esempio viene illustrato come definire un parametro secretCgvContentdell'oggetto .
"parameters": {
"secretCgvContent": {
"type": "SecureObject"
}
}
Annotazioni
- Non attivare il contenuto
secretCgvContentusando la funzione loadJsonContent() di Bicep. - Non includere un
SecureObjectparametro in una definizione di variabile.
- In Proprietà della risorsa CGV usare
configurationType: 'Secret'e"secretConfigurationValue": "[string(parameters('secretCgvContent'))]".- Questa configurazione impedisce la visualizzazione dei dati segreti tramite la maggior parte delle interfacce utente di Azure.
In questo esempio viene illustrato come passare tutti i segreti nell'oggetto secretCgvContent alla risorsa CGV.
{
"type": "Microsoft.HybridNetwork/configurationGroupValues",
"properties": {
"configurationType": "Secret"
"secretConfigurationValue": "[string(parameters('secretCgvContent'))]"
}
}
CGV con segreti con AKV
Quando viene usato AKV, prendere in considerazione i requisiti seguenti del modello ARM per nascondere correttamente i valori segreti durante l'intero ciclo di vita delle risorse CGV.
- Definire una stringa
parameterper ogni segreto e un oggettovariableper raccogliere tutti i valori dei segreti.- La variabile oggetto contiene solo un riferimento alla stringa del parametro.
In questo esempio viene illustrato come definire un parametro secretPassword1 contenuto all'interno della variabile secretVal.configurationValueoggetto .
"parameters": {
"secretPassword1": {
"type": "string"
}
}
"variables": {
"configurationValue": {
"secretVal": {
"elastic_passwd": "secretPassword1"
}
}
}
- Per l'input del parametro, usare un riferimento di modello a AKV al posto del segreto di testo normale.
- Questa configurazione nasconde la visualizzazione dei segreti come variabili modello.
Questo esempio illustra come definire il segreto usando il segreto secretPassword1 AKV e la chiave.
"secretPassword1": {
"reference": {
"keyVault": {
"id": "/subscriptions/xxx/resourceGroups/yyy/providers/Microsoft.KeyVault/vaults/zz"
},
"secretPassword1": "<akv-secret-key>"
}
}
- In Proprietà della risorsa CGV usare
configurationType: 'Secret'e"secretConfigurationValue": "string(secretVal.configurationValue)".- Questa configurazione impedisce la visualizzazione dei dati segreti tramite la maggior parte delle interfacce utente di Azure.
In questo esempio viene illustrato come passare tutti i segreti nell'oggetto secretVal.configurationValue al nuovo CGV.
{
"resources": [ {
"type": "Microsoft.HybridNetwork/configurationGroupValues",
"properties": {
"configurationType": "Secret"
"secretConfigurationValue": "string(secretVal.configurationValue)"
}
}
]
networkFunctions con segreti
Prendere in considerazione i seguenti requisiti del modello ARM per nascondere correttamente i valori dei segreti durante tutto il ciclo di vita delle risorse networkFunctions.
- Usare
"type": "secureObject"nel modello per ilsecretValuesparametro econfig- Questa configurazione nasconde la visualizzazione dei segreti come parametri del modello.
"parameters": {
"nfValues": {
"type": "object"
},
"siteSpecificValues": {
"type": "object"
},
"secretValues": {
"type": "secureObject"
},
"config": {
"type": "secureObject",
"defaultValue": "[union(parameters('nfValues'), parameters('siteSpecificValues'), parameters('secretValues'))]"
}
}
Annotazioni
- Non attivare il contenuto
secretValuesusando la funzione loadJsonContent() di Bicep. - Non includere un
SecureObjectparametro in una definizione di variabile.
- Nelle proprietà della risorsa networkFunctions, usare
configurationType: 'Secret'e"secretDeploymentValues": "[string(parameters('config'))]".- Una volta distribuita una funzione di rete, questa configurazione impedisce di visualizzare i dati segreti tramite la maggior parte delle interfacce utente di Azure.
"resources": [
{
"type": "Microsoft.HybridNetwork/networkFunctions",
"configurationType": "Secret",
"secretDeploymentValues": "[string(parameters('config'))]",
}
]
Panoramica dello schema JSON
Json Schema è uno standard IETF (Internet Engineering Task Force) che fornisce un formato per i dati JSON necessari per un'applicazione e come interagire con esso. L'applicazione di questi standard per un documento JSON consente di applicare la coerenza e la validità dei dati tra i dati JSON.
Dove viene usato lo schema JSON?
- Azure Operator Service Manager usa la notazione dello schema JSON come meta schema all'interno
schemaDefinitiondelle proprietà per l'oggetto CGSConfigurationGroupSchemaPropertiesFormat. - Azure Operator Service Manager consente al progettista e all'editore di specificare lo schema JSON quando l'operatore deve fornire dati (valori JSON) durante l'instanziazione di un servizio di rete del sito (SNS) o NF.
- Azure Operator Service Manager consente di rendere facoltative o obbligatorie le proprietà del meta schema. Dove una proprietà è contrassegnata come
required, deve essere specificata nei valori JSON.
Quali parole chiave JSON sono supportate?
Per il meta schema CGS, Azure Operator Service Manager implementa il supporto per le parole chiave standard JSON in base al tipo:
- Per i tipi di oggetto, il supporto delle parole chiave è limitato dai criteri di filtro. Vedere l'oggetto nella documentazione di riferimento per lo schema JSON.
- Per i tipi stringa, il supporto delle parole chiave non è limitato o filtrato. Consultare string nel riferimento dello schema JSON.
- Per i tipi numerici, il supporto delle parole chiave non è limitato o filtrato. Consultare Tipi numerici nella guida di riferimento dello schema JSON.
Campi facoltativi e obbligatori
Si dichiara una proprietà come facoltativa includendo una required parola chiave che omette la proprietà facoltativa. Se non si specifica la required parola chiave , tutte le proprietà vengono considerate obbligatorie. Per supportare un tipo di proprietà facoltativo, è necessario almeno un tipo di proprietà obbligatorio.
{
"type": "object",
"properties": {
"abc": {
"type": "integer",
"default": 30
},
"xyz": {
"type": "string",
"default": "abc123"
}
}
"required": ["abc"]
}
Valori predefiniti nello schema JSON
Per le proprietà facoltative, Azure Operator Service Manager implementa un metodo personalizzato per la gestione dei valori predefiniti. Quando un valore predefinito è definito nel meta schema CGS, Azure Operator Service Manager usa tale valore in cui la proprietà è mancante o non definita nei dati CGV di input. La logica del validator di Azure Operator Service Manager essenzialmente idrata il valore CGV con il valore predefinito quando l'operatore non fornisce un valore.
Come definire le impostazioni predefinite
Le impostazioni predefinite devono essere specificate all'interno di proprietà o all'interno di elementi di una matrice. Nell'esempio seguente vengono illustrate le impostazioni predefinite con tipi di proprietà integer e string:
{
"type": "object",
"properties": {
"abc": {
"type": "integer",
"default": 30
},
"xyz": {
"type": "string",
"default": "abc123"
}
}
}
Regole per la definizione delle impostazioni predefinite
Quando si convalida un valore predefinito, vengono applicate le regole seguenti. Prendere in considerazione queste regole quando si usano valori predefiniti per garantire i risultati previsti.
- Un valore predefinito non deve essere applicato a una proprietà obbligatoria.
- Un valore predefinito viene valutato nell'ordine dall'alto verso il basso da dove viene visualizzata per prima la parola chiave.
- Se esiste un valore di proprietà nel CGV di input, vengono valutati solo gli elementi figlio di tali proprietà per le impostazioni predefinite.
- Se nel CGV di input non esiste un valore di proprietà, viene valutato un valore predefinito, insieme a qualsiasi elemento figlio.
- Dove un valore della proprietà è il
objecttipo e la relativa chiave non esiste nel CGV di input, non vengono valutate impostazioni predefinite per l'oggetto.