截止日期云的安全最佳实践 - AWS 截止日期云

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

截止日期云的安全最佳实践

AWS Deadline Cloud(Deadline Cloud)提供了许多安全功能,供您在制定和实施自己的安全策略时考虑。以下最佳实践是一般指导原则,并不代表完整安全解决方案。这些最佳实践可能不适合环境或不满足环境要求,请将其视为有用的考虑因素而不是惯例。

注意

有关许多安全主题的重要性的更多信息,请参阅责任共担模型

数据保护

出于数据保护目的,我们建议您保护 AWS 账户 凭据并使用 AWS Identity and Access Management (IAM) 设置个人账户。这样,每个用户只获得履行其工作职责所需的权限。我们还建议您通过以下方式保护数据:

  • 对每个账户使用多重身份验证 (MFA)。

  • 使用SSL/TLS与 AWS 资源通信。我们需要 TLS 1.2,建议使用 TLS 1.3。

  • 使用API进行设置和用户活动记录 AWS CloudTrail。

  • 使用 AWS 加密解决方案以及其中的所有默认安全控件 AWS 服务。

  • 使用高级托管安全服务(例如 Amazon Macie),它有助于发现和保护存储在 Amazon Simple Storage Service (Amazon S3) 中的个人数据。

  • 如果您在 AWS 通过命令行界面或访问时需要 FIPS 140-2 经过验证的加密模块API,请使用端点。FIPS有关可用FIPS端点的更多信息,请参阅联邦信息处理标准 (FIPS) 140-2

我们强烈建议您切勿将敏感的可识别信息(例如您客户的账号)放入自由格式字段(例如名称字段)。这包括您使用控制台、、API或 AWS 服务 使用 Deadline Cloud 或其他方式时 AWS SDKs。 AWS AWS CLI您输入到Deadline Cloud或其他服务中的任何数据都可能会被提取以包含在诊断日志中。当您URL向外部服务器提供时,请不要在中包含凭据信息URL以验证您对该服务器的请求。

AWS Identity and Access Management 权限

使用用户、 AWS Identity and Access Management (IAM) 角色以及向用户授予最低权限来管理对 AWS 资源的访问权限。制定用于创建、分发、轮换和撤消 AWS 访问凭证的凭证管理策略和程序。有关更多信息,请参阅《IAM用户指南》中的IAM最佳实践

以用户和群组的身份运行作业

在 Deadline Cloud 中使用队列功能时,最佳做法是指定操作系统 (OS) 用户及其主组,以便操作系统用户对队列的作业拥有最低权限权限。

当您指定 “以用户身份运行”(和组)时,提交到队列的作业的所有进程都将使用该操作系统用户运行,并将继承该用户的关联操作系统权限。

队列和队列配置相结合,可以建立安全态势。在队列方面,可以指定 “Job 以用户身份运行” 和IAM角色来使用队列作业的操作系统和 AWS 权限。队列定义了基础架构(工作主机、网络、已安装的共享存储),当这些基础架构与特定队列关联时,将在队列中运行作业。工作服务器主机上的可用数据需要由一个或多个关联队列中的作业访问。指定用户或组有助于保护作业中的数据免受其他队列、其他已安装的软件或其他有权访问工作主机的用户的侵害。当队列没有用户时,它会以代理用户身份运行,代理用户可以模仿 (sudo) 任何队列用户。这样,没有用户的队列可以将权限升级到另一个队列。

联网

为防止流量被拦截或重定向,必须确保网络流量的路由方式和位置安全。

我们建议您通过以下方式保护您的网络环境:

  • 保护 Amazon Virtual Private Cloud (AmazonVPC) 子网路由表,以控制 IP 层流量的路由方式。

  • 如果您在服务器场或工作站设置中使用 Amazon Route 53(Route 53)作为DNS提供商,请安全访问 Route 53 API。

  • 如果您使用本地工作站或其他数据中心 AWS 等外部连接到 Deadline Cloud,请保护任何本地网络基础设施。这包括DNS服务器和路由器、交换机和其他网络设备上的路由表。

工作和工作数据

Deadline Cloud 作业在工作主机的会话中运行。每个会话在工作主机上运行一个或多个进程,这通常需要您输入数据才能生成输出。

为了保护这些数据,您可以为操作系统用户配置队列。工作器代理使用队列操作系统用户来运行会话子进程。这些子进程继承队列操作系统用户的权限。

我们建议您遵循最佳实践,以保护对这些子流程访问的数据的访问。有关更多信息,请参阅责任共担模式

农场结构

您可以通过多种方式安排 Deadline Cloud 舰队和队列。但是,某些安排会涉及安全问题。

服务器场具有最安全的边界之一,因为它无法与其他服务器场共享 Deadline Cloud 资源,包括队列、队列和存储配置文件。但是,您可以在服务器场内共享外部 AWS 资源,这会影响安全边界。

您还可以使用适当的配置在同一服务器场内的队列之间建立安全边界。

按照以下最佳做法在同一个服务器场中创建安全队列:

  • 仅将队列与相同安全边界内的队列关联。请注意以下几点:

    • 在工作主机上运行作业后,数据可能会留在后面,例如在临时目录或队列用户的主目录中。

    • 无论您将任务提交到哪个队列,都由同一个操作系统用户在服务拥有的队列工作人员主机上运行所有作业。

    • 作业可能会使进程在工作主机上运行,从而使来自其他队列的作业可以观察其他正在运行的进程。

  • 确保只有处于相同安全边界内的队列才能共享用于存放任务附件的 Amazon S3 存储桶。

  • 确保只有相同安全边界内的队列共享操作系统用户。

  • 将集成到服务器场中的任何其他 AWS 资源保护到边界。

Job 附件队列

Job 附件与队列相关联,该队列使用您的 Amazon S3 存储桶。

  • Job 附件对 Amazon S3 存储桶中的根前缀进行写入和读取。您可以在CreateQueueAPI呼叫中指定此根前缀。

  • 存储桶有一个对应的Queue Role,它指定了向队列用户授予存储桶访问权限的角色和根前缀。创建队列时,您可以在任务附件存储桶和根前缀旁边指定 Queue Role Amazon 资源名称 (ARN)。

  • AssumeQueueRoleForReadAssumeQueueRoleForUser、和AssumeQueueRoleForWorkerAPI操作的授权调用会返回一组临时安全证书Queue Role

如果您创建队列并重复使用 Amazon S3 存储桶和根前缀,则存在信息被泄露给未授权方的风险。例如,queueA 和 queueB 共享相同的存储桶和根前缀。在安全的工作流程中,ArtistA 可以访问 QueueA,但不能访问 queueB。但是,当多个队列共享一个存储桶时,ArtistA 可以访问 QueueB 数据中的数据,因为它使用的存储桶和根前缀与 queueA 相同。

控制台设置的队列在默认情况下是安全的。确保队列具有 Amazon S3 存储桶和根前缀的独特组合,除非它们属于公共安全边界。

要隔离队列,必须将配置Queue Role为仅允许队列访问存储桶和根前缀。在以下示例中,替换每个 placeholder 附上您的资源特定信息。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::JOB_ATTACHMENTS_BUCKET_NAME", "arn:aws:s3:::JOB_ATTACHMENTS_BUCKET_NAME/JOB_ATTACHMENTS_ROOT_PREFIX/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "ACCOUNT_ID" } } }, { "Action": ["logs:GetLogEvents"], "Effect": "Allow", "Resource": "arn:aws:logs:REGION:ACCOUNT_ID:log-group:/aws/deadline/FARM_ID/*" } ] }

您还必须为该角色设置信任策略。在以下示例中,替换 placeholder 包含您的资源特定信息的文本。

{ "Version": "2012-10-17", "Statement": [ { "Action": ["sts:AssumeRole"], "Effect": "Allow", "Principal": { "Service": "deadline.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": "ACCOUNT_ID" }, "ArnEquals": { "aws:SourceArn": "arn:aws:deadline:REGION:ACCOUNT_ID:farm/FARM_ID" } } }, { "Action": ["sts:AssumeRole"], "Effect": "Allow", "Principal": { "Service": "credentials.deadline.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": "ACCOUNT_ID" }, "ArnEquals": { "aws:SourceArn": "arn:aws:deadline:REGION:ACCOUNT_ID:farm/FARM_ID" } } } ] }

定制软件 Amazon S3 存储桶

您可以在中添加以下语句Queue Role以访问您的 Amazon S3 存储桶中的自定义软件。在以下示例中,替换 SOFTWARE_BUCKET_NAME 使用您的 S3 存储桶的名称。

"Statement": [ { "Action": [ "s3:GetObject", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::SOFTWARE_BUCKET_NAME", "arn:aws:s3:::SOFTWARE_BUCKET_NAME/*" ] } ]

有关 Amazon S3 安全最佳实践的更多信息,请参阅《亚马逊简单存储服务用户指南》中的 Amazon S3 安全最佳实践

工作人员主机

保护工作人员主机,以帮助确保每个用户只能为其分配的角色执行操作。

我们建议采用以下最佳做法来保护工作主机:

  • 除非提交给这些队列的任务在相同的安全边界内,否则不要对多个队列使用相同的jobRunAsUser值。

  • 不要将队列设置jobRunAsUser为工作代理运行的操作系统用户的姓名。

  • 向队列用户授予目标队列工作负载所需的最低权限操作系统权限。确保他们没有工作代理程序文件或其他共享软件的文件系统写入权限。

  • 确保只有 root 用户开启 Linux 而Administrator拥有的账号则在 Windows 拥有并可以修改工作器代理程序文件。

  • On Linux 工作主机,请考虑在中配置一个umask替代项/etc/sudoers,允许工作代理用户以队列用户身份启动进程。此配置有助于确保其他用户无法访问写入队列的文件。

  • 向受信任的个人授予对工作人员主机的最低权限访问权限。

  • 限制对本地DNS覆盖配置文件的权限(/etc/hosts开启 Linux 然后继C:\Windows\system32\etc\hosts续 Windows),并在工作站和工作主机操作系统上路由表。

  • 限制工作站和工作主机操作系统的DNS配置权限。

  • 定期修补操作系统和所有已安装的软件。这种方法包括专门用于 Deadline Cloud 的软件,例如提交者、适配器、工作人员代理、OpenJD 包裹等。

  • 使用强密码 Windows queue.jobRunAsUser

  • 定期轮换队列的密码jobRunAsUser

  • 确保访问权限最低 Windows 密码会秘密并删除未使用的机密。

  • 不要向队列jobRunAsUser授予将来运行的计划命令的权限:

    • On Linux,拒绝这些账户访问cronat

    • On Windows,拒绝这些账户访问 Windows 任务调度器。

注意

有关定期修补操作系统和已安装软件的重要性的更多信息,请参阅责任共担模型

工作站

保护能够访问 Deadline Cloud 的工作站非常重要。这种方法有助于确保你提交给 Deadline Cloud 的任何任务都无法运行向你 AWS 账户计费的任意工作负载。

我们建议采用以下最佳做法来保护艺术家工作站的安全。有关更多信息,请参阅 责任共担模式

  • 保护所有提供访问权限的永久凭证,包括 Deadlin AWS e Cloud。有关更多信息,请参阅《用户指南》中的IAM管理IAM用户访问密钥

  • 仅安装可信、安全的软件。

  • 要求用户与身份提供商联合使用临时证书 AWS 进行访问。

  • 对 Deadline Cloud 提交者程序文件使用安全权限以防止篡改。

  • 向受信任的个人授予访问艺术家工作站的最低权限。

  • 仅使用您通过 Deadline Cloud Monitor 获得的提交者和适配器。

  • 限制对本地DNS覆盖配置文件的权限(/etc/hosts开启 Linux 以及 macOS,C:\Windows\system32\etc\hosts等等 Windows),并在工作站和工作主机操作系统上路由表。

  • 将权限限制/etc/resolve.conf在工作站和工作主机操作系统上。

  • 定期修补操作系统和所有已安装的软件。这种方法包括专门用于 Deadline Cloud 的软件,例如提交者、适配器、工作人员代理、OpenJD 包裹等。