Questa pagina si applica solo alle distribuzioni Azure AKS. La configurazione di conformità FIPS non è applicabile alle distribuzioni su macchine virtuali.
La conformità allo standard FIPS 140-2 (Federal Information Processing Standard) è richiesta per alcune implementazioni destinate al governo degli Stati Uniti e a settori regolamentati. Per abilitare la conformità FIPS nella tua distribuzione di Vantage sono necessarie specifiche modifiche di configurazione durante la creazione dell’infrastruttura e l’installazione.
Differenze principali rispetto alla distribuzione standard
| Componente | Distribuzione standard | Distribuzione con FIPS abilitato |
|---|
| Versione di Redis | 6.2 o successiva | Solo 6.2–7.0.7 |
| Tipo di condivisione file | SMB | NFS |
| Pool di nodi AKS | Standard | Con FIPS abilitato |
| Accesso all’archiviazione | Pubblico o privato | Solo rete virtuale (per NFS) |
Restrizione della versione di Redis
Per la conformità a FIPS, Redis deve essere in una versione compresa tra 6.2 e 7.0.7 (non più recente). Le versioni 7.0.8 e successive non sono supportate per le implementazioni FIPS.
Considerazioni sulle condivisioni NFS
Quando FIPS è abilitato, vengono utilizzate condivisioni Network File System (NFS) invece di condivisioni SMB:
- La configurazione dell’account di archiviazione per le condivisioni NFS può consentire l’accesso da indirizzi IP pubblici
- Tuttavia, non è possibile montare condivisioni NFS da un indirizzo IP pubblico
- È possibile connettersi alle condivisioni NFS solo da una macchina all’interno di una rete virtuale considerata attendibile dall’account di archiviazione
Creazione dell’infrastruttura con FIPS
Quando si crea l’infrastruttura in Azure per una distribuzione conforme a FIPS, aggiungere il parametro enableFIPS=true alle distribuzioni del modello ARM.
Creare un cluster AKS con FIPS abilitato
az deployment group create --name aks-cluster \
--resource-group <resource_group_name> \
--template-file files/infrastructure/azure/arms/Cluster.Manual.json \
--parameters kubernetesClusterName=<cluster_name> \
--parameters enableFIPS=true
Dopo aver creato il cluster con FIPS abilitato, eseguire i seguenti comandi per collegare l’account di archiviazione condiviso alla condivisione NFS:
# Get the principal ID of the AKS cluster
export principalId=$(az aks show --name <cluster_name> -g <resource_group_name> \
-o tsv --query identity.principalId)
# Get the subnet scope
export scope=$(az aks show --name <cluster_name> -g <resource_group_name> \
-o tsv --query agentPoolProfiles[*].vnetSubnetId | uniq)
# Crea l'assegnazione di ruolo per consentire al cluster di accedere allo storage
az role assignment create --role "Contributor" \
--assignee-principal-type ServicePrincipal \
--assignee-object-id $principalId \
--scope $scope
Creare account di archiviazione compatibili con FIPS
az deployment group create --name storage \
--resource-group <resource_group_name> \
--template-file files/infrastructure/azure/arms/StorageAccounts.Template.json \
--parameters kubernetesClusterName=<cluster_name> \
--parameters enableFIPS=true
Parameter di configurazione
Abilita il supporto per FIPS impostando il seguente Parameter:
Se si distribuisce su Azure Government Cloud, aggiungere il Parameter s3endpointSuffix immediatamente dopo k8s_fips_enabled:
k8s_fips_enabled: true
s3endpointSuffix: core.usgovcloudapi.net
Aggiungi s3endpointSuffix solo quando distribuisci su Azure Government Cloud. Non includere questo Parameter per le distribuzioni standard nel cloud commerciale di Azure.
Esempio completo di configurazione FIPS
env: vantage
poc: false
domain: yourdomain.gov
product_host: "vantage.{{ domain }}"
loadbalancer:
external_ip: X.X.X.X
container_registry_host: "registry.yourdomain.gov"
container_registry_user: "service"
container_registry_password: "password"
container_registry_name: "{{ container_registry_host }}/vantage"
techcore:
use_gpu_workers: false
use_nn_extraction_training_workers: false
logging:
enabled: true
elasticsearch:
enabled: false
file:
enabled: true
platform_admin_email: [email protected]
smtp:
host: X.X.X.X
login: null
password: ""
port: 587
useSSL: false
mailFrom: [email protected]
database:
type: sqlserver
host: X.X.X.X
username: login
password: password
encrypt: true # Recommended for FIPS
s3storage:
skills:
accessKey: skills_storage_account_name
secretKey: skills_storage_account_key
processing:
accessKey: processing_storage_account_name
secretKey: processing_storage_account_key
temporary:
accessKey: temporary_storage_account_name
secretKey: temporary_storage_account_key
sharedfolder:
accessKey: sharedfolder_storage_account_name
secretKey: sharedfolder_storage_account_key
resourcegroup: your_resource_group
archive:
accessKey: archive_storage_account_name
secretKey: archive_storage_account_key
# Cluster Redis - deve essere versione da 6.2 a 7.0.7 per FIPS
redis:
ips: ['172.16.10.101', '172.16.10.102', '172.16.10.103', '172.16.10.104', '172.16.10.105', '172.16.10.106']
port: 6379
password: redispassword
ssl: true # Recommended for FIPS
reporting:
enabled: false
id_reading:
enabled: false
# FIPS Configuration
k8s_fips_enabled: true
# Uncomment for Azure Government Cloud only:
# s3endpointSuffix: core.usgovcloudapi.net
Dopo la distribuzione, controlla che FIPS sia abilitato sui nodi AKS:
# Ottieni le informazioni sui nodi
kubectl get nodes -o wide
# Verifica lo stato FIPS su un nodo (connettiti prima al nodo)
cat /proc/sys/crypto/fips_enabled
# Output: 1 (FIPS abilitato) o 0 (FIPS disabilitato)