Esta página se aplica únicamente a implementaciones de Azure AKS. La configuración de cumplimiento de FIPS no es aplicable a implementaciones en máquinas virtuales.
El cumplimiento de la Norma Federal de Procesamiento de Información (FIPS) 140-2 es un requisito para determinados despliegues en organismos del gobierno de Estados Unidos y en sectores regulados. Para habilitar el cumplimiento de FIPS en su implementación de Vantage, es necesario aplicar cambios de configuración específicos durante la creación de la infraestructura y la instalación.
Diferencias clave con respecto a la implementación estándar
| Componente | Implementación estándar | Implementación con FIPS habilitado |
|---|
| Versión de Redis | 6.2 o posterior | De la 6.2 a la 7.0.7 únicamente |
| Tipo de recurso compartido de archivos | SMB | NFS |
| Grupos de nodos de AKS | Estándar | Con FIPS habilitado |
| Acceso al almacenamiento | Público o privado | Solo mediante red virtual (para NFS) |
Restricción de versión de Redis
Para cumplir con FIPS, Redis debe estar en una versión entre la 6.2 y la 7.0.7 (no posterior). Las versiones 7.0.8 y posteriores no son compatibles para implementaciones con FIPS.
Consideraciones sobre recursos compartidos NFS
Cuando FIPS está habilitado, se utilizan recursos compartidos de Network File System (NFS) en lugar de recursos compartidos SMB:
- La configuración de la cuenta de almacenamiento del recurso compartido NFS puede permitir el acceso desde direcciones IP públicas
- Sin embargo, no puede montar recursos compartidos NFS desde una dirección IP pública
- Solo es posible conectarse a recursos compartidos NFS desde una máquina en una red virtual de confianza para la cuenta de almacenamiento
Creación de infraestructura con FIPS
Al crear la infraestructura de Azure para un despliegue compatible con FIPS, añada el parámetro enableFIPS=true a los despliegues de la plantilla ARM.
Crear un clúster de AKS con 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
Después de crear el clúster con FIPS habilitado, ejecute los siguientes comandos para conectar la cuenta de almacenamiento compartida con el recurso compartido NFS:
# Obtener el ID de entidad de seguridad del clúster de AKS
export principalId=$(az aks show --name <cluster_name> -g <resource_group_name> \
-o tsv --query identity.principalId)
# Obtener el ámbito de la subred
export scope=$(az aks show --name <cluster_name> -g <resource_group_name> \
-o tsv --query agentPoolProfiles[*].vnetSubnetId | uniq)
# Crear asignación de roles para que el clúster acceda al almacenamiento
az role assignment create --role "Contributor" \
--assignee-principal-type ServicePrincipal \
--assignee-object-id $principalId \
--scope $scope
Crear cuentas de almacenamiento 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
Parameters de configuración
Habilite el soporte para FIPS estableciendo el siguiente Parameter:
Si implementa en Azure Government Cloud, agregue el parámetro s3endpointSuffix inmediatamente después de k8s_fips_enabled:
k8s_fips_enabled: true
s3endpointSuffix: core.usgovcloudapi.net
Solo añada s3endpointSuffix al implementar en Azure Government Cloud. No incluya este parámetro en las implementaciones estándar en la nube comercial de Azure.
Ejemplo completo de configuración de 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
# Clúster de Redis: debe ser versión 6.2 a 7.0.7 para 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
Después de la implementación, compruebe que FIPS esté habilitado en los nodos de AKS:
# Obtener información de los nodos
kubectl get nodes -o wide
# Verificar el estado de FIPS en un nodo (conectarse primero al nodo)
cat /proc/sys/crypto/fips_enabled
# Salida: 1 (FIPS habilitado) o 0 (FIPS deshabilitado)