配置 Amazon EC2 Mac 实例的系统完整性保护 - Amazon Elastic Compute Cloud

配置 Amazon EC2 Mac 实例的系统完整性保护

您可以为采用 x86 架构的 Mac 实例和搭载 Apple 芯片的 Mac 实例配置系统完整性保护(SIP)设置。SIP 是 macOS 的一项关键安全功能,有助防止未经授权的代码执行和系统级别修改。有关更多信息,请参阅关于系统完整性保护

您可以完全启用或禁用 SIP,也可以有选择地启用或禁用特定 SIP 设置。建议仅在执行必要任务时暂时禁用 SIP,并在任务完成后尽快重新启用。禁用 SIP 可能会使实例容易受到恶意代码攻击。

所有支持 Amazon EC2 Mac 实例的 AWS 区域都支持 SIP 配置。

注意事项

  • 支持下列 Amazon EC2 Mac 实例类型和 macOS 版本:

    • Mac1 | Mac2 | Mac2-m1ultra – macOS Ventura(版本 13.0 或更高版本)

    • Mac2-m2 | Mac2-m2pro – macOS Ventura(版本 13.2 或更高版本)

    注意

    不支持 macOS 测试版和预览版。

  • 您可以指定自定义 SIP 配置,来🈶选择地启用或禁用特定 SIP 设置。如果您实施自定义配置,请连接到实例并验证设置,从而确保正确实现了您的需求并按预期运行。

    SIP 配置可能会随 macOS 更新更改。我们建议在执行任何 macOS 版本升级后检查自定义 SIP 设置,确保安全配置依然兼容并正常发挥作用。

  • 对于采用 x86 架构的 Mac 实例,SIP 设置在实例级别应用。连接到实例的任何根卷都将自动沿用已配置的 SIP 设置。

    对于搭载 Apple 芯片的 Mac 实例,SIP 设置在卷级别应用。连接到实例的根卷不会沿用 SIP 设置。如果挂载其他根卷,则必须重新将 SIP 设置配置为所需状态。

  • 完成 SIP 配置任务最长可能需要 90 分钟时间。在 SIP 配置任务进行期间,实例会保持无法访问状态。

  • SIP 配置不会传递到您随后利用该实例创建的快照或 AMI。

  • 搭载 Apple 芯片的 Mac 实例必须只有一个可引导卷,并且每个挂载卷只能有一个额外的管理员用户。

默认 SIP 配置

下表列举了采用 x86 架构的 Mac 实例和搭载 Apple 芯片的 Mac 实例的默认 SIP 配置。

搭载 Apple 芯片的 Mac 实例 采用 x86 架构的 Mac 实例
Apple 内部专用 已启用 已禁用
文件系统保护 已启用 已禁用
基础系统 已启用 已启用
调试限制 已启用 已启用
Dtrace 限制 已启用 已启用
Kext 签名 已启用 已启用
Nvram 保护 已启用 已启用

检查 SIP 配置

我们建议在进行更改之前和之后检查 SIP 配置,确保其配置符合预期。

检查 Amazon EC2 Mac 实例的 SIP 配置

使用 SSH 连接到实例,然后在命令行中运行以下命令。

$ csrutil status

下面是示例输出。

System Integrity Protection status: enabled. Configuration: Apple Internal: enabled Kext Signing: disabled Filesystem Protections: enabled Debugging Restrictions: enabled DTrace Restrictions: enabled NVRAM Protections: enabled BaseSystem Verification: disabled

有关搭载 Apple 芯片的 Mac 实例的先决条件

在为搭载 Apple 芯片的 Mac 实例配置 SIP 设置之前,必须为 Amazon EBS 根卷管理员用户 (ec2-user) 设置密码并启用安全令牌。

注意

密码和安全令牌将在您首次使用 GUI 连接到搭载 Apple 芯片的 Mac 实例时设置。如果您之前使用 GUI 连接到实例或者您使用采用 x86 架构的 Mac 实例,则无需执行这些步骤。

为 EBS 根卷管理员用户设置密码并启用安全令牌
  1. 使用 SSH 连接到实例

  2. ec2-user 用户设置密码。

    $ sudo /usr/bin/dscl . -passwd /Users/ec2-user
  3. ec2-user 用户启用安全令牌。对于 -oldPassword,请指定与上一步中相同的密码。对于 -newPassword,请指定一个不同的密码。以下命令假定您已将旧密码和新密码保存在 .txt 文件中。

    $ sysadminctl -oldPassword `cat old_password.txt` -newPassword `cat new_password.txt`
  4. 确认已启用安全令牌。

    $ sysadminctl -secureTokenStatus ec2-user

配置 SIP 设置

在配置实例的 SIP 设置时,您可以启用或禁用所有 SIP 设置,也可以指定自定义配置,从而有选择地启用或禁用特定 SIP 设置。

注意

如果您实施自定义配置,请连接到实例并验证设置,从而确保正确实现了您的需求并按预期运行。

SIP 配置可能会随 macOS 更新更改。我们建议在执行任何 macOS 版本升级后检查自定义 SIP 设置,确保安全配置依然兼容并正常发挥作用。

要配置实例的 SIP 设置,您必须创建一个 SIP 配置任务。该 SIP 配置任务将指定实例的 SIP 设置。

在为搭载 Apple 芯片的 Mac 实例创建 SIP 配置时,必须指定以下凭证:

  • 内部磁盘管理员用户

    • 用户名:仅支持默认管理员用户 (aws-managed-user),并且默认使用该用户。不能指定其他管理员用户。

    • 密码:如果没有更改 aws-managed-user 的默认密码,请指定默认密码,即。否则请指定您的密码。

  • Amazon EBS 根卷管理员用户

    • 用户名:如果未更改默认管理员用户,请指定 ec2-user。否则指定您的管理员用户的用户名。

    • 密码:必须始终指定此密码。

使用以下方法创建一个 SIP 配置任务。

Console
使用控制台创建 SIP 配置任务
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例,然后选择该 Amazon EC2 Mac 实例。

  3. 安全选项卡中,选择修改 Mac,修改系统完整性保护

  4. 要启用所有 SIP 设置,请选择启用 SIP。要禁用所有 SIP 设置,请清除启用 SIP

  5. 要指定自定义配置来有选择地启用或禁用特定 SIP 设置的,请选择指定自定义 SIP 配置,然后选择要启用的 SIP 设置,或者清除要禁用的 SIP 设置。

  6. 指定根卷用户和内部磁盘所有者的凭证。

  7. 选择创建 SIP 修改任务

AWS CLI
使用 AWS CLI 创建 SIP 配置任务

使用 create-mac-system-integrity-protection-modification-task 命令。

启用或禁用所有 SIP 设置

要完全启用或禁用所有 SIP 设置,请仅使用 --mac-system-integrity-protection-status 参数。

以下示例命令会启用所有 SIP 设置。

aws ec2 create-mac-system-integrity-protection-modification-task \ --instance-id i-0abcdef9876543210 \ --mac-system-integrity-protection-status enabled \ --mac-credentials file://mac-credentials.json
指定自定义 SIP 配置

要指定自定义 SIP 配置来有选择地启用或禁用特定 SIP 设置,请指定 --mac-system-integrity-protection-status--mac-system-integrity-protection-configuration 参数。其中 mac-system-integrity-protection-status 用来指定整体 SIP 状态,mac-system-integrity-protection-configuration 用来有选择地启用或禁用特定 SIP 设置。

以下示例命令会创建一个 SIP 配置任务,来启用除 NvramProtectionsFilesystemProtections 之外的所有 SIP 设置。

aws ec2 create-mac-system-integrity-protection-modification-task \ --instance-id i-0abcdef9876543210 \ --mac-system-integrity-protection-status enabled \ --mac-system-integrity-protection-configuration "NvramProtections=disabled, FilesystemProtections=disabled" \ --mac-credentials file://mac-credentials.json

以下示例命令会创建一个 SIP 配置任务,来禁用除 DtraceRestrictions 之外的所有 SIP 设置。

aws ec2 create-mac-system-integrity-protection-modification-task \ --instance-id i-0abcdef9876543210 \ --mac-system-integrity-protection-status disabled \ --mac-system-integrity-protection-configuration "DtraceRestrictions=enabled" \ --mac-credentials file://mac-credentials.json
mac-credentials.json 文件的内容

以下为上文示例中所引用 mac-credentials.json 文件的内容。

{ "internalDiskPassword":"internal-disk-admin_password", "rootVolumeUsername":"root-volume-admin_username", "rootVolumepassword":"root-volume-admin_password" }

检查 SIP 配置任务状态

可以使用以下方法之一检查 SIP 配置任务的状态。

Console
使用控制台查看 SIP 配置任务
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例,然后选择该 Amazon EC2 Mac 实例。

  3. 安全选项卡中,向下滚动到 Mac 修改任务部分。

AWS CLI
使用 AWS CLI 检查 SIP 配置任务的状态

使用 describe-mac-modification-tasks 命令。