

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

# AWS Batch IAM 政策、角色和許可
<a name="IAM_policies"></a>

根據預設，使用者沒有使用 AWS Batch API、主控台或 建立或修改 AWS Batch 資源或執行任務 AWS Batch 的許可 AWS CLI。若要允許使用者執行這些動作，請建立 IAM 政策，以授予使用者特定資源和 API 操作的許可。然後，將政策連接到需要這些許可的使用者或群組。

當您將政策連接到使用者或使用者群組時，政策會允許或拒絕在特定資源上執行特定任務的許可。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[許可和政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/PermissionsAndPolicies.html)。如需管理和建立自訂 IAM 政策的詳細資訊，請參閱[管理 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html)。

AWS Batch AWS 服務 會代表您呼叫其他 。因此， AWS Batch 必須使用您的登入資料進行身分驗證。更具體地說，透過建立提供這些許可的 IAM 角色和政策進行 AWS Batch 身分驗證。然後，當您建立角色時，它會將角色與您的運算環境建立關聯。如需詳細資訊，請參閱《[IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-toplevel.html) *使用者指南*》中的 [Amazon ECS 執行個體角色](instance_IAM_role.md)、IAM 角色、[使用服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)，以及[建立角色以委派許可給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

**Topics**
+ [IAM 政策結構](iam-policy-structure.md)
+ [資源： 的政策範例 AWS Batch](ExamplePolicies_BATCH.md)
+ [Resource： AWS Batch managed 政策](batch_managed_policies.md)

# IAM 政策結構
<a name="iam-policy-structure"></a>

下列主題說明 IAM 政策的結構。

**Topics**
+ [政策語法](#policy-syntax)
+ [的 API 動作 AWS Batch](#UsingWithbatch_Actions)
+ [的 Amazon Resource Name AWS Batch](#batch_ARN_Format)
+ [確認使用者具有必要的許可](#check-required-permissions)

## 政策語法
<a name="policy-syntax"></a>

IAM 政策為包含一或多個陳述式的 JSON 文件。每個陳述式的結構如下所示。

```
{
  "Statement":[{
    "Effect":"effect",
    "Action":"action",
    "Resource":"arn",
    "Condition":{
      "condition":{
    "key":"value"
    }
      }
    }
  ]
}
```

陳述式由四個主要元素組成：
+ **Effect** (效果)：*效果* 可以是 `Allow` 或 `Deny`。根據預設，使用者沒有使用資源和 API 動作的許可。因此，所有請求都會遭到拒絕。明確允許覆寫預設值。明確拒絕覆寫任何允許。
+ **動作**：*動作*是您授予或拒絕許可的特定 API 動作。如需如何指定*動作*的指示，請參閱 [的 API 動作 AWS Batch](#UsingWithbatch_Actions)。
+ **Resource** (資源)：受動作影響的資源。透過某些 AWS Batch API 動作，您可以在政策中包含可由動作建立或修改的特定資源。若要在陳述式中指定資源，請使用它的 Amazon Resource Name (ARN)。如需詳細資訊，請參閱[AWS Batch API 動作支援的資源層級許可](batch-supported-iam-actions-resources.md)及[的 Amazon Resource Name AWS Batch](#batch_ARN_Format)。如果 AWS Batch API 操作目前不支援資源層級許可，請包含萬用字元 (\$1)，以指定所有資源都可能受到 動作的影響。
+ **Condition** (條件)：條件為選擇性。您可以使用它們來控制何時政策開始生效。

如需 IAM 政策陳述式範例的詳細資訊 AWS Batch，請參閱 [資源： 的政策範例 AWS Batch](ExamplePolicies_BATCH.md)。

## 的 API 動作 AWS Batch
<a name="UsingWithbatch_Actions"></a>

在 IAM 政策陳述式中，您可以從任何支援 IAM 的服務指定任何 API 動作。對於 AWS Batch，請使用下列字首搭配 API 動作的名稱： `batch:`（例如， `batch:SubmitJob`和 `batch:CreateComputeEnvironment`)。

若要在單一陳述式中指定多個動作，請以逗號分隔每個動作。

```
"Action": ["batch:action1", "batch:action2"]
```

您也可以透過包含萬用字元 (\$1) 來指定多個動作。例如，您可以指定名稱開頭為「Describe」的所有動作。

```
"Action": "batch:Describe*"
```

若要指定所有 AWS Batch API 動作，請包含萬用字元 (\$1)。

```
"Action": "batch:*"
```

如需 AWS Batch 動作清單，請參閱 *AWS Batch API 參考*中的[動作](https://docs.aws.amazon.com/batch/latest/APIReference/API_Operations.html)。

## 的 Amazon Resource Name AWS Batch
<a name="batch_ARN_Format"></a>

每個 IAM 政策陳述式都適用於您使用其 Amazon Resource Name (ARNs) 指定的資源。

Amazon Resource Name (ARN) 具有下列一般語法：

```
arn:aws:[service]:[region]:[account]:resourceType/resourcePath
```

*服務*  
服務 (例如，`batch`)。

*region*  
資源 AWS 區域 的 （例如，`us-east-2`)。

*account*  
 AWS 帳戶 ID，不含連字號 （例如 `123456789012`)。

*resourceType*  
資源類型 (例如，`compute-environment`)。

*resourcePath*  
識別資源的路徑。您可以在路徑中使用萬用字元 (\$1)。

AWS Batch API 操作目前支援數個 API 操作的資源層級許可。如需詳細資訊，請參閱[AWS Batch API 動作支援的資源層級許可](batch-supported-iam-actions-resources.md)。若要指定所有資源，或如果特定 API 動作不支援 ARNs，請在 `Resource`元素中包含萬用字元 (\$1)。

```
"Resource": "*"
```

## 確認使用者具有必要的許可
<a name="check-required-permissions"></a>

在將 IAM 政策投入生產環境之前，請確定它授予使用者使用他們所需的特定 API 動作和資源的許可。

若要這樣做，請先建立用於測試的使用者，並將 IAM 政策連接至測試使用者。接著，以測試使用者的身分提出請求。您可以在主控台或 AWS CLI中提出測試請求。

**注意**  
您也可以使用 [IAM 政策模擬器來測試您的政策](https://policysim.aws.amazon.com/home/index.jsp?#)。如需政策模擬器的詳細資訊，請參閱[《IAM 使用者指南》中的使用 IAM 政策模擬器](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies_testing-policies.html)。 **

如果政策未授予使用者預期的許可，或授予過多許可，您可以視需要調整政策並重新測試。重新測試，直到您取得所要的結果。

**重要**  
政策變更的散佈可能需要幾分鐘時間才能生效。因此，我們建議您在測試政策更新之前至少等待五分鐘。

如果授權檢查失敗，請求將傳回包含診斷資訊的編碼訊息。您可使用 `DecodeAuthorizationMessage` 動作將訊息解碼。如需詳細資訊，請參閱 *AWS Security Token Service API 參考*中的 [DecodeAuthorizationMessage](https://docs.aws.amazon.com/STS/latest/APIReference/API_DecodeAuthorizationMessage.html) 以及 *AWS CLI 命令參考*中的 [decode-authorization-message](https://docs.aws.amazon.com/cli/latest/reference/sts/decode-authorization-message.html)。

# 資源： 的政策範例 AWS Batch
<a name="ExamplePolicies_BATCH"></a>

您可以建立特定的 IAM 政策，以限制您帳戶中使用者可以存取的呼叫和資源。然後，您可以將這些政策連接到使用者。

當您將政策連接至使用者或使用者群組時，政策會允許或拒絕使用者對特定資源執行特定任務的許可。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[許可和政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/PermissionsAndPolicies.html)。如需如何管理和建立自訂 IAM 政策的說明，請參閱[管理 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html)。

下列範例顯示政策陳述式，您可以使用這些陳述式來控制使用者擁有的 許可 AWS Batch。

**Topics**
+ [唯讀存取](iam-example-read-only.md)
+ [資源：限制使用者、映像、權限、角色](iam-example-job-def.md)
+ [限制任務提交](iam-example-restrict-job-submission.md)
+ [限制為任務佇列](iam-example-restrict-job-queue.md)
+ [當所有條件符合字串時拒絕動作](iam-example-job-def-deny-all-image-logdriver.md)
+ [資源：當任何條件索引鍵符合字串時拒絕動作](iam-example-job-def-deny-any-image-logdriver.md)
+ [使用 `batch:ShareIdentifier` 條件索引鍵](iam-example-share-identifier.md)
+ [使用 管理 SageMaker AI 資源 AWS Batch](iam-example-full-access-service-environment.md)
+ [依資源標籤限制任務提交](iam-example-restrict-job-submission-by-tags.md)

# 資源： 的唯讀存取 AWS Batch
<a name="iam-example-read-only"></a>

下列政策授予使用者使用名稱開頭為 `Describe`和 之所有 AWS Batch API 動作的許可`List`。

除非另一個陳述式授予他們執行此操作的許可，否則使用者沒有對資源執行任何動作的許可。根據預設，系統會拒絕他們使用 API 動作的許可。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "batch:Describe*",
                "batch:List*",
                "batch:Get*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# 資源：僅限於 POSIX 使用者、Docker 映像、權限層級和任務提交時的角色
<a name="iam-example-job-def"></a>

下列政策允許 POSIX 使用者管理自己的一組受限任務定義。

使用第一個和第二個陳述式來註冊和取消註冊名稱字首為 *JobDefA\$1* 的任何任務定義名稱。

第一個陳述式也使用條件式內容金鑰來限制任務定義內 `containerProperties` 的 POSIX 使用者、權限狀態，以及容器映像值。如需詳細資訊，請參閱《 *AWS Batch API 參考*》中的 [RegisterJobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html)。在此範例中，只有在 POSIX 使用者設定為 時，才能註冊任務定義`nobody`。特權旗標設定為 `false`。最後，映像在 Amazon ECR 儲存庫`myImage`中設定為 。

**重要**  
Docker `uid` 會從容器映像內將 `user` 參數解析給該使用者。在大多數情況下，這可在容器映像內的 `/etc/passwd` 檔案中找到。您可以在任務定義和任何相關聯的 IAM 政策中使用直接`uid`值，以避免此名稱解析。 AWS Batch API 操作和 IAM `batch:User` 條件索引鍵都支援數值。

使用第三個陳述式來限制只能將特定角色限制為任務定義。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "batch:RegisterJobDefinition"
            ],
            "Resource": [
                "arn:aws:batch:us-east-2:999999999999:job-definition/JobDefA_*"
            ],
            "Condition": {
                "StringEquals": {
                    "batch:User": [
                        "nobody"
                    ],
                    "batch:Image": [
                        "999999999999.dkr.ecr.us-east-2.amazonaws.com/myImage"
                    ]
                },
                "Bool": {
                    "batch:Privileged": "false"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "batch:DeregisterJobDefinition"
            ],
            "Resource": [
                "arn:aws:batch:us-east-2:999999999999:job-definition/JobDefA_*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::999999999999:role/MyBatchJobRole"
            ]
        }
    ]
}
```

------

# 資源：限制在提交任務時的任務定義字首
<a name="iam-example-restrict-job-submission"></a>

使用下列政策，以任何以 *JobDefA* 開頭的任務定義名稱，將任務提交至任何任務佇列。

**重要**  
在限制任務提交的資源層級存取範圍時，您必須同時提供任務佇列和任務定義資源類型。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "batch:SubmitJob"
            ],
            "Resource": [
                "arn:aws:batch:us-east-2:111122223333:job-definition/JobDefA_*",
                "arn:aws:batch:us-east-2:111122223333:job-queue/*"
            ]
        }
    ]
}
```

------

# 資源：限制為任務佇列
<a name="iam-example-restrict-job-queue"></a>

使用下列政策，以任何任務定義名稱將任務提交至名為 **queue1** 的特定任務佇列。

**重要**  
在限制任務提交的資源層級存取範圍時，您必須同時提供任務佇列和任務定義資源類型。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "batch:SubmitJob"
            ],
            "Resource": [
                "arn:aws:batch:us-east-2:888888888888:job-definition/*",
                "arn:aws:batch:us-east-2:888888888888:job-queue/queue1"
            ]
        }
    ]
}
```

------

# 當所有條件符合字串時拒絕動作
<a name="iam-example-job-def-deny-all-image-logdriver"></a>

當 `batch:Image`（容器映像 ID) 條件金鑰為 "*string1*" 且 `batch:LogDriver`（容器日誌驅動程式） 條件金鑰為 "*string2*." AWS Batch 時，下列政策會拒絕存取 [https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html) API 操作。當任務跨越多個容器時，例如多節點平行任務，容器可能會有不同的組態。如果在一個陳述式中評估多個條件索引鍵，則會使用`AND`邏輯合併。因此，如果多個條件索引鍵中的任何一個不符合容器，則不會套用該容器`Deny`的效果。反之，同一任務中的不同容器可能會遭到拒絕。

如需 的條件金鑰清單 AWS Batch，請參閱《*服務授權參考*》中的 [的條件金鑰 AWS Batch](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsbatch.html#awsbatch-policy-keys)。除了 之外`batch:ShareIdentifier`，所有`batch`條件索引鍵都可以以此方式使用。`batch:ShareIdentifier` 條件索引鍵是為任務定義，而非任務定義。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "batch:RegisterJobDefinition"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Deny",
      "Action": "batch:RegisterJobDefinition",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "batch:Image": "string1",
          "batch:LogDriver": "string2"
        }
      }
    }
  ]
}
```

------

# 資源：當任何條件索引鍵符合字串時拒絕動作
<a name="iam-example-job-def-deny-any-image-logdriver"></a>

當 `batch:Image`（容器映像 ID) 條件金鑰為 "*string1*" 或 `batch:LogDriver`（容器日誌驅動程式） 條件金鑰為 "*string2*" 時，下列政策會拒絕存取 [https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html) API 操作。當任務跨越多個容器時，例如多節點平行任務，容器可能會有不同的組態。如果在一個陳述式中評估多個條件索引鍵，則會使用`AND`邏輯合併。因此，如果多個條件索引鍵中的任何一個不符合容器，則不會套用該容器`Deny`的效果。反之，同一任務中的不同容器可能會遭到拒絕。

如需 的條件金鑰清單 AWS Batch，請參閱*《服務授權參考*》中的 [的條件金鑰 AWS Batch](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsbatch.html#awsbatch-policy-keys)。除了 之外`batch:ShareIdentifier`，所有`batch`條件索引鍵都可以以此方式使用。(`batch:ShareIdentifier`條件索引鍵是為任務定義，而非任務定義。)

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "batch:RegisterJobDefinition"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Deny",
      "Action": [
        "batch:RegisterJobDefinition"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "batch:Image": [
            "string1"
          ]
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": [
        "batch:RegisterJobDefinition"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "batch:LogDriver": [
            "string2"
          ]
        }
      }
    }
  ]
}
```

------

# 資源：使用 `batch:ShareIdentifier` 條件索引鍵
<a name="iam-example-share-identifier"></a>

使用下列政策，將使用任務`jobDefA`定義的任務提交至具有`lowCpu`共用識別符`jobqueue1`的任務佇列。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "batch:SubmitJob"
      ],
      "Resource": [
        "arn:aws:batch:us-east-2:555555555555:job-definition/JobDefA",
        "arn:aws:batch:us-east-2:555555555555:job-queue/jobqueue1"
      ],
      "Condition": {
        "StringEquals": {
          "batch:ShareIdentifier": [
            "lowCpu"
          ]
        }
      }
    }
  ]
}
```

------

# 使用 管理 SageMaker AI 資源 AWS Batch
<a name="iam-example-full-access-service-environment"></a>

此政策允許 AWS Batch 管理 SageMaker AI 資源。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "batch:*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreateServiceLinkedRole"
            ],
            "Resource": "arn:aws:iam::*:role/*AWSServiceRoleForAWSBatchWithSagemaker",
            "Condition": {
                 "StringEquals": {
                     "iam:AWSServiceName": "sagemaker-queuing.batch.amazonaws.com"
                 }
             }
         },
         {
             "Effect": "Allow",
             "Action": "iam:PassRole",
             "Resource": "*",
             "Condition": {
                 "StringEquals": {
                     "iam:PassedToService": [
                         "sagemaker.amazonaws.com"
                      ]
                  }
              }
          }
    ]
}
```

------

# 資源：依任務定義和任務佇列上的資源標籤限制任務提交
<a name="iam-example-restrict-job-submission-by-tags"></a>

只有在任務佇列具有 標籤`Environment=dev`且任務定義具有 標籤 時，才能使用下列政策來提交任務`Project=calc`。此政策示範如何在任務提交期間使用資源標籤來控制對 AWS Batch 資源的存取。

**重要**  
使用評估任務定義資源標籤的政策提交任務時，您必須使用任務定義修訂格式 () 提交任務`job-definition:revision`。如果您在未指定修訂的情況下提交任務，將不會評估任務定義標籤，這可能會繞過您預期的存取控制。資源 ARN 中的 `*:*` 模式會強制執行提交必須包含修訂，確保標籤政策一律有效套用。

此政策使用兩個不同的陳述式，因為它會將不同的標籤條件套用至不同的資源類型。在限制任務提交的資源層級存取範圍時，您必須同時提供任務佇列和任務定義資源類型。

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "batch:SubmitJob",
      "Resource": "arn:aws:batch:*:*:job-queue/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Environment": "dev"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "batch:SubmitJob",
      "Resource": "arn:aws:batch:*:*:job-definition/*:*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Project": "calc"
        }
      }
    }
  ]
}
```

# Resource： AWS Batch managed 政策
<a name="batch_managed_policies"></a>

AWS Batch 提供可連接到使用者的受管政策。此政策提供使用 AWS Batch 資源和 API 操作的許可。您可以直接套用此政策，或用它做為起點來建立您自己的政策。如需這些政策中提及的每個 API 操作的詳細資訊，請參閱 *AWS Batch API 參考*中的[動作](https://docs.aws.amazon.com/batch/latest/APIReference/API_Operations.html)。

## AWSBatchFullAccess
<a name="AWSBatchFullAccess"></a>

此政策允許完整管理員存取 AWS Batch。

若要檢視政策的 JSON，請參閱《 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/about-managed-policy-reference.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/about-managed-policy-reference.html)》中的 [AWSBatchFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSBatchFullAccess.html)。