Saltar al contenido principal
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.

Descripción general

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

ComponenteImplementación estándarImplementación con FIPS habilitado
Versión de Redis6.2 o posteriorDe la 6.2 a la 7.0.7 únicamente
Tipo de recurso compartido de archivosSMBNFS
Grupos de nodos de AKSEstándarCon FIPS habilitado
Acceso al almacenamientoPúblico o privadoSolo mediante red virtual (para NFS)

Requisitos

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

Configurar el acceso al recurso compartido NFS

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

env_specific.yml

Habilite el soporte para FIPS estableciendo el siguiente Parameter:
k8s_fips_enabled: true

Azure Government Cloud

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

Verificación

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)