Passer au contenu principal
Cette page s’applique uniquement aux déploiements Azure AKS. La configuration de la conformité FIPS ne s’applique pas aux déploiements sur des machines virtuelles.

Vue d’ensemble

La conformité à la norme Federal Information Processing Standard (FIPS) 140-2 est requise pour certains déploiements au sein du gouvernement américain et dans des secteurs réglementés. Pour activer la conformité FIPS dans votre déploiement Vantage, vous devez apporter des modifications de configuration spécifiques lors de la création de l’infrastructure et de l’installation.

Principales différences par rapport au déploiement standard

ComposantDéploiement standardDéploiement compatible FIPS
Version Redis6.2 ou ultérieureUniquement de 6.2 à 7.0.7
Type de partage de fichiersSMBNFS
Pools de nœuds AKSStandardCompatibles FIPS
Accès au stockagePublic ou privéRéseau virtuel uniquement (pour NFS)

Prérequis

Restriction de version de Redis

Pour la conformité FIPS, Redis doit utiliser une version 6.2 à 7.0.7 (pas plus récente). Les versions 7.0.8 et supérieures ne sont pas prises en charge pour les déploiements FIPS.

Considérations relatives aux partages NFS

Lorsque FIPS est activé, les partages Network File System (NFS) sont utilisés à la place des partages SMB :
  • La configuration du compte de stockage associé aux partages NFS peut autoriser l’accès depuis des adresses IP publiques
  • Cependant, vous ne pouvez pas monter de partages NFS depuis une adresse IP publique
  • Vous pouvez uniquement vous connecter à des partages NFS depuis une machine sur un réseau virtuel approuvé par le compte de stockage

Création de l’infrastructure avec FIPS

Lors de la création d’une infrastructure Azure pour un déploiement conforme à FIPS, ajoutez le paramètre enableFIPS=true aux déploiements de modèles ARM.

Créer un cluster AKS conforme FIPS

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

Configurer l’accès au partage NFS

Après avoir créé le cluster compatible FIPS, exécutez les commandes suivantes pour connecter le compte de stockage partagé au partage NFS :
# Obtenir l'ID du principal du cluster AKS
export principalId=$(az aks show --name <cluster_name> -g <resource_group_name> \
  -o tsv --query identity.principalId)

# Obtenir l'étendue du sous-réseau
export scope=$(az aks show --name <cluster_name> -g <resource_group_name> \
  -o tsv --query agentPoolProfiles[*].vnetSubnetId | uniq)

# Créer l'attribution de rôle pour permettre au cluster d'accéder au stockage
az role assignment create --role "Contributor" \
  --assignee-principal-type ServicePrincipal \
  --assignee-object-id $principalId \
  --scope $scope

Créer des comptes de stockage avec FIPS activé

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

Paramètres de configuration

env_specific.yml

Activez la prise en charge de FIPS en configurant le Parameter suivant :
k8s_fips_enabled: true

Azure Government Cloud

Lors d’un déploiement sur Azure Government Cloud, ajoutez le Parameter s3endpointSuffix immédiatement après k8s_fips_enabled :
k8s_fips_enabled: true
s3endpointSuffix: core.usgovcloudapi.net
Ajoutez s3endpointSuffix uniquement lors du déploiement sur Azure Government Cloud. N’ajoutez pas ce Parameter pour les déploiements Azure commerciaux standard.

Exemple complet de configuration 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 - doit être de version 6.2 à 7.0.7 pour 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

Vérification

Après le déploiement, vérifiez que FIPS est activé sur vos nœuds AKS :
# Obtenir les informations sur les nœuds
kubectl get nodes -o wide

# Vérifier le statut FIPS sur un nœud (se connecter d'abord au nœud)
cat /proc/sys/crypto/fips_enabled
# Sortie : 1 (FIPS activé) ou 0 (FIPS désactivé)