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.
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
| Composant | Déploiement standard | Déploiement compatible FIPS |
|---|
| Version Redis | 6.2 ou ultérieure | Uniquement de 6.2 à 7.0.7 |
| Type de partage de fichiers | SMB | NFS |
| Pools de nœuds AKS | Standard | Compatibles FIPS |
| Accès au stockage | Public ou privé | Réseau virtuel uniquement (pour NFS) |
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.
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
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
Activez la prise en charge de FIPS en configurant le Parameter suivant :
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
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é)