

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

# 保护作业附件和软件存储桶
<a name="job-attachment-queues"></a>

每个队列将其任务附件存储在您拥有的 Amazon S3 存储桶中。三部分配置队列与其存储桶之间的连接：
+ 任务附件对 Amazon S3 存储桶中的根前缀进行写入和读取。您可以在 `CreateQueue` API 调用中指定此根前缀。
+ 存储桶有对应的`Queue Role`，它指定了向队列用户授予存储桶和根前缀访问权限的角色。创建队列时，您可以在任务附件存储桶和根前缀旁边指定 `Queue Role` Amazon 资源名称 (ARN)。
+ 对`AssumeQueueRoleForRead``AssumeQueueRoleForUser`、和 `AssumeQueueRoleForWorker` API 操作的授权调用会返回一组临时安全证书`Queue Role`。

共享 Amazon S3 存储桶和根前缀的队列也共享对存储在那里的任务附件的访问权限。为每个队列提供自己的存储桶和根前缀，这样队列权限边界也适用于任务附件。例如，当 queueA 和 queueB 有单独的存储分区时，只能访问 queueA 的艺术家无法读取 QueueB 的作业附件。如果多个队列属于同一个安全边界，例如一个节目的队列，则在它们之间共享存储空间是一种合理的简化方法。默认情况下，控制台会为每个队列设置自己的存储桶和根前缀。

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

------
#### [ JSON ]

****  

```
{
    "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": "{{111122223333}}"
                }
            }
        },
        {
            "Action": [
                "logs:GetLogEvents"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:logs:{{us-east-1}}:{{111122223333}}:log-group:/aws/deadline/{{FARM_ID}}/*"
        }
    ]
}
```

------

您还必须为角色设置信任政策。在以下示例中，将{{placeholder}}文本替换为您的资源特定信息。

------
#### [ JSON ]

****  

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

------

## 自定义软件 Amazon S3 存储桶
<a name="software-buckets"></a>

您可以将以下语句添加到您的`Queue Role`以访问您的 Amazon S3 存储桶中的自定义软件。在以下示例中，{{SOFTWARE\_BUCKET\_NAME}}替换为您的 S3 存储桶的名称和{{BUCKET\_ACCOUNT\_OWNER}}拥有该存储桶的 AWS 账户 ID。

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

有关 Amazon S3 安全最佳实践的更多信息，请参阅《亚马逊简单存储服务用户指南》[中的 * Amazon S3*](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html) 安全最佳实践。