

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 安全任務連接和軟體儲存貯體
<a name="job-attachment-queues"></a>

每個佇列都會將其任務附件存放在您擁有的 Amazon S3 儲存貯體中。三個部分設定佇列與其儲存貯體之間的連線：
+ 寫入 Amazon S3 儲存貯體中根字首並從中讀取的任務附件。您可以在 `CreateQueue` API 呼叫中指定此根字首。
+ 儲存貯體具有對應的 `Queue Role`，指定授予佇列使用者存取儲存貯體和根字首的角色。建立佇列時，您可以指定 `Queue Role` Amazon Resource Name (ARN) 以及任務附件儲存貯體和根字首。
+ 對 `AssumeQueueRoleForRead`、 `AssumeQueueRoleForUser`和 `AssumeQueueRoleForWorker` API 操作的授權呼叫會傳回一組 的臨時安全登入資料`Queue Role`。

共用 Amazon S3 儲存貯體和根字首的佇列也會共用存放在其中的任務附件存取權。為每個佇列提供自己的儲存貯體和根字首，以便佇列許可界限也適用於任務附件。例如，當 QueueA 和 QueueB 有不同的儲存貯體時，只能存取 QueueA 的藝術家無法讀取 QueueB 的任務附件。如果多個佇列屬於相同的安全界限，例如一個節目的佇列，則在它們之間共用儲存貯體是合理的簡化。主控台預設會使用自己的儲存貯體和根字首來設定每個佇列。

個別儲存貯體讓任務附件在 Amazon S3 中保持分隔。在工作者主機上，任務會以佇列的作業系統使用者身分執行程式碼。任務可以將檔案寫入使用者可寫入的任何位置，包括其他佇列使用者可讀取的位置。主機上的分隔來自佇列作業系統使用者。如需詳細資訊，請參閱[以專用作業系統使用者身分執行任務](job-run-as-user.md)。

若要隔離佇列，您必須`Queue Role`將 設定為僅允許佇列存取儲存貯體和根字首。在下列範例中，將每個{{預留位置}}取代為您的資源特定資訊。

------
#### [ 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}}/*"
        }
    ]
}
```

------

您也必須在角色上設定信任政策。在下列範例中，將{{預留位置}}文字取代為您的資源特定資訊。

------
#### [ 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 Simple Storage Service 使用者指南》中的 Amazon S3 安全最佳實務](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html)。 **