

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 AL2023 容器中启用 FIPS 模式
<a name="fips-mode-container"></a>

这部分说明如何在 AL2023 容器中启用联邦信息处理标准（FIPS）。有关 FIPS 的更多信息，请参阅：
+ [美国联邦信息处理标准 (FIPS)](https://aws.amazon.com/compliance/fips/)
+ [合规性常见问题：美国联邦信息处理标准](https://www.nist.gov/standardsgov/compliance-faqs-federal-information-processing-standards-fips)

**注意**  
这部分记录如何在 AL2023 容器中启用 FIPS 模式。它不涉及 AL2023 加密模块的认证状态。

**先决条件**
+ 现有 AL2023（AL2023.2 或更高版本）Amazon EC2 实例，可以访问互联网并下载所需软件包。有关启动 AL2023 Amazon EC2 实例的更多信息，请参阅[使用 Amazon EC2 控制台启动 AL2023](ec2.md#launch-from-ec2-console)。
+ 必须使用 SSH 或 AWS Systems Manager 连接到您的 Amazon EC2 实例。有关更多信息，请参阅 [连接到 AL2023 实例](connecting-to-instances.md)。

**重要**  
`fips-mode-setup` 命令在容器内部将无法正常工作。请阅读以下步骤以在 AL2023 容器中正确配置 FIPS 模式。

**在 AL2023 容器中启用 FIPS 模式**

1. 必须首先在 AL2023 容器主机上启用 FIPS 模式。按照 [在 AL2023 上启用 FIPS 模式](fips-mode.md) 处的说明在主机上启用 FIPS 模式。

1. 使用 SSH 或 AWS Systems Manager 连接到您的 AL2023 容器主机实例。

1. 如果 AL2023 主机处于 FIPS 模式并且 `/proc/sys/crypto/fips_enabled` 可以从容器内部访问，则 FIPS 模式将在 AL2023 容器中自动启用。如果 `/proc/sys/crypto/fips_enabled` 的内容是 `0`，则表示 FIPS 未启用；值为 `1` 表示 FIPS 模式已启用。

   您可以通过在 AL2023 主机和容器上运行以下命令来验证 FIPS 是否已启用：

   ```
   cat /proc/sys/crypto/fips_enabled
   ```

1. 接下来，在容器内启用 FIPS 加密策略。有几种方法可以实现这一点，将在下面的选项中描述。请使用最适合您环境的选项。

   1. 使用 `update-crypto-policies` 命令在容器内手动启用 FIPS 加密策略：

      ```
      # Run these commands inside the container
      dnf install -y crypto-policies-scripts
      update-crypto-policies --set FIPS
      ```

   1. 在 AL2023 容器内创建 `bind` 挂载（这类似于 `podman` 在其他发行版中的工作方式）：

      ```
      # Run these commands inside the container
      mount --bind /usr/share/crypto-policies/back-ends/FIPS /etc/crypto-policies/back-ends
      echo "FIPS" > /usr/share/crypto-policies/default-fips-config
      mount --bind /usr/share/crypto-policies/default-fips-config /etc/crypto-policies/config
      ```

   1. 也可以创建一个绑定挂载，以使 AL2023 容器与 AL2023 主机的加密策略相匹配。以下仅作为示例提供。如果容器和主机之间的加密策略及程序包版本存在不兼容的差异，此配置可能会导致问题：

      ```
      sudo docker pull amazonlinux:2023
      sudo docker run --mount type=bind,readonly,src=/etc/crypto-policies,dst=/etc/crypto-policies -it amazonlinux:2023
      ```

1. 执行上述步骤后，您可以使用以下命令再次验证 FIPS 是否已在容器中启用：

   ```
   $ cat /etc/crypto-policies/config
   FIPS
   
   $ cat /proc/sys/crypto/fips_enabled
   1
   ```