

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

# 安全性 AWS Batch
<a name="security"></a>

云安全 AWS 是重中之重。作为 AWS 客户，您可以从专为满足最安全敏感的组织的要求而构建的数据中心和网络架构中受益。

安全是双方共同承担 AWS 的责任。[责任共担模式](https://aws.amazon.com/compliance/shared-responsibility-model/)将其描述为云*的*安全性和云*中*的安全性：
+ **云安全** — AWS 负责保护在云中运行 AWS 服务的基础架构 AWS 云。 AWS 还为您提供可以安全使用的服务。作为[AWS 合规计划合规计划合规计划合](https://aws.amazon.com/compliance/programs/)的一部分，第三方审计师定期测试和验证我们安全的有效性。要了解适用的合规计划 AWS Batch，请参阅按合规计划划分的[范围内的AWSAWS 服务按合规计划](https://aws.amazon.com/compliance/services-in-scope/)。
+ **云中的安全性**：您的责任由您使用的 AWS 服务决定。您还需要对其它因素负责，包括您的数据的敏感性、您公司的要求以及适用的法律法规。

本文档可帮助您了解在使用时如何应用分担责任模型 AWS Batch。以下主题向您介绍如何进行配置 AWS Batch 以满足您的安全和合规性目标。您还将学习如何使用其他 AWS 服务来帮助您监控和保护您的 AWS Batch 资源。

**Topics**
+ [适用于 Identity and Access 管理 AWS Batch](security-iam.md)
+ [AWS Batch IAM 策略、角色和权限](IAM_policies.md)
+ [AWS Batch IAM 执行角色](execution-IAM-role.md)
+ [创建虚拟私有云](create-public-private-vpc.md)
+ [使用接口端点进行访问 AWS Batch](vpc-interface-endpoints.md)
+ [合规性验证 AWS Batch](compliance.md)
+ [中的基础设施安全 AWS Batch](infrastructure-security.md)
+ [防止跨服务混淆代理](cross-service-confused-deputy-prevention.md)
+ [使用记录 AWS Batch API 调用 AWS CloudTrail](logging-using-cloudtrail.md)
+ [排查 AWS Batch IAM](security_iam_troubleshoot.md)

# 适用于 Identity and Access 管理 AWS Batch
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) AWS 服务 可帮助管理员安全地控制对 AWS 资源的访问权限。IAM 管理员控制谁可以*进行身份验证*（登录）和*授权*（拥有权限）使用 AWS Batch 资源。您可以使用 IAM AWS 服务 ，无需支付额外费用。

**Topics**
+ [受众](#security_iam_audience)
+ [使用身份进行身份验证](#security_iam_authentication)
+ [使用策略管理访问](#security_iam_access-manage)
+ [如何 AWS Batch 与 IAM 配合使用](security_iam_service-with-iam.md)
+ [基于身份的策略示例 AWS Batch](security_iam_id-based-policy-examples.md)
+ [AWS 的托管策略 AWS Batch](security-iam-awsmanpol.md)

## 受众
<a name="security_iam_audience"></a>

您的使用方式 AWS Identity and Access Management (IAM) 因您的角色而异：
+ **服务用户**：如果您无法访问功能，请从管理员处请求权限（请参阅[排查 AWS Batch IAM](security_iam_troubleshoot.md)）
+ **服务管理员**：确定用户访问权限并提交权限请求（请参阅[如何 AWS Batch 与 IAM 配合使用](security_iam_service-with-iam.md)）
+ **IAM 管理员**：编写用于管理访问权限的策略（请参阅[基于身份的策略示例 AWS Batch](security_iam_id-based-policy-examples.md)）

## 使用身份进行身份验证
<a name="security_iam_authentication"></a>

身份验证是您 AWS 使用身份凭证登录的方式。您必须以 IAM 用户身份进行身份验证 AWS 账户根用户，或者通过担任 IAM 角色进行身份验证。

您可以使用来自身份源的证书 AWS IAM Identity Center （例如（IAM Identity Center）、单点登录身份验证或 Google/Facebook 证书，以联合身份登录。有关登录的更多信息，请参阅《AWS 登录 用户指南》**中的[如何登录您的 AWS 账户](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)。

对于编程访问， AWS 提供 SDK 和 CLI 来对请求进行加密签名。有关更多信息，请参阅*《IAM 用户指南》*中的[适用于 API 请求的AWS 签名版本 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)。

### AWS 账户 root 用户
<a name="security_iam_authentication-rootuser"></a>

 创建时 AWS 账户，首先会有一个名为 AWS 账户 *root 用户的*登录身份，该身份可以完全访问所有资源 AWS 服务 和资源。我们强烈建议不要使用根用户进行日常任务。有关需要根用户凭证的任务，请参阅《IAM 用户指南》**中的[需要根用户凭证的任务](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

### 联合身份
<a name="security_iam_authentication-federated"></a>

作为最佳实践，要求人类用户使用与身份提供商的联合身份验证才能 AWS 服务 使用临时证书进行访问。

*联合身份是指*来自您的企业目录、Web 身份提供商的用户 Directory Service ，或者 AWS 服务 使用来自身份源的凭据进行访问的用户。联合身份代入可提供临时凭证的角色。

要集中管理访问权限，建议使用。 AWS IAM Identity Center有关更多信息，请参阅《AWS IAM Identity Center 用户指南》**中的[什么是 IAM Identity Center？](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。

### IAM 用户和群组
<a name="security_iam_authentication-iamuser"></a>

*[IAM 用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)*是对某个人员或应用程序具有特定权限的一个身份。建议使用临时凭证，而非具有长期凭证的 IAM 用户。有关更多信息，请参阅 *IAM 用户指南*[中的要求人类用户使用身份提供商的联合身份验证才能 AWS 使用临时证书进行访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)。

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)指定一组 IAM 用户，便于更轻松地对大量用户进行权限管理。有关更多信息，请参阅*《IAM 用户指南》*中的 [IAM 用户使用案例](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html)。

### IAM 角色
<a name="security_iam_authentication-iamrole"></a>

*[IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)*是具有特定权限的身份，可提供临时凭证。您可以通过[从用户切换到 IAM 角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)或调用 AWS CLI 或 AWS API 操作来代入角色。有关更多信息，请参阅《IAM 用户指南》**中的[担任角色的方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)。

IAM 角色对于联合用户访问、临时 IAM 用户权限、跨账户访问、跨服务访问以及在 Amazon EC2 上运行的应用程序非常有用。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的跨账户资源访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

## 使用策略管理访问
<a name="security_iam_access-manage"></a>

您可以 AWS 通过创建策略并将其附加到 AWS 身份或资源来控制中的访问权限。策略定义了与身份或资源关联时的权限。 AWS 在委托人提出请求时评估这些政策。大多数策略都以 JSON 文档的 AWS 形式存储在中。有关 JSON 策略文档的更多信息，请参阅*《IAM 用户指南》*中的 [JSON 策略概述](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)。

管理员使用策略，通过定义哪个**主体**可以在什么**条件**下对哪些**资源**执行哪些**操作**来指定谁有权访问什么。

默认情况下，用户和角色没有权限。IAM 管理员创建 IAM 策略并将其添加到角色中，然后用户可以担任这些角色。IAM 策略定义权限，与执行操作所用的方法无关。

### 基于身份的策略
<a name="security_iam_access-manage-id-based-policies"></a>

基于身份的策略是您附加到身份（用户、组或角色）的 JSON 权限策略文档。这些策略控制身份可以执行什么操作、对哪些资源执行以及在什么条件下执行。要了解如何创建基于身份的策略，请参阅《IAM 用户指南》**中的[使用客户管理型策略定义自定义 IAM 权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

基于身份的策略可以是*内联策略*（直接嵌入到单个身份中）或*托管策略*（附加到多个身份的独立策略）。要了解如何在托管策略和内联策略之间进行选择，请参阅*《IAM 用户指南》*中的[在托管策略与内联策略之间进行选择](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html)。

### 基于资源的策略
<a name="security_iam_access-manage-resource-based-policies"></a>

基于资源的策略是附加到资源的 JSON 策略文档。示例包括 IAM *角色信任策略*和 Amazon S3 *存储桶策略*。在支持基于资源的策略的服务中，服务管理员可以使用它们来控制对特定资源的访问。您必须在基于资源的策略中[指定主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。

基于资源的策略是位于该服务中的内联策略。您不能在基于资源的策略中使用 IAM 中的 AWS 托管策略。

### 其他策略类型
<a name="security_iam_access-manage-other-policies"></a>

AWS 支持其他策略类型，这些策略类型可以设置更常见的策略类型授予的最大权限：
+ **权限边界** – 设置基于身份的策略可以授予 IAM 实体的最大权限。有关更多信息，请参阅《 IAM 用户指南》**中的 [IAM 实体的权限边界](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。
+ **服务控制策略 (SCPs)**-在中指定组织或组织单位的最大权限 AWS Organizations。有关更多信息，请参阅《AWS Organizations 用户指南》**中的[服务控制策略](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ **资源控制策略 (RCPs)**-设置账户中资源的最大可用权限。有关更多信息，请参阅《*AWS Organizations 用户指南》*中的[资源控制策略 (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。
+ **会话策略** – 在为角色或联合用户创建临时会话时，作为参数传递的高级策略。有关更多信息，请参阅《IAM 用户指南》**中的[会话策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)。

### 多个策略类型
<a name="security_iam_access-manage-multiple-policies"></a>

当多个类型的策略应用于一个请求时，生成的权限更加复杂和难以理解。要了解在涉及多种策略类型时如何 AWS 确定是否允许请求，请参阅 *IAM 用户指南*中的[策略评估逻辑](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)。

# 如何 AWS Batch 与 IAM 配合使用
<a name="security_iam_service-with-iam"></a>

在使用 IAM 管理访问权限之前 AWS Batch，请先了解有哪些 IAM 功能可供使用 AWS Batch。


**您可以搭配使用的 IAM 功能 AWS Batch**  

| IAM 功能 | AWS Batch 支持 | 
| --- | --- | 
|  [基于身份的策略](#security_iam_service-with-iam-id-based-policies)  |   是  | 
|  基于资源的策略  |   否   | 
|  [策略操作](#security_iam_service-with-iam-id-based-policies-actions)  |   是  | 
|  [策略资源](#security_iam_service-with-iam-id-based-policies-resources)  |   是  | 
|  [策略条件键](#security_iam_service-with-iam-id-based-policies-conditionkeys)  |   是  | 
|  ACLs  |   否   | 
|  [ABAC（策略中的标签）](#security_iam_service-with-iam-tags)  |   是  | 
|  [临时凭证](#security_iam_service-with-iam-roles-tempcreds)  |   是  | 
|  [主体权限](#security_iam_service-with-iam-principal-permissions)  |   是  | 
|  [服务角色](#security_iam_service-with-iam-roles-service)  |   是  | 
|  [服务关联角色](#security_iam_service-with-iam-roles-service-linked)  |   是  | 

要全面了解 AWS Batch 以及其他 AWS 服务如何与大多数 IAM 功能配合使用，请参阅 IAM *用户指南中的与 IAM* [配合使用的AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

## 基于身份的策略 AWS Batch
<a name="security_iam_service-with-iam-id-based-policies"></a>

**支持基于身份的策略：**是

基于身份的策略是可附加到身份（如 IAM 用户、用户组或角色）的 JSON 权限策略文档。这些策略控制用户和角色可在何种条件下对哪些资源执行哪些操作。要了解如何创建基于身份的策略，请参阅《IAM 用户指南》**中的[使用客户管理型策略定义自定义 IAM 权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

通过使用 IAM 基于身份的策略，您可以指定允许或拒绝的操作和资源以及允许或拒绝操作的条件。要了解可在 JSON 策略中使用的所有元素，请参阅《IAM 用户指南》**中的 [IAM JSON 策略元素引用](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。

### 基于身份的策略示例 AWS Batch
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>

要查看 AWS Batch 基于身份的策略的示例，请参阅。[基于身份的策略示例 AWS Batch](security_iam_id-based-policy-examples.md)

## 的政策行动 AWS Batch
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**支持策略操作：**是

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

JSON 策略的 `Action` 元素描述可用于在策略中允许或拒绝访问的操作。在策略中包含操作以授予执行关联操作的权限。

要查看 AWS Batch 操作列表，请参阅《*服务授权参考*》 AWS Batch中[定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsbatch.html#awsbatch-actions-as-permissions)。

正在执行的策略操作在操作前 AWS Batch 使用以下前缀：

```
batch
```

要在单个语句中指定多项操作，请使用逗号将它们隔开。

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

您也可以使用通配符（\$1）指定多个操作。例如，要指定以单词 `Describe` 开头的所有操作，包括以下操作：

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

要查看 AWS Batch 基于身份的策略的示例，请参阅。[基于身份的策略示例 AWS Batch](security_iam_id-based-policy-examples.md)

## 的政策资源 AWS Batch
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**支持策略资源：**是

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

`Resource` JSON 策略元素指定要向其应用操作的一个或多个对象。作为最佳实践，请使用其 [Amazon 资源名称（ARN）](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)指定资源。对于不支持资源级权限的操作，请使用通配符 (\$1) 指示语句应用于所有资源。

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

要查看 AWS Batch 资源类型及其列表 ARNs，请参阅《*服务授权参考*》 AWS Batch中的 “[由定义的资源](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsbatch.html#awsbatch-resources-for-iam-policies)”。要了解您可以在哪些操作中指定每个资源的 ARN，请参阅 [AWS Batch定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsbatch.html#awsbatch-actions-as-permissions)。

## 的策略条件密钥 AWS Batch
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**支持特定于服务的策略条件键：**是

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

`Condition` 元素根据定义的条件指定语句何时执行。您可以创建使用[条件运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)（例如，等于或小于）的条件表达式，以使策略中的条件与请求中的值相匹配。要查看所有 AWS 全局条件键，请参阅 *IAM 用户指南*中的[AWS 全局条件上下文密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

要查看 AWS Batch 条件键列表，请参阅《*服务授权参考*》 AWS Batch中的[条件密钥](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsbatch.html#awsbatch-policy-keys)。要了解您可以使用条件键的操作和资源，请参阅[操作定义者 AWS Batch](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsbatch.html#awsbatch-actions-as-permissions)。

## 基于属性的访问控制 (ABAC) AWS Batch
<a name="security_iam_service-with-iam-tags"></a>

**支持 ABAC（策略中的标签）：**是

基于属性的访问权限控制（ABAC）是一种授权策略，该策略基于称为标签的属性来定义权限。您可以将标签附加到 IAM 实体和 AWS 资源，然后设计 ABAC 策略以允许在委托人的标签与资源上的标签匹配时进行操作。

要基于标签控制访问，您需要使用 `aws:ResourceTag/key-name``aws:RequestTag/key-name` 或 `aws:TagKeys` 条件键在策略的[条件元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)中提供标签信息。

如果某个服务对于每种资源类型都支持所有这三个条件键，则对于该服务，该值为**是**。如果某个服务仅对于部分资源类型支持所有这三个条件键，则该值为**部分**。

有关 ABAC 的更多信息，请参阅《IAM 用户指南》**中的[使用 ABAC 授权定义权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)。要查看设置 ABAC 步骤的教程，请参阅《IAM 用户指南》**中的[使用基于属性的访问权限控制（ABAC）](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)。

## 将临时证书用于 AWS Batch
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**支持临时凭证：**是

临时证书提供对 AWS 资源的短期访问权限，并且是在您使用联合身份或切换角色时自动创建的。 AWS 建议您动态生成临时证书，而不是使用长期访问密钥。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)和[使用 IAM 的。AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)

## 的跨服务主体权限 AWS Batch
<a name="security_iam_service-with-iam-principal-permissions"></a>

**支持转发访问会话（FAS）：**是

 转发访问会话 (FAS) 使用调用主体的权限 AWS 服务，再加上 AWS 服务 向下游服务发出请求的请求。有关发出 FAS 请求时的策略详情，请参阅[转发访问会话](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)。

## 的服务角色 AWS Batch
<a name="security_iam_service-with-iam-roles-service"></a>

**支持服务角色：**是

 服务角色是由一项服务担任、代表您执行操作的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。IAM 管理员可以在 IAM 中创建、修改和删除服务角色。有关更多信息，请参阅《IAM 用户指南》**中的[创建向 AWS 服务委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

**警告**  
更改服务角色的权限可能会中断 AWS Batch 功能。只有在 AWS Batch 提供指导时，才能编辑服务角色。

## 的服务相关角色 AWS Batch
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**支持服务关联角色：**是

 服务相关角色是一种与服务相关联的 AWS 服务服务角色。服务可以代入代表您执行操作的角色。服务相关角色出现在您的中 AWS 账户 ，并且归服务所有。IAM 管理员可以查看但不能编辑服务关联角色的权限。

有关创建或管理服务相关角色的详细信息，请参阅[能够与 IAM 搭配使用的AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。在表中查找**服务相关角色**列中包含 `Yes` 的表。选择**是**链接以查看该服务的服务相关角色文档。

# 基于身份的策略示例 AWS Batch
<a name="security_iam_id-based-policy-examples"></a>

默认情况下，用户和角色没有创建或修改 AWS Batch 资源的权限。要授予用户对所需资源执行操作的权限，IAM 管理员可以创建 IAM 策略。

要了解如何使用这些示例 JSON 策略文档创建基于 IAM 身份的策略，请参阅《IAM 用户指南》**中的[创建 IAM 策略（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)。

有关由 AWS Batch定义的操作和资源类型（包括每种资源类型的格式）的详细信息，请参阅《*服务授权参考*》 AWS Batch中的[操作、资源和条件密钥](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsbatch.html)。 ARNs 

**Topics**
+ [策略最佳实践](#security_iam_service-with-iam-policy-best-practices)
+ [使用控制 AWS Batch 台](#security_iam_id-based-policy-examples-console)
+ [允许用户查看他们自己的权限](#security_iam_id-based-policy-examples-view-own-permissions)

## 策略最佳实践
<a name="security_iam_service-with-iam-policy-best-practices"></a>

基于身份的策略决定了某人是否可以在您的账户中创建、访问或删除 AWS Batch 资源。这些操作可能会使 AWS 账户产生成本。创建或编辑基于身份的策略时，请遵循以下指南和建议：
+ **开始使用 AWS 托管策略并转向最低权限权限** — 要开始向用户和工作负载授予权限，请使用为许多常见用例授予权限的*AWS 托管策略*。它们在你的版本中可用 AWS 账户。我们建议您通过定义针对您的用例的 AWS 客户托管策略来进一步减少权限。有关更多信息，请参阅《IAM 用户指南》**中的 [AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)或[工作职能的AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。
+ **应用最低权限**：在使用 IAM 策略设置权限时，请仅授予执行任务所需的权限。为此，您可以定义在特定条件下可以对特定资源执行的操作，也称为*最低权限许可*。有关使用 IAM 应用权限的更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的策略和权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。
+ **使用 IAM 策略中的条件进一步限制访问权限**：您可以向策略添加条件来限制对操作和资源的访问。例如，您可以编写策略条件来指定必须使用 SSL 发送所有请求。如果服务操作是通过特定的方式使用的，则也可以使用条件来授予对服务操作的访问权限 AWS 服务，例如 CloudFormation。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM JSON 策略元素：条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。
+ **使用 IAM Access Analyzer 验证您的 IAM 策略，以确保权限的安全性和功能性**：IAM Access Analyzer 会验证新策略和现有策略，以确保策略符合 IAM 策略语言（JSON）和 IAM 最佳实践。IAM Access Analyzer 提供 100 多项策略检查和可操作的建议，以帮助您制定安全且功能性强的策略。有关更多信息，请参阅《IAM 用户指南》**中的[使用 IAM Access Analyzer 验证策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。
+ **需要多重身份验证 (MFA**)-如果 AWS 账户您的场景需要 IAM 用户或根用户，请启用 MFA 以提高安全性。若要在调用 API 操作时需要 MFA，请将 MFA 条件添加到您的策略中。有关更多信息，请参阅《IAM 用户指南》**中的[使用 MFA 保护 API 访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)。

有关 IAM 中的最佳实操的更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

## 使用控制 AWS Batch 台
<a name="security_iam_id-based-policy-examples-console"></a>

要访问 AWS Batch 控制台，您必须拥有一组最低权限。这些权限必须允许您列出和查看有关您的 AWS Batch 资源的详细信息 AWS 账户。如果创建比必需的最低权限更为严格的基于身份的策略，对于附加了该策略的实体（用户或角色），控制台将无法按预期正常运行。

对于仅调用 AWS CLI 或 AWS API 的用户，您无需为其设置最低控制台权限。相反，只允许访问与其尝试执行的 API 操作相匹配的操作。

为确保用户和角色仍然可以使用 AWS Batch 控制台，还需要将 AWS Batch `ConsoleAccess`或`ReadOnly` AWS 托管策略附加到实体。有关更多信息，请参阅《IAM 用户指南》**中的[为用户添加权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)。

## 允许用户查看他们自己的权限
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

该示例说明了您如何创建策略，以允许 IAM 用户查看附加到其用户身份的内联和托管式策略。此策略包括在控制台上或使用 AWS CLI 或 AWS API 以编程方式完成此操作的权限。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

# AWS 的托管策略 AWS Batch
<a name="security-iam-awsmanpol"></a>







您可以使用 AWS 托管策略来简化团队和已配置 AWS 资源的身份访问管理。 AWS 托管政策涵盖各种常见用例，默认情况下可在您的 AWS 账户中使用，并以您的名义进行维护和更新。您无法更改 AWS 托管策略中的权限。如果您需要更大的灵活性，也可以选择创建 IAM 客户管理型策略。这样，您就可以为团队预配置的资源提供他们所需的确切权限。

有关 AWS 托管策略的更多信息，请参阅 *IAM 用户指南*中的[AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

AWS 服务代表您维护和更新 AWS 托管政策。 AWS 服务会定期向 AWS 托管策略添加其他权限。 AWS 当有新功能启动或操作可用时，托管策略很可能会更新。此类更新会自动影响附加策略的所有身份（用户、组和角色）。但是，它们不会移除权限或破坏您的现有权限。

此外，还 AWS 支持跨多个服务的工作职能的托管策略。例如，`ReadOnlyAccess` AWS 托管策略提供对所有 AWS 服务和资源的只读访问权限。当服务启动一项新功能时， AWS 会为新操作和资源添加只读权限。有关工作职能策略的列表和说明，请参阅 *IAM 用户指南*中的[适用于工作职能的AWS 托管式策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。









## AWS 托管策略：**BatchServiceRolePolicy**
<a name="security-iam-awsmanpol-BatchServiceRolePolicy"></a>

**BatchServiceRolePolicy**托管 IAM 策略由[`AWSServiceRoleForBatch`](using-service-linked-roles.md)服务相关角色使用。这 AWS Batch 允许您代表您执行操作。您不能将此策略附加到您的 IAM 实体。有关更多信息，请参阅 [将服务相关角色用于 AWS Batch](using-service-linked-roles.md)。



此策略 AWS Batch 允许对特定资源完成以下操作：
+ `autoscaling`— AWS Batch 允许创建和管理 Amazon EC2 Auto Scaling 资源。 AWS Batch 为大多数计算环境创建和管理 Amazon EC2 Auto Scaling 组。
+ `ec2`— AWS Batch 允许控制 Amazon EC2 实例的生命周期以及创建和管理启动模板和标签。 AWS Batch 为某些 EC2 竞价计算环境创建和管理 EC2 竞价型队列请求。
+ `ecs`- AWS Batch 允许创建和管理 Amazon ECS 集群、任务定义和任务执行任务。
+ `eks`- AWS Batch 允许描述用于验证的 Amazon EKS 集群资源。
+ `iam`-允许 AWS Batch 验证所有者提供的角色并将其传递给 Amazon EC2、Amazon EC2 Auto Scaling 和 Amazon ECS。
+ `logs`— AWS Batch 允许创建和管理 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)[BatchServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/BatchServiceRolePolicy.html)中的。

## AWS 托管策略：**AWSBatchServiceRolePolicyForSageMaker**
<a name="security-iam-awsmanpol-sagemaker-service-role-policy"></a>

[`AWSServiceRoleForAWSBatchWithSagemaker`](using-service-linked-roles-batch-sagemaker.md) AWS Batch 允许代表您执行操作。您不能将此策略附加到您的 IAM 实体。有关更多信息，请参阅 [将服务相关角色用于 AWS Batch](using-service-linked-roles.md)。

此策略 AWS Batch 允许对特定资源完成以下操作：
+ `sagemaker`— AWS Batch 允许管理 SageMaker AI 训练作业和其他 SageMaker AI 资源。
+ `iam:PassRole`— AWS Batch 允许将客户定义的执行角色传递给 SageMaker AI 以执行作业。资源限制允许将角色传递给 SageMaker AI 服务。

要查看策略的 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)[AWSBatchServiceRolePolicyForSageMaker](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSBatchServiceRolePolicyForSageMaker.html)中的。

## AWS 托管策略:**AWSBatchServiceRole**策略
<a name="security-iam-awsmanpol-AWSBatchServiceRolePolicy"></a>

名为的角色权限策略**AWSBatchServiceRole** AWS Batch 允许对特定资源完成以下操作：

**AWSBatchServiceRole**托管 IAM 策略通常由名为的角色使用 **AWSBatchServiceRole**，该策略包含以下权限。遵循授予最低权限的标准安全建议，**AWSBatchServiceRole** 托管策略可用作指南。如果您的用例不需要托管策略中授予的任何权限，请创建自定义策略并仅添加所需的权限。此 AWS Batch 托管策略和角色可用于大多数计算环境类型，但最好使用与服务相关的角色，这样可以减少出错率、扩大范围并改善托管体验。
+ `autoscaling`— AWS Batch 允许创建和管理 Amazon EC2 Auto Scaling 资源。 AWS Batch 为大多数计算环境创建和管理 Amazon EC2 Auto Scaling 组。
+ `ec2`— AWS Batch 允许管理 Amazon EC2 实例的生命周期以及创建和管理启动模板和标签。 AWS Batch 为某些 EC2 竞价计算环境创建和管理 EC2 竞价型队列请求。
+ `ecs`- AWS Batch 允许创建和管理 Amazon ECS 集群、任务定义和任务执行任务。
+ `iam`-允许 AWS Batch 验证所有者提供的角色并将其传递给 Amazon EC2、Amazon EC2 Auto Scaling 和 Amazon ECS。
+ `logs`— AWS Batch 允许创建和管理 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)[AWSBatchServiceRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSBatchServiceRole.html)中的。

## AWS 托管策略：**AWSBatchFullAccess**
<a name="security-iam-awsmanpol-BatchFullAccess"></a>

该**AWSBatchFullAccess**策略授予 AWS Batch 操作对 AWS Batch 资源的完全访问权限。它还授予亚马逊 EC2、Amazon ECS、Amazon EKS 和 IAM 服务的描述和列出操作权限。 CloudWatch这样，IAM 身份（无论是用户还是角色）都可以查看代表他们创建的 AWS Batch 托管资源。最后，该策略还允许将选定的 IAM 角色传递给这些服务。

您可以附加**AWSBatchFullAccess**到您的 IAM 实体。 AWS Batch 还将此策略附加 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)中的。

## AWS Batch AWS 托管策略的更新
<a name="security-iam-awsmanpol-updates"></a>



查看 AWS Batch 自该服务开始跟踪这些更改以来 AWS 托管策略更新的详细信息。要获得有关此页面变更的自动提醒，请订阅 “ AWS Batch 文档历史记录” 页面上的 RSS feed。




| 更改 | 描述 | 日期 | 
| --- | --- | --- | 
|  ****[ AWSBatchServiceRolePolicyForSageMaker](using-service-linked-roles-batch-sagemaker.md)****策略已添加  |  为** AWSBatchServiceRolePolicyForSageMaker**服务相关角色添加了新的 AWS 托管策略， AWS Batch 允许代表您管理 SageMaker AI。  |  2025 年 7 月 31 日  | 
|  ****[BatchServiceRolePolicy](#security-iam-awsmanpol-BatchServiceRolePolicy)****政策已更新  |  进行了更新，以增加对描述竞价型实例集请求历史记录和 Amazon EC2 Auto Scaling 活动的支持。  |  2023 年 12 月 5 日  | 
|  ****[AWSBatchServiceRole](#security-iam-awsmanpol-AWSBatchServiceRolePolicy)****策略已添加  |  更新为添加语句 IDs、向`ec2:DescribeSpotFleetRequestHistory`和授予 AWS Batch 权限`autoscaling:DescribeScalingActivities`。  |  2023 年 12 月 5 日  | 
|  **[BatchServiceRolePolicy](#security-iam-awsmanpol-BatchServiceRolePolicy)**政策已更新  |  更新，增加了对描述 Amazon EKS 集群的支持。  |  2022 年 10 月 20 日  | 
|  **[AWSBatchFullAccess](#security-iam-awsmanpol-BatchFullAccess)**政策已更新  |  更新，增加了对列出和描述 Amazon EKS 集群的支持。  |  2022 年 10 月 20 日  | 
|  **[BatchServiceRolePolicy](#security-iam-awsmanpol-BatchServiceRolePolicy)**政策已更新  |  更新，增加了对由 AWS Resource Groups管理的 Amazon EC2 容量预留组的支持。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[使用容量预留组](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-cr-group.html)。  |  2022 年 5 月 18 日  | 
|  **[BatchServiceRolePolicy](#security-iam-awsmanpol-BatchServiceRolePolicy)**并更新了**[AWSBatchServiceRole](using-service-linked-roles.md)**政策  |  已更新，增加了对描述 Amazon EC2 中 AWS Batch 托管实例状态的支持，以便替换运行状况不佳的实例。  |  2021 年 12 月 6 日  | 
|  **[BatchServiceRolePolicy](#security-iam-awsmanpol-BatchServiceRolePolicy)**政策已更新  |  更新，以增加对 Amazon EC2 中的置放群组、容量预留、弹性 GPU 和 Elastic Inference 资源的支持。  |  2021 年 3 月 26 日  | 
|  **[BatchServiceRolePolicy](#security-iam-awsmanpol-BatchServiceRolePolicy)**策略已添加  |  借助**AWSServiceRoleForBatch**服务相关角色的**BatchServiceRolePolicy**托管策略，您可以使用由管理的服务相关角色。 AWS Batch有了此策略，您无需维护自己的角色即可在计算环境中使用。  |  2021 年 3 月 10 日  | 
|  **[AWSBatchFullAccess](#security-iam-awsmanpol-BatchFullAccess)**-添加添加服务相关角色的权限  |  添加 IAM 权限以允许将**AWSServiceRoleForBatch**服务相关角色添加到账户。  |  2021 年 3 月 10 日  | 
|  AWS Batch 开始跟踪更改  |  AWS Batch 开始跟踪其 AWS 托管策略的更改。  | 2021 年 3 月 10 日 | 

# AWS Batch IAM 策略、角色和权限
<a name="IAM_policies"></a>

默认情况下，用户无权创建或修改 AWS Batch 资源，也无权使用 AWS Batch API、 AWS Batch 控制台或 AWS CLI。要允许用户执行这些操作，请创建 IAM policy，授予用户使用特定资源和 API 操作的权限。然后，将这些策略附加到需要这些权限的用户或组。

在将策略附加到一个用户或一组用户时，它会授权或拒绝用户对指定资源执行指定任务。有关更多信息，请参阅 *IAM 用户指南*中的[权限与策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/PermissionsAndPolicies.html)。有关管理和创建自定义 IAM policy 的更多信息，请参阅[管理 IAM policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html)。

AWS Batch 代表你给他 AWS 服务 人打电话。因此， AWS Batch 必须使用您的凭据进行身份验证。更具体地说，通过创建提供这些权限的 IAM 角色和策略 AWS Batch 进行身份验证。然后，它会在您创建它们时将角色与您的计算环境相关联。有关更多信息[Amazon ECS 实例角色](instance_IAM_role.md)，请参阅 [IAM *用户指南*中的 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-toplevel.html)[、使用服务相关角色](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)
+ [资源： AWS Batch 托管策略](batch_managed_policies.md)

# IAM 策略结构
<a name="iam-policy-structure"></a>

以下主题说明 IAM policy 的结构。

**Topics**
+ [策略语法](#policy-syntax)
+ [适用于 API 的操作 AWS Batch](#UsingWithbatch_Actions)
+ [的亚马逊资源名称 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：**此 *effect* 可以是 `Allow` 或 `Deny`。默认情况下 用户没有使用资源和 API 操作的权限。因此，所有请求都将被拒绝。显式允许将覆盖默认规则。显式拒绝将覆盖任何允许。
+ **Action**：*action* 是对其授予或拒绝权限的特定 API 操作。有关如何指定*操作*的说明，请参阅 [适用于 API 的操作 AWS Batch](#UsingWithbatch_Actions)。
+ **Resource**：受操作影响的资源。有些 AWS Batch API 操作允许您在策略中包括该操作可以创建或修改的特定资源。要在语句中指定资源，您可使用其 Amazon 资源名称 (ARN)。有关更多信息，请参阅[API 操作支持的资源级权限 AWS Batch](batch-supported-iam-actions-resources.md)和[的亚马逊资源名称 AWS Batch](#batch_ARN_Format)。如果 AWS Batch API 操作当前不支持资源级权限，请添加通配符 (\$1)，以指定所有资源都可能受到该操作的影响。
+ **条件**：条件是可选的。它们可以用于控制策略生效的时间。

有关的 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)。

## 的亚马逊资源名称 AWS Batch
<a name="batch_ARN_Format"></a>

每个 IAM 政策声明都适用于您使用其 Amazon 资源名称 (ARNs) 指定的资源。

Amazon 资源名称（ARN）具有以下通用语法：

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

*service*  
服务 (例如，`batch`)。

*region*  
代表 AWS 区域 资源（例如，`us-east-2`）。

*account*  
不带连字符的 AWS 账户 ID（例如，`123456789012`）。

*resourceType*  
资源类型 (例如，`compute-environment`)。

*resourcePath*  
识别资源的路径。您可以在路径中使用通配符 (\$1)。

AWS Batch API 操作目前支持对多个 API 操作的资源级权限。有关更多信息，请参阅 [API 操作支持的资源级权限 AWS Batch](batch-supported-iam-actions-resources.md)。要指定所有资源，或者如果特定 API 操作不支持 ARNs，请在`Resource`元素中添加通配符 (\$1)。

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

## 确认用户是否具有所需权限
<a name="check-required-permissions"></a>

在实施 IAM policy 之前，请确保为用户授予使用其所需的特定 API 操作和资源的权限。

为此，首先创建一个用于测试目的的用户，然后将 IAM policy 附加到该测试用户。然后，以测试用户身份提出请求。您可以在控制台中提出测试请求，也可以使用 AWS CLI提出测试请求。

**注意**  
您也可以使用 [IAM Policy Simulator](https://policysim.aws.amazon.com/home/index.jsp?#) 测试您的策略。有关策略模拟器的更多信息，请参阅 *IAM 用户指南*中的[使用 IAM Policy Simulator](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies_testing-policies.html)。

如果策略未向用户授予您所期望的权限，或者策略过度宽松，可以根据需要调整策略。重新测试，直到获得预期的结果。

**重要**  
在其生效之前，它需要几分钟时间将策略更改为适合状态。因此，我们建议您在测试策略更新前，等候至少五分钟的时间。

如果身份验证检查失败，该请求将返回一个带有诊断信息的代码消息。您可以使用 `DecodeAuthorizationMessage` 操作对消息进行解码。有关更多信息，请参阅[DecodeAuthorizationMessage](https://docs.aws.amazon.com/STS/latest/APIReference/API_DecodeAuthorizationMessage.html)《*AWS Security Token Service API 参考*》和《*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 policy 来限制您账户中的用户有权访问的调用和资源。然后，您可以将这些策略附加到用户。

在将策略附加到一个用户或一组用户时，它会授权或拒绝用户使用指定资源执行指定任务。有关更多信息，请参阅 *IAM 用户指南*中的[权限与策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/PermissionsAndPolicies.html)。有关如何管理和创建自定义 IAM policy 的说明，请参阅[管理 IAM policy](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 Reference》**中的 [RegisterJobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html)。在此示例中，只有当 POSIX 用户设置为 `nobody` 时，才能注册作业定义。特权标志设置为 `false`。最后，在 Amazon ECR 存储库中将映像设置为 `myImage`。

**重要**  
Docker 将 `user` 参数解析为该用户在容器映像中的 `uid`。在大多数情况下，可以在容器映像中的 `/etc/passwd` 文件中找到它。可以通过在作业定义和任何关联的 IAM policy 中使用直接 `uid` 值来避免此名称解析。 AWS Batch API 和 `batch:User` IAM 条件键都支持数字值。

第三个语句限制用户仅将特定角色传递给作业定义。

------
#### [ 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`拒绝访问 [https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html)API 操作*string2*。” AWS Batch 评估每个容器上的条件键。当作业跨越多个容器（例如多节点平行作业）时，容器可能会有不同的配置。如果在一个语句中评估多个条件键，则使用 `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* “” 时，以下策略拒绝访问 [https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html)API 操作*string2*。” `batch:LogDriver` 当作业跨越多个容器（例如多节点 parallel 作业）时，容器可能会有不同的配置。如果在一个语句中评估多个条件键，则使用 `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"
        }
      }
    }
  ]
}
```

# 资源： AWS Batch 托管策略
<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)中的。

# AWS Batch IAM 执行角色
<a name="execution-IAM-role"></a>

执行角色授予 Amazon ECS 容器和 AWS Fargate 代理代表您 AWS 进行 API 调用的权限。

**注意**  
该执行角色由 Amazon ECS 容器代理版本 1.16.0 和更高版本支持。

IAM 执行角色是必需的，具体取决于任务的要求。您可以将多个执行角色用于与您的账户关联的服务不同目的。

**注意**  
有关 Amazon ECS 实例角色的信息，请参阅 [Amazon ECS 实例角色](instance_IAM_role.md)。有关服务角色的更多信息，请参阅[如何 AWS Batch 与 IAM 配合使用](security_iam_service-with-iam.md)。

Amazon ECS 提供 `AmazonECSTaskExecutionRolePolicy` 托管策略。该策略包含上述常见使用案例所需的权限。对于特殊使用案例，可能需要向您的执行角色添加内联策略，这些策略概述如下。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecr:GetAuthorizationToken",
        "ecr:BatchCheckLayerAvailability",
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "*"
    }
  ]
}
```

------

# API 操作支持的资源级权限 AWS Batch
<a name="batch-supported-iam-actions-resources"></a>

“*资源级权限*” 一词是指能够指定允许用户对其执行操作的资源。 AWS Batch 部分支持资源级权限。对于某些 AWS Batch 操作，您可以根据必须满足的条件来控制何时允许用户使用这些操作。您还可以根据允许用户使用的特定资源进行控制。例如，您可以向用户授予提交作业的权限，但仅授予特定作业队列的权限，并且仅具有特定的作业定义。

有关 B AWS atch 定义的操作和资源类型（包括每种资源类型的格式）的详细信息，请参阅《*服务授权参考*》[AWS Batch](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsbatch.html)中的操作、资源和条件密钥。 ARNs 

# 教程：创建 IAM 执行角色
<a name="create-execution-role"></a>

如果您的账户尚未具有 IAM 执行角色，请使用以下步骤创建角色。

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**。

1. 选择**创建角色**。

1. 对于 **可信实体类型**，选择** AWS 服务**。

1. 对于**服务或使用案例**，请选择 **Elastic Container Service**。然后再次选择 **Elastic Container Service 任务**。

1. 选择**下一步**。

1. 要查看**权限策略**，请搜索 A **mazon ECSTask ExecutionRolePolicy**。

1. 选中 **Amazon ECSTask ExecutionRolePolicy** 政策左侧的复选框，然后选择 “**下一步**”。

1. 对于**角色名称**，输入 `ecsTaskExecutionRole`，然后选择**创建角色**。

# 教程：检查 IAM 执行角色
<a name="check-execution-role"></a>

使用以下过程检查并确定您的账户是否已拥有 IAM 执行角色并且已附加托管 IAM 策略（如果需要）。<a name="procedure_check_execution_role"></a>

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**。

1. 在角色列表中搜索 `ecsTaskExecutionRole`。如果找不到角色，请参阅[教程：创建 IAM 执行角色](create-execution-role.md)。如果找到该角色，请选择角色以查看附加的策略。

1. 在 “**权限**” 选项卡上，验证 **Amazon ECSTask ExecutionRolePolicy** 托管策略是否已附加到该角色。如果附加该策略，则将正确配置 执行角色。否则，请执行以下子步骤来附加策略。

   1. 选择**添加权限**，然后选择**附加策略**。

   1. 搜索**亚马逊ECSTaskExecutionRolePolicy**。

   1. 选中 **Amazon ECSTask ExecutionRolePolicy** 政策左侧的复选框并选择**附加政策**。

1. 选择**信任关系**。

1. 验证信任关系是否包含以下策略。如果信任关系符合以下策略，则该角色的配置正确。如果信任关系不匹配，请选择**编辑信任策略**，输入以下策略，然后选择**更新策略**。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": "ecs-tasks.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

# 将服务相关角色用于 AWS Batch
<a name="using-service-linked-roles"></a>

AWS Batch 使用 AWS Identity and Access Management (IAM) [服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)。服务相关角色是一种与之直接关联的 IAM 角色的独特类型。 AWS Batch服务相关角色由服务预定义 AWS Batch ，包括该服务代表您调用其他 AWS 服务所需的所有权限。

AWS Batch 使用两个不同的服务相关角色：
+ [AWSServiceRoleForBatch](using-service-linked-roles-batch-general.md)-用于包括计算环境在内的 AWS Batch 操作。
+ [AWSServiceRoleForAWSBatchWithSagemaker](using-service-linked-roles-batch-sagemaker.md)-用于 SageMaker AI 工作负载管理和队列。

**Topics**
+ [将角色用于 AWS Batch](using-service-linked-roles-batch-general.md)
+ [在 SageMaker AI 中 AWS Batch 使用角色](using-service-linked-roles-batch-sagemaker.md)

# 将角色用于 AWS Batch
<a name="using-service-linked-roles-batch-general"></a>

AWS Batch 使用 AWS Identity and Access Management (IAM) [服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)。服务相关角色是一种与之直接关联的 IAM 角色的独特类型。 AWS Batch服务相关角色由服务预定义 AWS Batch ，包括该服务代表您调用其他 AWS 服务所需的所有权限。

服务相关角色使设置变得 AWS Batch 更加容易，因为您不必手动添加必要的权限。 AWS Batch 定义其服务相关角色的权限，除非另有定义，否则 AWS Batch 只能担任其角色。定义的权限包括信任策略和权限策略，而且权限策略不能附加到任何其他 IAM 实体。

**注意**  
执行以下任一操作为 AWS Batch 计算环境指定服务角色。  
对服务角色使用空字符串。这样就可以 AWS Batch 创建服务角色了。
采用以下格式指定服务角色：`arn:aws:iam::account_number:role/aws-service-role/batch.amazonaws.com/AWSServiceRoleForBatch`。
有关更多信息，请参阅[角色名称或 ARN 不正确](invalid_compute_environment.md#invalid_service_role_arn)《 AWS Batch 用户指南》。

只有在首先删除相关资源后，您才能删除服务关联角色。这样可以保护您的 AWS Batch 资源，因为您不会无意中删除访问资源的权限。

有关支持服务相关角色的其他服务的信息，请参阅与 [IAM 配合使用的AWS 服务，](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)并在**服务相关角色**列中查找标有 “**是**” 的服务。选择**是**和链接，查看该服务的服务关联角色文档。

## 的服务相关角色权限 AWS Batch
<a name="service-linked-role-permissions-batch-general"></a>

AWS Batch 使用名为的服务相关角色 **AWSServiceRoleForBatch**— AWS Batch 允许代表您创建和管理 AWS 资源。

 AWSServiceRoleForBatch 服务相关角色信任以下服务来代入该角色：
+ `batch.amazonaws.com`

名为的角色权限策略[BatchServiceRolePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-BatchServiceRolePolicy) AWS Batch 允许对指定资源完成以下操作：
+ `autoscaling`— AWS Batch 允许创建和管理 Amazon EC2 Auto Scaling 资源。 AWS Batch 为大多数计算环境创建和管理 Amazon EC2 Auto Scaling 组。
+ `ec2`— AWS Batch 允许控制 Amazon EC2 实例的生命周期以及创建和管理启动模板和标签。 AWS Batch 为某些 EC2 竞价计算环境创建和管理 EC2 竞价型队列请求。
+ `ecs`- AWS Batch 允许创建和管理 Amazon ECS 集群、任务定义和任务执行任务。
+ `eks`- AWS Batch 允许描述用于验证的 Amazon EKS 集群资源。
+ `iam`-允许 AWS Batch 验证所有者提供的角色并将其传递给 Amazon EC2、Amazon EC2 Auto Scaling 和 Amazon ECS。
+ `logs`— AWS Batch 允许创建和管理 AWS Batch 作业的日志组和日志流。

您必须配置使用户、组或角色能够创建、编辑或删除服务相关角色的权限。有关更多信息，请参阅*《IAM 用户指南》*中的[服务相关角色权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## 为创建服务相关角色 AWS Batch
<a name="create-service-linked-role-batch-general"></a>

您无需手动创建服务关联角色。当您在 AWS 管理控制台、或 AWS API 中创建计算环境时， AWS Batch 会为您创建服务相关角色。 AWS CLI

**重要**  
如果您在其他使用此角色支持的功能的服务中完成某个操作，此服务关联角色可以出现在您的账户中。如果您在 2021 年 3 月 10 日 AWS Batch 服务开始支持服务相关角色之前使用该服务，则在您的账户中 AWS Batch 创建了该 AWSServiceRoleForBatch 角色。要了解更多信息，请参阅 “[我的” 中出现了一个新角色 AWS 账户](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)。

如果您删除该服务关联角色，然后需要再次创建，您可以使用相同流程在账户中重新创建此角色。创建计算环境时， AWS Batch 会再次为您创建服务相关角色。

## 编辑的服务相关角色 AWS Batch
<a name="edit-service-linked-role-batch-general"></a>

AWS Batch 不允许您编辑 AWSServiceRoleForBatch 服务相关角色。创建服务关联角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 IAM 编辑角色描述。有关更多信息，请参阅《IAM 用户指南》**中的[编辑服务关联角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

**允许 IAM 实体编辑 AWSServiceRoleForBatch 服务相关角色的描述**

向该权限策略添加以下声明。这允许 IAM 实体编辑服务相关角色的描述。

```
{
    "Effect": "Allow",
    "Action": [
        "iam:UpdateRoleDescription"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/batch.amazonaws.com/AWSServiceRoleForBatch",
    "Condition": {"StringLike": {"iam:AWSServiceName": "batch.amazonaws.com"}}
}
```

## 删除的服务相关角色 AWS Batch
<a name="delete-service-linked-role-batch-general"></a>

如果您不再需要使用某个需要服务相关角色的功能或服务，我们建议您删除该角色。这样您就没有未被主动监控或维护的未使用实体。但是，您必须先清除您的服务相关角色，然后才能手动删除它。

**允许 IAM 实体删除 AWSServiceRoleForBatch 服务相关角色**

向该权限策略添加以下声明。这允许 IAM 实体删除服务相关角色。

```
{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/batch.amazonaws.com/AWSServiceRoleForBatch",
    "Condition": {"StringLike": {"iam:AWSServiceName": "batch.amazonaws.com"}}
}
```

### 清除服务相关角色
<a name="service-linked-role-review-before-delete-batch-general"></a>

在使用 IAM 删除服务相关角色之前，必须先确认该角色没有活动会话，然后删除单个分区中所有 AWS 区域中使用该角色的所有 AWS Batch 计算环境。

**检查服务相关角色是否有活动会话**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**，然后选择 AWSServiceRoleForBatch 名称（不是复选框）。

1. 在 **Summary** 页面上，选择 **Access Advisor**，查看服务相关角色的近期活动。
**注意**  
如果您不知道 AWS Batch 是否在使用该 AWSServiceRoleForBatch 角色，可以尝试删除该角色。如果服务正在使用该角色，则该角色将无法删除。您可以查看正在使用该角色的区域。如果该角色已被使用，则您必须等待会话结束，然后才能删除该角色。无法撤销服务相关角色对会话的权限。

**移除 AWSServiceRoleForBatch 服务相关角色使用的 AWS Batch 资源**

必须先删除所有 AWS 区域中使用该 AWSServiceRoleForBatch 角色的所有 AWS Batch 计算环境，然后才能删除该 AWSServiceRoleForBatch 角色。

1. 打开 AWS Batch 控制台，网址为[https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)。

1. 从导航栏中，选择要使用的区域。

1. 在导航窗格中，选择**计算环境**。

1. 选择计算环境。

1. 选择 **Disable ** (禁用)。等待**状态**变为**已禁用**。

1. 选择计算环境。

1. 选择**删除**。通过选择**删除计算环境**来确认您要删除计算环境。

1. 对所有区域中使用服务相关角色的所有计算环境重复步骤 1—7。

### 在 IAM 中删除服务相关角色 (控制台)
<a name="delete-service-linked-role-iam-console"></a>

您可以使用 IAM 控制台删除服务相关角色。

**删除服务相关角色 (控制台)**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在 IAM 控制台的导航窗格中，选择**角色**。然后选中旁边的复选框 AWSServiceRoleForBatch，而不是名称或行本身。

1. 选择**删除角色**。

1. 在确认对话框中，查看上次访问服务数据，该数据显示每个选定角色上次访问 AWS 服务的时间。这样可帮助您确认角色当前是否处于活动状态。如果要继续，请选择 **Yes, Delete ** 以提交服务相关角色进行删除。

1. 监视 IAM 控制台通知，以监控服务相关角色的删除进度。由于 IAM 服务相关角色删除是异步的，因此，在您提交角色进行删除后，删除任务可能成功，也可能失败。
   + 如果任务成功，则角色将从列表中删除，并会在页面顶部显示成功通知。
   + 如果任务失败，您可以从通知中选择 **View details** 或 **View Resources** 以了解删除失败的原因。如果因为角色正在使用服务的资源而使删除失败，则通知包含一个资源列表 (如果服务返回该信息)。然后您可以[清除资源](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-review-before-delete)并再次提交删除。
**注意**  
您可能需要多次重复执行此过程，这取决于服务返回的信息。例如，您的服务相关角色可能使用六个资源，而您的服务可能返回有关其中五个资源的信息。如果您清除这五个资源并再次提交该角色以进行删除，则删除会失败，并且服务会报告一个剩余资源。服务可能会返回所有资源、其中一些资源，也可能不报告任何资源。
   + 如果任务失败，并且通知不包含资源列表，则服务可能不会返回该信息。要了解如何清除该服务的资源，请参阅 [使用 IAM 的AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。在表中查找您的服务，然后选择 **Yes** 链接以查看该服务的服务相关角色文档。

### 在 IAM 中删除服务相关角色 (AWS CLI)
<a name="delete-service-linked-role-iam-cli"></a>

您可以使用中的 IAM 命令 AWS Command Line Interface 删除服务相关角色。

**删除服务相关角色（CLI）**

1. 如果服务相关角色正被使用或具有关联的资源，则无法删除它，因此您必须提交删除请求。如果不满足这些条件，该请求可能会被拒绝。您必须从响应中捕获 `deletion-task-id` 以检查删除任务的状态。键入以下命令以提交服务相关角色的删除请求：

   ```
   $ aws iam delete-service-linked-role --role-name AWSServiceRoleForBatch
   ```

1. 使用以下命令以检查删除任务的状态：

   ```
   $ aws iam get-service-linked-role-deletion-status --deletion-task-id deletion-task-id
   ```

   删除任务的状态可能是 `NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED` 或 `FAILED`。如果删除失败，则调用会返回失败的原因，以便您进行问题排查。如果因为角色正在使用服务的资源而使删除失败，则通知包含一个资源列表 (如果服务返回该信息)。然后您可以[清除资源](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-review-before-delete)并再次提交删除。
**注意**  
您可能需要多次重复执行此过程，这取决于服务返回的信息。例如，您的服务相关角色可能使用六个资源，而您的服务可能返回有关其中五个资源的信息。如果您清除这五个资源并再次提交该角色以进行删除，则删除会失败，并且服务会报告一个剩余资源。服务可能会返回所有资源，其中一些资源。或者，它可能不会报告任何资源。要了解如何为不报告任何资源的服务清除资源，请参阅 [AWS 使用 IAM 的服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。在表中查找您的服务，然后选择 **Yes** 链接以查看该服务的服务相关角色文档。

### 在 IAM 中删除服务相关角色 (AWS API)
<a name="delete-service-linked-role-iam-api"></a>

您可以使用 IAM API 删除服务相关角色。

**删除服务相关角色（API）**

1. 要提交服务相关角色的删除请求，请调用 [DeleteServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceLinkedRole.html)。在请求中，指定 AWSServiceRoleForBatch 角色名称。

   如果服务相关角色正被使用或具有关联的资源，则无法删除它，因此您必须提交删除请求。如果不满足这些条件，该请求可能会被拒绝。您必须从响应中捕获 `DeletionTaskId` 以检查删除任务的状态。

1. 要检查删除的状态，请调用 [GetServiceLinkedRoleDeletionStatus](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLinkedRoleDeletionStatus.html)。在请求中，指定 `DeletionTaskId`。

   删除任务的状态可能是 `NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED` 或 `FAILED`。如果删除失败，则调用会返回失败的原因，以便您进行问题排查。如果因为角色正在使用服务的资源而使删除失败，则通知包含一个资源列表 (如果服务返回该信息)。然后您可以[清除资源](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-review-before-delete)并再次提交删除。
**注意**  
您可能需要多次重复执行此过程，这取决于服务返回的信息。例如，您的服务相关角色可能使用六个资源，而您的服务可能返回有关其中五个资源的信息。如果您清除这五个资源并再次提交该角色以进行删除，则删除会失败，并且服务会报告一个剩余资源。服务可能会返回所有资源、其中一些资源，也可能不报告任何资源。要了解如何为不报告任何资源的服务清除资源，请参阅 [使用 IAM 的AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。在表中查找您的服务，然后选择 **Yes** 链接以查看该服务的服务相关角色文档。

## AWS Batch 服务相关角色支持的区域
<a name="slr-regions-batch-general"></a>

AWS Batch 支持在提供服务的所有地区使用服务相关角色。有关更多信息，请参阅 [AWS Batch 端点](https://docs.aws.amazon.com/general/latest/gr/batch.html#batch_region)。

# 在 SageMaker AI 中 AWS Batch 使用角色
<a name="using-service-linked-roles-batch-sagemaker"></a>

AWS Batch 使用 AWS Identity and Access Management (IAM) [服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)。服务相关角色是一种与之直接关联的 IAM 角色的独特类型。 AWS Batch服务相关角色由服务预定义 AWS Batch ，包括该服务代表您调用其他 AWS 服务所需的所有权限。

服务相关角色使设置变得 AWS Batch 更加容易，因为您不必手动添加必要的权限。 AWS Batch 定义其服务相关角色的权限，除非另有定义，否则 AWS Batch 只能担任其角色。定义的权限包括信任策略和权限策略，以及不能附加到任何其他 IAM 实体的权限策略。

只有在首先删除相关资源后，您才能删除服务关联角色。这样可以保护您的 AWS Batch 资源，因为您不会无意中删除访问资源的权限。

有关支持服务相关角色的其他服务的信息，请参阅与 [IAM 配合使用的AWS 服务，](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)并在**服务相关角色**列中查找标有 “**是**” 的服务。选择**是**和链接，查看该服务的服务关联角色文档。

## 的服务相关角色权限 AWS Batch
<a name="service-linked-role-permissions-batch-sagemaker"></a>

AWS Batch 使用名为 **AWSServiceRoleForAWSBatchWithSagemaker**— AWS Batch 允许代表您排队和管理 SageMaker 培训作业的服务相关角色。

 AWSServiceRoleForAWSBatchWithSagemaker 服务相关角色信任以下服务来代入该角色：
+ `sagemaker-queuing.batch.amazonaws.com`

角色权限策略 AWS Batch 允许对指定资源完成以下操作：
+ `sagemaker`— AWS Batch 允许管理 SageMaker 训练作业、转换作业和其他 SageMaker AI 资源。
+ `iam:PassRole`— AWS Batch 允许将客户定义的执行角色传递给 SageMaker AI 以执行作业。资源限制允许将角色传递给 SageMaker AI 服务。

您必须配置使用户、组或角色能够创建、编辑或删除服务相关角色的权限。有关更多信息，请参阅*《IAM 用户指南》*中的[服务相关角色权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## 为创建服务相关角色 AWS Batch
<a name="create-service-linked-role-batch-sagemaker"></a>

您无需手动创建服务关联角色。当您使用`CreateServiceEnvironment` AWS 管理控制台、或 AWS API 创建服务环境时， AWS Batch 会为您创建服务相关角色。 AWS CLI

如果您删除该服务关联角色，然后需要再次创建，您可以使用相同流程在账户中重新创建此角色。使用创建服务环境时`CreateServiceEnvironment`， 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)[AWSBatchServiceRolePolicyForSageMaker](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSBatchServiceRolePolicyForSageMaker.html)中的。

## 编辑的服务相关角色 AWS Batch
<a name="edit-service-linked-role-batch-sagemaker"></a>

AWS Batch 不允许您编辑 AWSServiceRoleForAWSBatchWithSagemaker 服务相关角色。创建服务关联角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 IAM 编辑角色描述。有关更多信息，请参阅《IAM 用户指南》**中的[编辑服务关联角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

## 删除的服务相关角色 AWS Batch
<a name="delete-service-linked-role-batch-sagemaker"></a>

如果您不再需要使用某个需要服务相关角色的功能或服务，我们建议您删除该角色。这样您就没有未被主动监控或维护的未使用实体。但是，您必须先清除您的服务相关角色，然后才能手动删除它。

### 清除服务相关角色
<a name="service-linked-role-review-before-delete-batch-sagemaker"></a>

在使用 IAM 删除服务相关角色之前，必须先确认该角色没有活动会话，然后删除单个分区中所有 AWS 区域中使用该角色的所有服务环境。

**检查服务相关角色是否有活动会话**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**，然后选择 AWSServiceRoleForAWSBatchWithSagemaker 名称（不是复选框）。

1. 在 **Summary** 页面上，选择 **Access Advisor**，查看服务相关角色的近期活动。
**注意**  
如果您不知道 AWS Batch 是否在使用该 AWSServiceRoleForAWSBatchWithSagemaker 角色，可以尝试删除该角色。如果服务正在使用该角色，则该角色将无法删除。您可以查看正在使用该角色的区域。如果该角色已被使用，则您必须等待会话结束，然后才能删除该角色。无法撤销服务相关角色对会话的权限。

**移除 AWSServiceRoleForAWSBatchWithSagemaker 服务相关角色使用的 AWS Batch 资源**

必须将所有作业队列与所有服务环境断开关联，然后必须先删除所有 AWS 区域中使用该 AWSServiceRoleForAWSBatchWithSagemaker 角色的所有服务环境，然后才能删除该 AWSServiceRoleForAWSBatchWithSagemaker 角色。

1. 打开 AWS Batch 控制台，网址为[https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)。

1. 从导航栏中，选择要使用的区域。

1. 在导航窗格中，选择**环境**，然后选择**服务环境**。

1. 选择所有**服务环境**。

1. 选择 **Disable ** (禁用)。等待**状态**变为**已禁用**。

1. 选择该服务环境。

1. 选择**删除**。选择**删除服务环境**，以确认您确实要删除该服务环境。

1. 在所有区域中对使用该服务相关角色的所有服务环境重复第 1–7 步。

### 在 IAM 中删除服务相关角色 (控制台)
<a name="delete-service-linked-role-iam-console-batch-sagemaker"></a>

您可以使用 IAM 控制台删除服务相关角色。

**删除服务相关角色 (控制台)**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在 IAM 控制台的导航窗格中，选择**角色**。然后选中旁边的复选框 AWSService RoleFor AWSBatchWithSagemaker，而不是名称或行本身。

1. 选择**删除角色**。

1. 在确认对话框中，查看上次访问服务数据，该数据显示每个选定角色上次访问 AWS 服务的时间。这样可帮助您确认角色当前是否处于活动状态。如果要继续，请选择 **Yes, Delete ** 以提交服务相关角色进行删除。

1. 监视 IAM 控制台通知，以监控服务相关角色的删除进度。由于 IAM 服务相关角色删除是异步的，因此，在您提交角色进行删除后，删除任务可能成功，也可能失败。
   + 如果任务成功，则角色将从列表中删除，并会在页面顶部显示成功通知。
   + 如果任务失败，您可以从通知中选择 **View details** 或 **View Resources** 以了解删除失败的原因。如果因为角色正在使用服务的资源而使删除失败，则通知包含一个资源列表 (如果服务返回该信息)。然后您可以[清除资源](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-review-before-delete)并再次提交删除。
**注意**  
您可能需要多次重复执行此过程，这取决于服务返回的信息。例如，您的服务相关角色可能使用六个资源，而您的服务可能返回有关其中五个资源的信息。如果您清除这五个资源并再次提交该角色以进行删除，则删除会失败，并且服务会报告一个剩余资源。服务可能会返回所有资源、其中一些资源，也可能不报告任何资源。
   + 如果任务失败，并且通知不包含资源列表，则服务可能不会返回该信息。要了解如何清除该服务的资源，请参阅 [使用 IAM 的AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。在表中查找您的服务，然后选择 **Yes** 链接以查看该服务的服务相关角色文档。

### 在 IAM 中删除服务相关角色 (AWS CLI)
<a name="delete-service-linked-role-iam-cli-batch-sagemaker"></a>

您可以使用中的 IAM 命令 AWS Command Line Interface 删除服务相关角色。

**删除服务相关角色（CLI）**

1. 如果服务相关角色正被使用或具有关联的资源，则无法删除它，因此您必须提交删除请求。如果不满足这些条件，该请求可能会被拒绝。您必须从响应中捕获 `deletion-task-id` 以检查删除任务的状态。键入以下命令以提交服务相关角色的删除请求：

   ```
   $ aws iam delete-service-linked-role --role-name AWSServiceRoleForAWSBatchWithSagemaker
   ```

1. 使用以下命令以检查删除任务的状态：

   ```
   $ aws iam get-service-linked-role-deletion-status --deletion-task-id deletion-task-id
   ```

   删除任务的状态可能是 `NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED` 或 `FAILED`。如果删除失败，则调用会返回失败的原因，以便您进行问题排查。如果因为角色正在使用服务的资源而使删除失败，则通知包含一个资源列表 (如果服务返回该信息)。然后您可以[清除资源](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-review-before-delete)并再次提交删除。
**注意**  
您可能需要多次重复执行此过程，这取决于服务返回的信息。例如，您的服务相关角色可能使用六个资源，而您的服务可能返回有关其中五个资源的信息。如果您清除这五个资源并再次提交该角色以进行删除，则删除会失败，并且服务会报告一个剩余资源。服务可能会返回所有资源，其中一些资源。或者，它可能不会报告任何资源。要了解如何为不报告任何资源的服务清除资源，请参阅 [AWS 使用 IAM 的服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。在表中查找您的服务，然后选择 **Yes** 链接以查看该服务的服务相关角色文档。

### 在 IAM 中删除服务相关角色 (AWS API)
<a name="delete-service-linked-role-iam-api-batch-sagemaker"></a>

您可以使用 IAM API 删除服务相关角色。

**删除服务相关角色（API）**

1. 要提交服务相关角色的删除请求，请调用 [DeleteServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceLinkedRole.html)。在请求中，指定 AWSServiceRoleForAWSBatchWithSagemaker 角色名称。

   如果服务相关角色正被使用或具有关联的资源，则无法删除它，因此您必须提交删除请求。如果不满足这些条件，该请求可能会被拒绝。您必须从响应中捕获 `DeletionTaskId` 以检查删除任务的状态。

1. 要检查删除的状态，请调用 [GetServiceLinkedRoleDeletionStatus](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLinkedRoleDeletionStatus.html)。在请求中，指定 `DeletionTaskId`。

   删除任务的状态可能是 `NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED` 或 `FAILED`。如果删除失败，则调用会返回失败的原因，以便您进行问题排查。如果因为角色正在使用服务的资源而使删除失败，则通知包含一个资源列表 (如果服务返回该信息)。然后您可以[清除资源](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-review-before-delete)并再次提交删除。
**注意**  
您可能需要多次重复执行此过程，这取决于服务返回的信息。例如，您的服务相关角色可能使用六个资源，而您的服务可能返回有关其中五个资源的信息。如果您清除这五个资源并再次提交该角色以进行删除，则删除会失败，并且服务会报告一个剩余资源。服务可能会返回所有资源、其中一些资源，也可能不报告任何资源。要了解如何为不报告任何资源的服务清除资源，请参阅 [使用 IAM 的AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。在表中查找您的服务，然后选择 **Yes** 链接以查看该服务的服务相关角色文档。

## AWS Batch 服务相关角色支持的区域
<a name="slr-regions-batch-sagemaker"></a>

AWS Batch 支持在提供服务的所有地区使用服务相关角色。有关更多信息，请参阅 [AWS Batch 端点](https://docs.aws.amazon.com/general/latest/gr/batch.html#batch_region)。

# Amazon ECS 实例角色
<a name="instance_IAM_role"></a>

AWS Batch 计算环境中填充了 Amazon ECS 容器实例。它们在本地运行 Amazon ECS 容器代理。Amazon ECS 容器代理代表您调用各种 AWS API 操作。因此，运行该代理的容器实例需要一个 IAM policy 和角色，以便该服务了解该代理属于您。您必须创建一个 IAM 角色和一个实例配置文件，以便容器实例在启动时使用。否则，您无法创建计算环境并在其中启动容器实例。此要求适用于在使用或未使用由 Amazon 提供的经 Amazon ECS 优化的 AMI 的情况下启动的容器实例。有关更多信息，请参阅《Amazon Elastic Container Service 开发人员指南》中的 [Amazon ECS 实例角色](#instance_IAM_role)**。

**Topics**
+ [检查您账户的 Amazon ECS 实例角色](batch-check-ecsinstancerole.md)

# 检查您账户的 Amazon ECS 实例角色
<a name="batch-check-ecsinstancerole"></a>

在控制台首次运行体验中将自动为您创建 Amazon ECS 实例角色和实例配置文件。但是，您可以按照以下步骤检查您的账户是否已有 Amazon ECS 实例角色和实例配置文件。以下步骤还介绍了如何附加托管 IAM policy。<a name="procedure_check_instance_role"></a>

**教程：在 IAM 控制台中检查 `ecsInstanceRole`**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**。

1. 在角色列表中搜索 `ecsInstanceRole`。如果该角色不存在，请使用以下步骤创建该角色。

   1. 选择**创建角色**。

   1. 对于 **Trusted entity type**（可信实体类型），选择 **AWS 服务**。

   1. 对于 **常用案例**，选择 **EC2**。

   1. 选择**下一步**。

   1. 要查看**权限策略**，请搜索 A **mazon EC2 ContainerServicefor EC2 角色**。

   1. 选中 **Amazon EC2 ContainerServicefor EC2 角色**旁边的复选框，然后选择**下一步**。

   1. 对于 **Role Name (角色名称)**，键入 `ecsInstanceRole`，然后选择 **Create Role (创建角色)**。
**注意**  
如果您使用 AWS 管理控制台 为 Amazon EC2 创建角色，则控制台会创建与该角色同名的实例配置文件。

或者，您可以使用创建 `ecsInstanceRole` IAM 角色。 AWS CLI 以下示例创建了一个带有信任策略和 AWS 托管策略的 IAM 角色。<a name="create-iam-role-cli"></a>

**教程：创建 IAM 角色和实例配置文件（AWS CLI）**

1. 创建以下信任策略并将其保存在名为 `ecsInstanceRole-role-trust-policy.json` 的文本文件中。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": { "Service": "ec2.amazonaws.com"},
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. 使用 [create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) 命令创建 `ecsInstanceRole` 角色。在 `assume-role-policy-document` 参数中指定信任策略文件的位置。

   ```
   $ aws iam create-role \
       --role-name ecsInstanceRole \
       --assume-role-policy-document file://ecsInstanceRole-role-trust-policy.json
   ```

1. 使用[create-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/create-instance-profile.html)命令创建名为的实例配置文件`ecsInstanceRole`。
**注意**  
您需要在和 AWS API 中创建角色和实例配置文件作为单独的 AWS CLI 操作。

   ```
   $ aws iam create-instance-profile --instance-profile-name ecsInstanceRole
   ```

   以下为响应示例。

   ```
   {
       "InstanceProfile": {
           "Path": "/",
           "InstanceProfileName": "ecsInstanceRole",
           "InstanceProfileId": "AIPAT46P5RDITREXAMPLE",
           "Arn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceRole",
           "CreateDate": "2022-06-30T23:53:34.093Z",
           "Roles": [],    }
   }
   ```

1. 使用 [ add-role-to-instance-profil](https://docs.aws.amazon.com/cli/latest/reference/iam/add-role-to-instance-profile.html) e 命令将`ecsInstanceRole`角色添加到`ecsInstanceRole`实例配置文件中。

   ```
   aws iam add-role-to-instance-profile \
       --role-name ecsInstanceRole --instance-profile-name ecsInstanceRole
   ```

1. 使用[attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html)命令将`AmazonEC2ContainerServiceforEC2Role` AWS 托管策略附加到`ecsInstanceRole`角色。

   ```
   $ aws iam attach-role-policy \
       --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role \
       --role-name ecsInstanceRole
   ```

# Amazon EC2 竞价型实例集角色
<a name="spot_fleet_IAM_role"></a>

如果创建一个使用 Amazon EC2 竞价型实例集实例的托管计算环境，则必须创建`AmazonEC2SpotFleetTaggingRole`策略。该政策授权竞价型实例集代表您启动、标记和终止实例。在竞价型实例集请求中指定该角色。您还必须拥有 Amazon EC2 **AWSServiceRoleForEC2竞价**AWSServiceRoleForEC2SpotFleet**型和竞**价型队列的竞价和服务相关角色。请按照以下说明以创建所有这些角色。有关更多信息，请参阅 *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**
+ [在中创建 Amazon EC2 竞价队列角色 AWS 管理控制台](spot-fleet-roles-console.md)
+ [使用创建 Amazon EC2 竞价队列角色 AWS CLI](spot-fleet-roles-cli.md)

# 在中创建 Amazon EC2 竞价队列角色 AWS 管理控制台
<a name="spot-fleet-roles-console"></a>

**要创建适用于 Amazon EC2 竞价型实例集的`AmazonEC2SpotFleetTaggingRole` IAM 服务相关角色**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在**访问管理**下，请选择**角色**。

1. 对于**角色**，选择**创建角色**。

1. 从**为可信实体类型选择****可信实体**中，选择**AWS 服务**。

1. **对于其他用例 AWS 服务**，请选择 **EC2，然后选择 EC** **2-Spot 队列标记**。

1. 选择**下一步**。

1. 在**策略名称**的**权限策略**中，验证`AmazonEC2SpotFleetTaggingRole`。

1. 选择**下一步**。

1. 对于**名称，请查看并创建**：

   1. 对于**命名标签**，输入用于标识角色的名称。

   1. 在**描述**中，输入策略的简短解释。

   1. （可选）对于**步骤 1：选择可信实体**，选择**编辑**以修改代码。

   1. （可选）对于**步骤 2：添加权限**，选择**编辑**以修改代码。

   1. （可选）对于**添加标签**，选择**添加标签**以向资源添加标签。

   1. 选择**创建角色**。

**注意**  
过去，Amazon EC2 竞价型实例集角色有两个托管策略。  
**Amazon EC2 SpotFleetRole**：这是 Spot 队列角色的原始托管策略。但是，我们不再建议您将其与一起使用 AWS Batch。此策略不支持计算环境中的竞价型实例标记，这是使用`AWSServiceRoleForBatch`服务相关角色所必需的。如果以前是使用此策略创建的竞价型实例集角色，请将新的推荐策略应用于该角色。有关更多信息，请参阅 [创建时未标记的竞价型实例](spot-instance-no-tag.md)。
**亚马逊 EC2 SpotFleetTaggingRole**：此角色提供标记 Amazon EC2 竞价型实例的所有必要权限。使用此角色允许在您的 AWS Batch 计算环境上标记 Spot 实例。

# 使用创建 Amazon EC2 竞价队列角色 AWS CLI
<a name="spot-fleet-roles-cli"></a>

**为您的 Spot 队列计算环境创建 EC2 SpotFleetTaggingRole A **mazon** IAM 角色**

1. 使用 AWS CLI运行以下命令。

   ```
   $ aws iam create-role --role-name AmazonEC2SpotFleetTaggingRole \
        --assume-role-policy-document '{
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": "spotfleet.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }'
   ```

1. 要将**亚马逊EC2SpotFleetTaggingRole**托管 IAM 策略附加到您的**亚马逊EC2SpotFleetTaggingRole**角色，请使用运行以下命令 AWS CLI。

   ```
   $ aws iam attach-role-policy \
     --policy-arn \
       arn:aws:iam::aws:policy/service-role/AmazonEC2SpotFleetTaggingRole \
     --role-name \
       AmazonEC2SpotFleetTaggingRole
   ```

**创建适用于 Amazon EC2 Spot 的 `AWSServiceRoleForEC2Spot` IAM 服务相关角色**
**注意**  
如果`AWSServiceRoleForEC2Spot` IAM 服务相关角色已存在，则会出现类似于以下内容的错误消息。  

```
An error occurred (InvalidInput) when calling the CreateServiceLinkedRole operation:
Service role name AWSServiceRoleForEC2Spot has been taken in this account, please try a different suffix.
```
+ 使用 AWS CLI运行以下命令。

  ```
  $ aws iam create-service-linked-role --aws-service-name spot.amazonaws.com
  ```

**要创建适用于 Amazon EC2 竞价型实例集的`AWSServiceRoleForEC2SpotFleet` IAM 服务相关角色**
**注意**  
如果`AWSServiceRoleForEC2SpotFleet` IAM 服务相关角色已存在，则会出现类似于以下内容的错误消息。  

```
An error occurred (InvalidInput) when calling the CreateServiceLinkedRole operation:
Service role name AWSServiceRoleForEC2SpotFleet has been taken in this account, please try a different suffix.
```
+ 使用 AWS CLI运行以下命令。

  ```
  $ aws iam create-service-linked-role --aws-service-name spotfleet.amazonaws.com
  ```

# EventBridge IAM 角色
<a name="CWE_IAM_role"></a>

Amazon EventBridge 提供了描述 AWS 资源变化的近乎实时的系统事件流。 AWS Batch 可以将工作作为 EventBridge 目标。通过使用可快速设置的简单规则，可以匹配事件并提交 AWS Batch 任务以响应这些事件。在提交带有 EventBridge 规则和目标的 AWS Batch 作业之前， EventBridge 必须具有代表您运行 AWS Batch 作业的权限。

**注意**  
在 EventBridge 控制台中创建将 AWS Batch 队列指定为目标的规则时，可以创建此角色。有关示例演练的信息，请参阅[AWS Batch 作业作为 EventBridge 的目标](batch-cwe-target.md)。您可以使用 IAM 控制台手动创建 EventBridge 角色。有关说明，请参阅《IAM 用户指南》中的[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)。

您的 EventBridge IAM 角色的信任关系必须为`events.amazonaws.com`服务委托人提供担任该角色的能力。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "events.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

确保附加到您的 EventBridge IAM 角色的策略允许`batch:SubmitJob`访问您的资源。在以下示例中， AWS Batch 给出了提供这些权限的`AWSBatchServiceEventTargetRole`托管策略。

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

****  

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

------

# 创建虚拟私有云
<a name="create-public-private-vpc"></a>

计算环境中的计算资源需要外部网络访问权限以便与 AWS Batch 和 Amazon ECS 服务端点进行通信。但是，您可能有想要在私有子网中运行的作业。创建带有公有和私有子网的 VPC 可为您提供在公有子网或私有子网中运行作业的灵活性。



您可以使用 Amazon Virtual Private Cloud（亚马逊 VPC）将 AWS 资源启动到您定义的虚拟网络中。本主题提供了 Amazon VPC 向导的链接以及可供选择的选项列表。

## 创建 VPC
<a name="run-VPC-wizard"></a>

有关如何创建 Amazon VPC 的信息，请参阅 *《Amazon VPC 用户指南》* 中的 [仅创建 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#create-vpc-vpc-only) 并使用下表以确定要选择的选项。


| Option | 值 | 
| --- | --- | 
|  要创建的资源  | 仅限 VPC | 
| Name |  可以选择为您的 VPC 提供名称。  | 
| IPv4 CIDR 块 |  IPv4 CIDR 手动输入 CIDR 数据块大小必须在 /16 和 /28 之间。  | 
|  IPv6 CIDR 块  |  没有 IPv6 CIDR 块  | 
|  Tenancy  |  默认  | 

有关 Amazon VPC 的更多信息，请参阅 *Amazon VPC 用户指南*中的[什么是Amazon VPC？](https://docs.aws.amazon.com/vpc/latest/userguide/)。

## 后续步骤
<a name="vpc-next-steps"></a>

在创建 VPC 后，您应考虑以下后续步骤：
+ 如果您的公有和私有资源需要入站网络访问权限，则为这些资源创建安全组。有关更多信息，请参阅*《Amazon VPC 用户指南》*中的[使用安全组](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#working-with-security-groups)。
+ 创建 AWS Batch 托管计算环境，将计算资源启动到您的新 VPC 中。有关更多信息，请参阅 [创建计算环境](create-compute-environment.md)。如果您在 AWS Batch 控制台中使用计算环境创建向导，则可以指定刚刚创建的 VPC 以及要启动实例的公有或私有子网。
+ 创建映射到您的新计算环境的 AWS Batch 任务队列。有关更多信息，请参阅 [创建作业队列](create-job-queue.md)。
+ 创建要用于运行您的任务的任务定义。有关更多信息，请参阅 [创建单节点作业定义](create-job-definition.md)。
+ 将带有任务定义的任务提交到您的新的任务队列。此任务将落到您使用新 VPC 和子网创建的计算环境中。有关更多信息，请参阅 [教程：提交作业](submit_job.md)。

# 使用接口端点进行访问 AWS Batch
<a name="vpc-interface-endpoints"></a>

您可以使用 AWS PrivateLink 在您的 VPC 和之间创建私有连接 AWS Batch。您可以像在 VPC 中一样访问 AWS Batch ，而无需使用互联网网关、NAT 设备、VPN 连接或 Direct Connect 连接。VPC 中的实例不需要公有 IP 地址即可访问 AWS Batch。

您可以通过创建由 AWS PrivateLink提供支持的*接口端点*来建立此私有连接。我们将在您为接口端点启用的每个子网中创建一个端点网络接口。这些是请求者托管的网络接口，用作发往 AWS Batch的流量的入口点。

有关更多信息，请参阅 *AWS PrivateLink 指南* 中的 [接口 VPC 端点](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html)。

# 的注意事项 AWS Batch
<a name="vpc-endpoint-considerations"></a>

在为设置接口终端节点之前 AWS Batch，请查看*AWS PrivateLink 指南*中的[接口端点属性和限制](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#vpce-interface-limitations)。

AWS Batch 支持通过接口端点调用其所有 API 操作。

在为设置接口 VPC 终端节点之前 AWS Batch，请注意以下注意事项：
+ 使用 Fargate 资源启动类型的任务不需要 Amazon ECS 的接口 VPC 终端节点，但您可能需要以下几点中描述的 Amazon ECR、Secret CloudWatch s Manager 或 A AWS Batch mazon Logs 的接口 VPC 终端节点。
  + 要运行作业，您必须为 Amazon ECS 创建接口 VPC 端点。有关更多信息，请参阅 *Amazon Elastic Container Service 开发人员指南*中的[接口 VPC 端点 (AWS PrivateLink)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/vpc-endpoints.html)。
  + 要允许您的任务从 Amazon ECR 拉取私有映像，您必须为 Amazon ECR 创建接口 VPC 端点。有关更多信息，请参阅《Amazon Elastic Container Registry 用户指南》**中的[接口 VPC 端点（AWS PrivateLink）](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html)。
  + 要允许您的任务从 Secrets Manager 拉取敏感数据，您必须为 Secrets Manager 创建接口 VPC 端点。有关更多信息，请参阅 *AWS Secrets Manager 用户指南*中的[将 Secrets Manager 与 VPC 端点结合使用](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)。
  + 如果您的 VPC 没有 Internet 网关，并且您的任务使用`awslogs`日志驱动程序向日志发送日志信息，则必须为 CloudWatch 日志创建接口 VPC 终端节点。 CloudWatch 有关更多信息，请参阅 *Amazon CloudWatch CloudWatch 日志用户指南*[中的将日志与接口 VPC 终端节点配合使用](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch-logs-and-interface-VPC.html)。
+ 使用 EC2 资源的任务要求启动它们的容器实例运行 `1.25.1` 或更高版本的 Amazon ECS 容器代理。有关更多信息，请参阅*《Amazon Elastic Container Service 开发人员指南》* 中的 [Amazon ECS 容器代理配置](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-versions.html)。
+ VPC 端点当前不支持跨区域请求。确保在计划向 AWS Batch发出 API 调用的同一区域中创建端点。
+ VPC 端点仅通过 Amazon Route 53 支持 Amazon 提供的 DNS。如果您希望使用自己的 DNS，可以使用条件 DNS 转发。有关更多信息，请参阅 *Amazon VPC 用户指南*中的 [DHCP 选项集](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html)。
+ 附加到 VPC 端点的安全组必须允许端口 443 上来自 VPC 的私有子网的传入连接。
+ AWS Batch 不支持以下 VPC 接口终端节点 AWS 区域：
  + 亚太地区（大阪）(`ap-northeast-3`)
  + 亚太地区（雅加达）（`ap-southeast-3`）

# 为创建接口终端节点 AWS Batch
<a name="vpc-endpoint-create"></a>

您可以创建用于 AWS Batch 使用 Amazon VPC 控制台或 AWS Command Line Interface (AWS CLI) 的接口终端节点。有关更多信息，请参阅《AWS PrivateLink 指南》**中的[创建接口端点](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint)。

 AWS Batch 使用以下服务名称创建接口终端节点：
+ **com.amazonaws。** *region***.batch**
+ **com.amazonaws。** *region***.batch-fips（有关符合 FIPS** *标准的终端节点，请参阅终端节点*[和配额）AWS Batch](https://docs.aws.amazon.com/general/latest/gr/batch.html)

例如：

```
com.amazonaws.us-east-2.batch
```

```
com.amazonaws.us-east-2.batch-fips
```

在`aws-cn`分区中，格式不同：

```
cn.com.amazonaws.region.batch
```

例如：

```
cn.com.amazonaws.cn-northwest-1.batch
```

## AWS Batch 接口终端节点的私有 DNS 名称
<a name="vpc-endpoint-service-names"></a>

如果您为接口终端节点启用私有 DNS，则可以使用特定的 DNS 名称进行连接 AWS Batch，我们提供以下选项：
+ **批量。** *region***.amazonaws.co**
+ **批量。** *region***.api.aws**

对于符合 FIPS 标准的端点：
+ **批量翻转。** *region***.api.aws**
+ **fips.batch。** *region**不**支持.amazonaws.com***

有关更多信息，请参阅 *AWS PrivateLink 指南*中的[通过接口端点访问服务](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#access-service-though-endpoint)。

# 为接口端点创建端点策略
<a name="vpc-endpoint-policy"></a>

端点策略是一种 IAM 资源，您可以将其附加到接口端点。默认终端节点策略允许 AWS Batch 通过接口终端节点进行完全访问。要控制允许从 VPC 访问 AWS Batch 的权限，请将自定义端点策略附加到接口端点。

端点策略指定以下信息：
+ 可执行操作的主体（AWS 账户、用户和 IAM 角色）。
+ 可执行的操作。
+ 可对其执行操作的资源。

有关更多信息，请参阅《AWS PrivateLink 指南》**中的[使用端点策略控制对服务的访问权限](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。

**示例：用于 AWS Batch 操作的 VPC 终端节点策略**  
以下是自定义端点策略的示例。当您将此策略附加到接口终端节点时，它会授予所有委托人对所有资源 AWS Batch 执行所列操作的访问权限。

```
{
   "Statement": [
      {
         "Principal": "*",
         "Effect": "Allow",
         "Action": [
            "batch:SubmitJob",
            "batch:ListJobs",
            "batch:DescribeJobs"
         ],
         "Resource":"*"
      }
   ]
}
```

# 合规性验证 AWS Batch
<a name="compliance"></a>

要了解是否属于特定合规计划的范围，请参阅AWS 服务 “[按合规计划划分的范围](https://aws.amazon.com/compliance/services-in-scope/)” ”，然后选择您感兴趣的合规计划。 AWS 服务 有关一般信息，请参阅[AWS 合规计划AWS](https://aws.amazon.com/compliance/programs/)。

您可以使用下载第三方审计报告 AWS Artifact。有关更多信息，请参阅中的 “[下载报告” 中的 “ AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)。

您在使用 AWS 服务 时的合规责任取决于您的数据的敏感性、贵公司的合规目标以及适用的法律和法规。有关您在使用时的合规责任的更多信息 AWS 服务，请参阅[AWS 安全文档](https://docs.aws.amazon.com/security/)。

# 中的基础设施安全 AWS Batch
<a name="infrastructure-security"></a>

作为一项托管服务 AWS Batch ，受 AWS 全球网络安全的保护。有关 AWS 安全服务以及如何 AWS 保护基础设施的信息，请参阅[AWS 云安全](https://aws.amazon.com/security/)。要使用基础设施安全的最佳实践来设计您的 AWS 环境，请参阅 S * AWS ecurity Pillar Well-Architected Fram* ework 中的[基础设施保护](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html)。

您可以使用 AWS 已发布的 API 调用 AWS Batch 通过网络进行访问。客户端必须支持以下内容：
+ 传输层安全性协议（TLS）。我们要求使用 TLS 1.2，建议使用 TLS 1.3。
+ 具有完全向前保密（PFS）的密码套件，例如 DHE（临时 Diffie-Hellman）或 ECDHE（临时椭圆曲线 Diffie-Hellman）。大多数现代系统（如 Java 7 及更高版本）都支持这些模式。

您可以从任何网络位置调用这些 API 操作， AWS Batch 但支持基于资源的访问策略，其中可能包括基于源 IP 地址的限制。您还可以使用 AWS Batch 策略来控制来自特定亚马逊虚拟私有云（Amazon VPC）终端节点或特定终端节点的访问 VPCs。实际上，这可以将对给定 AWS Batch 资源的网络访问与网络中的特定 VPC 隔离开来。 AWS 

# 防止跨服务混淆代理
<a name="cross-service-confused-deputy-prevention"></a>

混淆代理问题是一个安全问题，即没有执行操作权限的实体可能会迫使更具权限的实体执行该操作。在中 AWS，跨服务模仿可能会导致混乱的副手问题。一个服务（*呼叫服务*）调用另一项服务（*所谓的服务*）时，可能会发生跨服务模拟。可以操纵调用服务，使用其权限以在其他情况下该服务不应有访问权限的方式对另一个客户的资源进行操作。为防止这种情况， AWS 提供可帮助您保护所有服务的数据的工具，而这些服务中的服务主体有权限访问账户中的资源。

我们建议在资源策略中使用[https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)和[https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)全局条件上下文密钥来限制为资源 AWS Batch 提供其他服务的权限。如果 `aws:SourceArn` 值不包含账户 ID，例如 Amazon S3 存储桶 ARN，您必须使用两个全局条件上下文密钥来限制权限。如果同时使用全局条件上下文密钥和包含账户 ID 的 `aws:SourceArn` 值，则 `aws:SourceAccount` 值和 `aws:SourceArn` 值中的账户在同一策略语句中使用时，必须使用相同的账户 ID。如果您只希望将一个资源与跨服务访问相关联，请使用 `aws:SourceArn`。如果您想允许该账户中的任何资源与跨服务使用操作相关联，请使用。`aws:SourceAccount`

的值`aws:SourceArn`必须是 AWS Batch 存储的资源。

防范混淆代理问题最有效的方法是使用 `aws:SourceArn` 全局条件上下文键和资源的完整 ARN。如果不知道资源的完整 ARN，或者正在指定多个资源，请针对 ARN 未知部分使用带有通配符字符（`*`）的 `aws:SourceArn` 全局上下文条件键。例如 `arn:aws:servicename:*:123456789012:*`。

以下示例说明了如何使用中的`aws:SourceArn`和`aws:SourceAccount`全局条件上下文键 AWS Batch 来防止出现混淆的副手问题。

## 示例：仅用于访问一个计算环境的角色
<a name="cross-service-confused-deputy-prevention-example-1"></a>

以下角色只能用于访问一个计算环境。必须将作业名称指定为 `*`，因为作业队列可以与多个计算环境相关联。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "batch.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": [
            "arn:aws:batch:us-east-1:123456789012:compute-environment/testCE",
            "arn:aws:batch:us-east-1:123456789012:job/*"
          ]
        }
      }
    }
  ]
}
```

------

## 示例：访问多个计算环境的角色
<a name="cross-service-confused-deputy-prevention-example-2"></a>

以下角色可用于访问多个计算环境。必须将作业名称指定为 `*`，因为作业队列可以与多个计算环境相关联。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "batch.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": [
            "arn:aws:batch:us-east-1:123456789012:compute-environment/*",
            "arn:aws:batch:us-east-1:123456789012:job/*"
          ]
        }
      }
    }
  ]
}
```

------

# 使用记录 AWS Batch API 调用 AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

AWS Batch 与 AWS CloudTrail一项服务集成，该服务提供用户、角色或 AWS 服务在中执行的操作的记录 AWS Batch。 CloudTrail 将所有 API 调用捕获 AWS Batch 为事件。捕获的调用包括来自 AWS Batch 控制台的调用和对 AWS Batch API 操作的代码调用。如果您创建了跟踪，则可以允许将 CloudTrail 事件持续传输到 Amazon S3 存储桶，包括的事件 AWS Batch。如果您未配置跟踪，您仍然可以在 CloudTrail 控制台的 “事件**历史记录” 中查看最新的事件**。使用收集的信息 CloudTrail，您可以确定向哪个请求发出 AWS Batch、发出请求的 IP 地址、谁发出了请求、何时发出请求以及其他详细信息。

要了解更多信息 CloudTrail，请参阅《[AWS CloudTrail 用户指南》](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。

**Topics**
+ [AWS Batch 信息在 CloudTrail](service-name-info-in-cloudtrail.md)
+ [参考：了解 AWS Batch 日志文件条目](understanding-service-name-entries.md)

# AWS Batch 信息在 CloudTrail
<a name="service-name-info-in-cloudtrail"></a>

CloudTrail 在您创建 AWS 账户时已在您的账户上启用。当活动发生在中时 AWS Batch，该活动会与其他 AWS 服务 CloudTrail 事件一起记录在**事件历史**记录中。您可以在自己的 AWS 账户中查看、搜索和下载最近发生的事件。有关更多信息，请参阅[使用事件历史记录查看 CloudTrail 事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。

要持续记录您 AWS 账户中的事件，包括的事件 AWS Batch，请创建跟踪。*跟踪*允许 CloudTrail 将日志文件传输到 Amazon S3 存储桶。默认情况下，当您在控制台中创建跟踪时，该跟踪将应用于所有 AWS 区域。跟踪记录 AWS 分区中所有区域的事件，并将日志文件传送到您指定的 Amazon S3 存储桶。此外，您可以配置其他 AWS 服务，以进一步分析和处理 CloudTrail 日志中收集的事件数据。有关更多信息，请参阅下列内容：
+ [创建跟踪概述](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail 支持的服务和集成](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [配置 Amazon SNS 通知 CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [接收来自多个区域的 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html)和[接收来自多个账户的 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

所有 AWS Batch 操作都由记录 CloudTrail 并记录在 https://docs.aws.amazon.com/batch/ latestAPIReference//中。例如，对 `[SubmitJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html)`、 `[ListJobs](https://docs.aws.amazon.com/batch/latest/APIReference/API_ListJobs.html)` 和 `[DescribeJobs](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobs.html)` 部分的调用将在 CloudTrail 日志文件中生成条目。

每个事件或日志条目都包含有关生成请求的人员信息。身份信息可帮助您确定以下内容：
+ 请求是使用根用户凭证还是 IAM 用户凭证发出的。
+ 请求是使用角色还是联合用户的临时安全凭证发出的。
+ 请求是否由其他 AWS 服务发出。

有关更多信息，请参阅 [CloudTrail userIdentity 元素](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)。

# 参考：了解 AWS Batch 日志文件条目
<a name="understanding-service-name-entries"></a>

跟踪是一种配置，允许将事件作为日志文件传输到您指定的 Amazon S3 存储桶。 CloudTrail 日志文件包含一个或多个日志条目。一个事件表示来自任何源的一个请求，包括有关所请求的操作、操作的日期和时间、请求参数等方面的信息。 CloudTrail 日志文件不是公用 API 调用的有序堆栈跟踪，因此它们不会以任何特定顺序显示。

以下示例显示了演示该`[CreateComputeEnvironment](https://docs.aws.amazon.com/batch/latest/APIReference/API_CreateComputeEnvironment.html)`操作的 CloudTrail 日志条目。

```
{
  "eventVersion": "1.05",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "AIDACKCEVSQ6C2EXAMPLE:admin",
    "arn": "arn:aws:sts::012345678910:assumed-role/Admin/admin",
    "accountId": "012345678910",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "sessionContext": {
      "attributes": {
        "mfaAuthenticated": "false",
        "creationDate": "2017-12-20T00:48:46Z"
      },
      "sessionIssuer": {
        "type": "Role",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE",
        "arn": "arn:aws:iam::012345678910:role/Admin",
        "accountId": "012345678910",
        "userName": "Admin"
      }
    }
  },
  "eventTime": "2017-12-20T00:48:46Z",
  "eventSource": "batch.amazonaws.com",
  "eventName": "CreateComputeEnvironment",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "203.0.113.1",
  "userAgent": "aws-cli/1.11.167 Python/2.7.10 Darwin/16.7.0 botocore/1.7.25",
  "requestParameters": {
    "computeResources": {
      "subnets": [
        "subnet-5eda8e04"
      ],
      "tags": {
        "testBatchTags": "CLI testing CE"
      },
      "desiredvCpus": 0,
      "minvCpus": 0,
      "instanceTypes": [
        "optimal"
      ],
      "securityGroupIds": [
        "sg-aba9e8db"
      ],
      "instanceRole": "ecsInstanceRole",
      "maxvCpus": 128,
      "type": "EC2"
    },
    "state": "ENABLED",
    "type": "MANAGED",
    "computeEnvironmentName": "Test"
  },
  "responseElements": {
    "computeEnvironmentName": "Test",
    "computeEnvironmentArn": "arn:aws:batch:us-east-1:012345678910:compute-environment/Test"
  },
  "requestID": "890b8639-e51f-11e7-b038-EXAMPLE",
  "eventID": "874f89fa-70fc-4798-bc00-EXAMPLE",
  "readOnly": false,
  "eventType": "AwsApiCall",
  "recipientAccountId": "012345678910"
}
```

# 排查 AWS Batch IAM
<a name="security_iam_troubleshoot"></a>

使用以下信息来帮助您诊断和修复在使用 AWS Batch 和 IAM 时可能遇到的常见问题。

**Topics**
+ [我无权在以下位置执行操作 AWS Batch](#security_iam_troubleshoot-no-permissions)
+ [我无权执行 iam：PassRole](#security_iam_troubleshoot-passrole)
+ [我想允许 AWS 账户之外的人访问我的 AWS Batch 资源](#security_iam_troubleshoot-cross-account-access)

## 我无权在以下位置执行操作 AWS Batch
<a name="security_iam_troubleshoot-no-permissions"></a>

如果 AWS 管理控制台 告诉您您无权执行某项操作，则必须联系管理员寻求帮助。管理员是指提供用户名和密码的人员。

当 `mateojackson` 用户尝试使用控制台查看有关虚构 `my-example-widget` 资源的详细信息，但不拥有虚构 `batch:GetWidget` 权限时，会发生以下示例错误。

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: batch:GetWidget on resource: my-example-widget
```

在这种情况下，Mateo 请求他的管理员更新其策略，以允许他使用 `batch:GetWidget` 操作访问 `my-example-widget` 资源。有关授予角色传递权限的更多信息，请参阅[向用户授予将角色传递给 AWS 服务的权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)。

## 我无权执行 iam：PassRole
<a name="security_iam_troubleshoot-passrole"></a>

如果您收到一个错误，表明您无权执行 `iam:PassRole` 操作，则必须更新策略以允许您将角色传递给。 AWS Batch

有些 AWS 服务 允许您将现有角色传递给该服务，而不是创建新的服务角色或服务相关角色。为此，您必须具有将角色传递到服务的权限。

当名为 `marymajor` 的 IAM 用户尝试使用控制台在 AWS Batch中执行操作时，会发生以下示例错误。但是，服务必须具有服务角色所授予的权限才可执行此操作。Mary 不具有将角色传递到服务的权限。

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

在这种情况下，必须更新 Mary 的策略以允许她执行 `iam:PassRole` 操作。

如果您需要帮助，请联系您的 AWS 管理员。您的管理员是提供登录凭证的人。

## 我想允许 AWS 账户之外的人访问我的 AWS Batch 资源
<a name="security_iam_troubleshoot-cross-account-access"></a>

您可以创建一个角色，以便其他账户中的用户或您组织外的人员可以使用该角色来访问您的资源。您可以指定谁值得信赖，可以代入角色。对于支持基于资源的策略或访问控制列表 (ACLs) 的服务，您可以使用这些策略向人们授予访问您的资源的权限。

要了解更多信息，请参阅以下内容：
+ 要了解是否 AWS Batch 支持这些功能，请参阅[如何 AWS Batch 与 IAM 配合使用](security_iam_service-with-iam.md)。
+ 要了解如何提供对您拥有的资源的访问权限 AWS 账户 ，请参阅 [IAM 用户*指南中的向您拥有 AWS 账户 的另一个 IAM 用户*提供访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)权限。
+ 要了解如何向第三方提供对您的资源的访问[权限 AWS 账户，请参阅 *IAM 用户指南*中的向第三方提供](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)访问权限。 AWS 账户 
+ 要了解如何通过身份联合验证提供访问权限，请参阅《IAM 用户指南》**中的[为经过外部身份验证的用户（身份联合验证）提供访问权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)。
+ 要了解使用角色和基于资源的策略进行跨账户访问之间的差别，请参阅《IAM 用户指南》**中的 [IAM 中的跨账户资源访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。