Vai al contenuto principale
Questa pagina si applica solo alle distribuzioni Azure AKS. La configurazione di conformità FIPS non è applicabile alle distribuzioni su macchine virtuali.

Panoramica

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

ComponenteDistribuzione standardDistribuzione con FIPS abilitato
Versione di Redis6.2 o successivaSolo 6.2–7.0.7
Tipo di condivisione fileSMBNFS
Pool di nodi AKSStandardCon FIPS abilitato
Accesso all’archiviazionePubblico o privatoSolo rete virtuale (per NFS)

Requisiti

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

Configurare l’accesso alla condivisione NFS

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

env_specific.yml

Abilita il supporto per FIPS impostando il seguente Parameter:
k8s_fips_enabled: true

Azure Government Cloud

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

Verifica

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)