

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

# 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)中的。