

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

# 服务角色
<a name="security-iam-service-roles"></a>

## Deadline Cloud 如何使用 IAM 服务角色
<a name="how-deadline-cloud-manages-credentials"></a>

Deadline Cloud 自动代入 IAM 角色，并为工作人员、工作和 Deadline Cloud 监控器提供临时证书。这种方法消除了手动凭据管理，同时通过基于角色的访问控制来维护安全性。

四个角色涵盖了农场工作的生命周期。在客户管理的队列中，新主机从*工作人员主机角色开始*，使用它注册为工作人员，然后用它来换取*队列角色*证书。在服务管理的队列上，该服务会为您执行引导，因此只有其他三个角色适用。工作人员使用队列角色接收工作和报告进度，并在运行每项任务时接收*队列角色*证书。用户和工具在登录 Deadline Cloud * 监控器*时会从监控角色获得证书。


**截止日期云服务角色一览**  

|  角色 | 谁使用其证书 | 它补助了什么 | 关联的资源 | 
| --- | --- | --- | --- | 
| [工作人员主持人角色 ](#customer-managed-fleet-host-role) | Customer-managed 启动期间的舰队主机 | 注册新工作人员并担任舰队角色 | 工作人员主机，例如通过 Amazon EC2 实例配置文件 | 
| [舰队角色 ](#fleet-role) | 舰队上的工人 | 接收工作、报告进度并将工作日志写入 CloudWatch 日志 | 舰队 | 
| [队列角色 ](#queue-role) | 运行期间的作业；监控和 CLI 用户处理作业附件和日志 | 读取和写入队列的作业附件存储桶、读取作业日志、下载第三方软件以及您为任务添加的任何权限 | 队列 | 
| [监控角色 ](#monitor-role) | 人们通过其创建的配置文件登录了 Deadline Cloud 监控器、CLI 和提交者 | 根据每个用户的成员资格和访问级别访问农场、舰队、队列和作业数据 | 显示器 | 

当您在控制台中创建监控器、队列和队列时，Deadline Cloud 可以为您创建具有必要权限的队列、队列和监控角色。在设置客户管理的队列时，您可以自己创建员工宿主角色。使用以下部分了解用于故障排除的每个角色，自己创建角色或扩展角色。

## 舰队角色
<a name="fleet-role"></a>

配置队列角色，为 Deadline Cloud 工作人员提供接收工作和报告工作进度所需的权限。

您通常不必自己配置此角色。可以在 Deadline Cloud 控制台中为您创建此角色以包含必要的权限。使用以下指南了解此角色的具体情况以进行故障排除。

以编程方式创建或更新队列时，使用`CreateFleet`或 `UpdateFleet` API 操作指定舰队角色 ARN。

### 舰队的作用是什么
<a name="what-fleet-role-does"></a>

舰队角色为工作人员提供以下权限：
+ 接收新工作并向 Deadline Cloud 服务报告正在进行的工作进度
+ 管理员工生命周期和状态
+ 将日志事件记录到 Amazon CloudWatch Logs 以获取工作人员日志

### 设置舰队角色信任政策
<a name="fleet-role-trust-policy"></a>

您的队列角色必须信任 Deadline Cloud 服务，并且范围必须限定在您的特定农场。

作为最佳实践，信任政策应包括保护混乱副手的安全条件。要了解有关 “困惑副手” 保护的更多信息，请参阅《*截止日期云用户指南》[中的 “](cross-service-confused-deputy-prevention.md)困惑副手” *。
+ `aws:SourceAccount`确保只有来自同一资源的资源 AWS 账户 才能担任此角色。
+ `aws:SourceArn`将角色假设限制为特定的截止日期云农场。

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

### 附加 Fleet 角色权限
<a name="fleet-role-permissions"></a>

将以下 AWS 托管策略附加到您的队列角色：

[AWSDeadlineCloud-FleetWorker](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSDeadlineCloud-FleetWorker.html)

此托管策略提供以下权限：
+ `deadline:AssumeFleetRoleForWorker`-允许工作人员刷新其证书。
+ `deadline:UpdateWorker`-允许工作人员更新其状态（例如，退出时更改为 “已停止”）。
+ `deadline:UpdateWorkerSchedule`-用于获取工作和报告进度。
+ `deadline:BatchGetJobEntity`-用于获取作业信息。
+ `deadline:AssumeQueueRoleForWorker`-用于在任务执行期间访问队列角色证书。

### 为加密农场添加 KMS 权限
<a name="fleet-role-kms-permissions"></a>

如果您的农场是使用 KMS 密钥创建的，请将这些权限添加到您的队列角色中，以确保工作人员可以访问农场中的加密数据。

只有当您的农场具有关联的 KMS 密钥时，才需要 KMS 权限。`kms:ViaService`条件必须使用格式`deadline.{{{region}}}.amazonaws.com`。

创建队列时，会为该队列创建 CloudWatch 日志组。Deadline Cloud 服务使用工作人员的权限来创建专门针对该特定工作人员的日志流。设置工作器并运行后，工作人员将使用这些权限将日志事件直接发送到 CloudWatch 日志。

```
{
  "Version": "2012-10-17", 		 	 	 
  "Statement": [
    {
      "Sid": "CreateLogStream",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogStream"
      ],
      "Resource": "arn:aws:logs:{{REGION}}:{{YOUR_ACCOUNT_ID}}:log-group:/aws/deadline/{{YOUR_FARM_ID}}/*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:CalledVia": [
            "deadline.{{REGION}}.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "ManageLogEvents",
      "Effect": "Allow",
      "Action": [
        "logs:PutLogEvents",
        "logs:GetLogEvents"
      ],
      "Resource": "arn:aws:logs:{{REGION}}:{{YOUR_ACCOUNT_ID}}:log-group:/aws/deadline/{{YOUR_FARM_ID}}/*"
    },
    {
      "Sid": "ManageKmsKey",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:DescribeKey",
        "kms:GenerateDataKey"
      ],
      "Resource": "{{YOUR_FARM_KMS_KEY_ARN}}",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "deadline.{{REGION}}.amazonaws.com"
        }
      }
    }
  ]
}
```

### 修改舰队角色
<a name="modifying-fleet-role"></a>

舰队角色的权限不可自定义。所描述的权限始终是必需的，添加其他权限没有任何效果。

## 工作人员主持人角色
<a name="customer-managed-fleet-host-role"></a>

如果您在 Amazon EC2 实例或本地主机上使用客户管理的队列，请设置工作人员主机角色。

### 员工宿主角色的作用
<a name="what-workerhost-role-does"></a>

工作人员主机角色 (`WorkerHost`) 在客户管理的舰队主机上引导工作人员。它为主机提供了以下所需的最低权限：
+ 在 Deadline Cloud 中创建员工
+ 假设舰队角色来获取操作证书
+ 使用舰队标签标记工作人员（如果启用了标签传播）

### 设置工作人员宿主角色权限
<a name="workerhost-role-permissions"></a>

将以下 AWS 托管策略附加到您的工作人员主机角色：

[AWSDeadlineCloud-WorkerHost](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSDeadlineCloud-WorkerHost.html)

此托管策略提供以下权限：
+ `deadline:CreateWorker`-允许主机注册新的工作人员。
+ `deadline:AssumeFleetRoleForWorker`-允许主机担任舰队角色。
+ `deadline:TagResource`-允许在创建期间标记工作人员（如果启用）。
+ `deadline:ListTagsForResource`-允许读取舰队标签以进行传播。

### 了解引导过程
<a name="bootstrap-process"></a>

工作器主机角色仅在工作器初始启动期间使用：

1. 工作器代理使用工作器主机角色凭证在主机上启动。

1. 它调用向 Dead `deadline:CreateWorker` line Cloud 注册。

1. 然后，它调用`deadline:AssumeFleetRoleForWorker`获取舰队角色证书。

1. 从现在起，工作人员仅使用舰队角色证书进行所有操作。

工作器开始运行后，它将不再使用工作器主机角色。 Service-managed 舰队不需要这个角色，因为该服务会自动执行引导。

## 队列角色
<a name="queue-role"></a>

队列角色由工作人员在处理任务时代替。此角色提供完成任务所需的权限。

以编程方式创建或更新队列时，使用`CreateQueue`或 `UpdateQueue` API 操作指定队列角色 ARN。

### 设置队列角色信任策略
<a name="queue-role-trust-policy"></a>

您的队列角色必须信任 Deadline Cloud 服务。

作为最佳实践，信任政策应包括保护混乱副手的安全条件。要了解有关 “困惑副手” 保护的更多信息，请参阅《*截止日期云用户指南》[中的 “](cross-service-confused-deputy-prevention.md)困惑副手” *。
+ `aws:SourceAccount`确保只有来自同一资源的资源 AWS 账户 才能担任此角色。
+ `aws:SourceArn`将角色假设限制为特定的截止日期云农场。

```
{
  "Version": "2012-10-17", 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "credentials.deadline.amazonaws.com",
          "deadline.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "{{YOUR_ACCOUNT_ID}}"
        },
        "ArnEquals": {
          "aws:SourceArn": "arn:aws:deadline:us-west-2:123456789012:farm/{farm-id}"
        }        
      }
    }
  ]
}
```

### 了解队列角色权限
<a name="queue-role-permissions"></a>

队列角色不使用单一的托管策略。相反，当您在控制台中配置队列时，Deadline Cloud 会根据您的配置为您的队列创建自定义策略。

此自动创建的策略提供对以下内容的访问权限：

#### 工作附件
<a name="job-attachments-permissions"></a>

对任务输入和输出文件指定 Amazon S3 存储桶的读写权限：

```
{
  "Effect": "Allow",
  "Action": [
    "s3:GetObject",
    "s3:PutObject", 
    "s3:ListBucket",
    "s3:GetBucketLocation"
  ],
  "Resource": [
    "arn:aws:s3:::{{YOUR_JOB_ATTACHMENTS_BUCKET}}",
    "arn:aws:s3:::{{YOUR_JOB_ATTACHMENTS_BUCKET}}/{{YOUR_PREFIX}}/*"
  ],
  "Condition": {
    "StringEquals": {
      "aws:ResourceAccount": "{{YOUR_ACCOUNT_ID}}"
    }
  }
}
```

#### 作业日志
<a name="job-logs-permissions"></a>

对该队列中任务的 CloudWatch 日志的读取权限。每个队列都有自己的日志组，每个会话都有自己的日志流：

```
{
  "Effect": "Allow",
  "Action": [
    "logs:GetLogEvents"
  ],
  "Resource": "arn:aws:logs:{{REGION}}:{{YOUR_ACCOUNT_ID}}:log-group:/aws/deadline/{{YOUR_FARM_ID}}/*"
}
```

#### Third-party 软件
<a name="dcc-software-permissions"></a>

有权下载 Deadline Cloud 支持的第三方软件（例如 Maya、Blender 等）：

```
{
  "Effect": "Allow",
  "Action": [
    "s3:ListBucket",
    "s3:GetObject"
  ],
  "Resource": "*",
  "Condition": {
    "ArnLike": {
      "s3:DataAccessPointArn": "arn:aws:s3:*:*:accesspoint/deadline-software-*"
    },
    "StringEquals": {
      "s3:AccessPointNetworkOrigin": "VPC"
    }
  }
}
```

### 为您的工作添加权限
<a name="add-permissions-for-jobs"></a>

为 AWS 服务 您的队列角色添加任务需要访问的权限。在编写 OpenJobDescription 步骤脚本时， AWS CLI 和 SDK 将自动使用您的队列角色中的证书。使用它来访问完成工作所需的额外服务。

示例使用案例包括：
+  用于获取自定义数据
+ 通过隧道连接到自定义许可证服务器的 SSM 权限
+ CloudWatch 用于发布自定义指标
+ Deadline Cloud 权限，可为动态工作流程创建新任务

### 如何使用队列角色证书
<a name="how-queue-role-credentials-used"></a>

Deadline Cloud 为以下人员提供队列角色证书：
+ 任务执行期间的工作人员
+ 用户通过 Deadline Cloud CLI 监控何时与作业附件和日志进行交互

Deadline Cloud 为每个队列创建单独的 CloudWatch 日志日志组。Deadline Cloud CLI 和监控器使用队列角色（通过`deadline:AssumeQueueRoleForRead`）从队列的日志组读取作业日志。Deadline Cloud CLI 和监控器使用队列角色（通过`deadline:AssumeQueueRoleForUser`）上传或下载作业附件数据。

## 监控角色
<a name="monitor-role"></a>

配置监控角色以授予 Deadline Cloud 监控器 Web 和桌面应用程序访问您的 Deadline Cloud 资源的权限。

以编程方式创建或更新监控器时，使用`CreateMonitor`或 `UpdateMonitor` API 操作指定监控器角色 ARN。

### 监控角色的作用
<a name="what-monitor-role-does"></a>

监控角色使 Deadline Cloud 监控器能够为最终用户提供访问以下内容的权限：
+ Deadline 云集成提交者、CLI 和监控器所需的基本功能
+ 为最终用户提供自定义功能

### 设置监控角色信任策略
<a name="monitor-role-trust-policy"></a>

您的监控角色必须信任 Deadline Cloud 服务。

作为最佳实践，信任政策应包括保护混乱副手的安全条件。要了解有关 “困惑副手” 保护的更多信息，请参阅《*截止日期云用户指南》[中的 “](cross-service-confused-deputy-prevention.md)困惑副手” *。

`aws:SourceAccount`确保只有来自同一资源的资源 AWS 账户 才能担任此角色。

```
{
  "Version": "2012-10-17", 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "credentials.deadline.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "{{YOUR_ACCOUNT_ID}}"
        }
      }
    }
  ]
}
```

### 附加监控角色权限
<a name="monitor-role-permissions"></a>

将以下所有 AWS 托管策略附加到您的监控角色以进行基本操作：
+ [AWSDeadlineCloud-UserAccessFarms](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSDeadlineCloud-UserAccessFarms.html)
+ [AWSDeadlineCloud-UserAccessFleets](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSDeadlineCloud-UserAccessFleets.html)
+ [AWSDeadlineCloud-UserAccessJobs](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSDeadlineCloud-UserAccessJobs.html)
+ [AWSDeadlineCloud-UserAccessQueues](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSDeadlineCloud-UserAccessQueues.html)

### 监控角色的工作原理
<a name="how-monitor-role-works"></a>

使用截止日期云监控器时，服务用户使用 AWS IAM Identity Center （IAM 身份中心）登录，并代入监控者角色。监视器应用程序使用假定的角色证书来显示监控器用户界面，包括农场、队列、队列和其他信息的列表。

使用 Deadline Cloud 监控器桌面应用程序时，这些凭据还会使用与最终用户提供的配置文件名称相对应的命名 AWS 凭据配置文件在工作站上提供。在 [AWS SDK 和工具参考指南中了解有关命名配置文件的更多信息](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)。

这个命名配置文件是 Deadline CLI 和提交者访问 Deadline Cloud 资源的方式。

### 为高级用例自定义监控器角色
<a name="customizing-monitor-role"></a>

您可以自定义监控角色以修改用户在每个访问级别（查看者、参与者、经理、所有者）上可以执行的操作，或者为高级工作流程添加权限。

#### 自定义访问级别权限
<a name="customizing-access-levels"></a>

附加到监控角色的四个 AWS 托管策略控制着每个访问级别可以执行的操作。您可以使用`deadline:MembershipLevel`条件密钥向监控角色添加自定义策略，以授予或限制特定访问级别的权限。

例如，要允许参与者更新和取消任务（通常仅限于经理和所有者），请添加如下政策：

```
{
  "Version": "2012-10-17", 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "deadline:UpdateJob",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "deadline:MembershipLevel": "CONTRIBUTOR"
        }
      }
    }
  ]
}
```

根据此政策，贡献者除了可以提交任务外，还可以更新和取消作业。

#### 为高级工作流程添加权限
<a name="adding-monitor-permissions"></a>

您可以向监控角色添加自定义 IAM 策略，以向所有监控用户授予额外权限。自定义策略对于高级脚本工作流程非常有用，在这些工作流程中，用户需要访问标准的 Deadline Cloud 功能以 AWS 服务 外的权限。

修改您的监控角色时，请遵循以下准则：
+ 不要删除任何托管策略。删除这些策略会中断监控功能。

### Deadline 云监视器如何使用监控角色凭证
<a name="how-monitor-uses-credentials"></a>

Deadline Cloud Monitor 会在您进行身份验证时自动获取监控角色凭据。这些临时证书持续 15 分钟，只要您登录 IAM 身份中心，就会自动刷新。此功能使桌面应用程序能够提供超出标准 Web 浏览器所能提供的监控功能。

当您使用 Deadline Cloud 监视器登录时，它会自动创建可用于该 AWS CLI 或任何其他 AWS 工具的配置文件。此配置文件使用监控角色证书， AWS 服务 根据监控角色中的权限为您提供编程访问权限。

截止日期云提交者的工作方式相同-他们使用截止日期云监控器创建的配置文件以适当的角色权限 AWS 服务 进行访问。

## 高级自定义 Deadline Cloud 角色
<a name="advanced-customization"></a>

您可以使用其他权限扩展 Deadline Cloud 角色，以启用基本渲染工作流程之外的高级用例。这种方法使用Deadline Cloud中的访问管理系统来 AWS 服务 根据队列成员资格控制对其他人的访问权限。

### 与团队协作 AWS CodeCommit
<a name="codecommit-collaboration"></a>

向您的队列角色添加 AWS CodeCommit 权限，以在项目存储库上启用团队协作。这种方法使用 Deadline Cloud 中的访问管理系统来处理其他用例。只有有权访问特定队列的用户才能获得这些 AWS CodeCommit 权限，因此您可以通过 Deadline Cloud 队列成员资格管理每个项目存储库的访问权限。

当艺术家需要访问存储库中作为渲染工作流程的一部分存储在存储库中的特定项目资产、脚本或配置文件时，通过队列成员资格访问存储 AWS CodeCommit 库非常有用。

#### 添加 AWS CodeCommit 队列角色的权限
<a name="add-codecommit-permissions-advanced"></a>

向您的队列角色添加以下权限以启用 AWS CodeCommit 访问权限：

```
{
  "Effect": "Allow",
  "Action": [
    "codecommit:GitPull",
    "codecommit:GitPush",
    "codecommit:GetRepository",
    "codecommit:ListRepositories"
  ],
  "Resource": "arn:aws:codecommit:{{REGION}}:{{YOUR_ACCOUNT_ID}}:{{PROJECT_REPOSITORY}}"
}
```

#### 在艺术家工作站上设置凭证提供商
<a name="setup-credential-provider-advanced"></a>

将每个艺术家工作站配置为使用 Deadline Cloud 队列凭据进行 AWS CodeCommit 访问。此设置在每个工作站上完成一次。

**配置凭证提供商**

1. 将凭证提供者配置文件添加到您的 AWS 配置文件 (`~/.aws/config`)：

   ```
   [profile queue-codecommit]
   credential_process = deadline queue export-credentials --farm-id {{farm-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}} --queue-id {{queue-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}}
   ```

1. 将 Git 配置为将此配置文件用于 AWS CodeCommit 存储库：

   ```
   git config --global credential.https://git-codecommit.{{REGION}}.amazonaws.com.rproxy.goskope.com.helper '!aws codecommit credential-helper --profile queue-codecommit $@'
   git config --global credential.https://git-codecommit.{{REGION}}.amazonaws.com.rproxy.goskope.com.UseHttpPath true
   ```

将{{farm-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}}和{{queue-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}}替换为您的实际农场和队列 ID。{{REGION}}替换为您的 AWS 地区（例如，`us-west-2`）。

#### 使用 AWS CodeCommit 使用队列凭证
<a name="using-codecommit-with-queue-credentials-advanced"></a>

配置完成后，Git 操作将在访问 AWS CodeCommit 仓库时自动使用队列角色证书。该`deadline queue export-credentials`命令返回的临时证书如下所示：

```
{
  "Version": 1,
  "AccessKeyId": "ASIA...",
  "SecretAccessKey": "...",
  "SessionToken": "...",
  "Expiration": "2025-11-10T23:02:23+00:00"
}
```

Deadline Cloud 会根据需要自动刷新这些凭据，您的 Git 操作无需额外配置即可运行：

```
git clone https://git-codecommit.{{REGION}}.amazonaws.com/v1/repos/{{PROJECT_REPOSITORY}}
git pull
git push
```

艺术家现在可以使用其队列权限访问项目存储库，而无需单独的 AWS CodeCommit 证书。只有有权访问特定队列的用户才能访问关联的存储库，因此您可以通过 Deadline Cloud 中的队列成员资格来控制存储库的访问权限。