

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

# 用于编程访问的简化 AWS 服务 信息
<a name="service-reference"></a>

AWS 以 JSON 格式提供服务参考信息，以简化策略管理工作流程的自动化。借助服务参考信息，您可以通过机器可读文件访问可用的操作、操作、资源和条件键。 AWS 服务 服务参考信息包括授权详细信息之外的元数据，其中包括 IAM 操作的上次访问信息和 IAM Access Analyzer 策略生成数据。

安全管理员可以建立防护栏，开发人员可以通过识别每个应用程序的可用操作、资源和条件密钥来确保对应用程序的适当访问。 AWS 服务 AWS 提供了的服务参考信息 AWS 服务 ，使您可以将元数据整合到策略管理工作流程中。
+ 有关 IAM 策略中使用的操作、资源和条件键的清单，请参阅面向 AWS 服务的[服务授权参考](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)页面。对于共享服务前缀的服务，其操作、资源和条件键可以划分到《服务授权参考》中的多个页面中。
+ 有关显示 IAM 操作上次访问信息的列表 AWS 服务 和操作，请参阅 [IAM 用户指南中的 IAM 操作上次访问的信息服务和操作](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_last-accessed-action-last-accessed.html)。
+ 有关 IAM Access Analyzer 生成包含操作级信息的策略的列表 AWS 服务 和操作，请参阅 [IAM 用户指南中的 IAM Access Analyzer 策略生成服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation-action-last-accessed-support.html)。

《服务授权参考》中介绍的内容可能以不同的方式呈现或包含不同的元数据。有关更多信息，请参阅 [其他字段定义](#service-reference-additional-field-definitions)。

服务参考信息还提供有关操作的元数据，包括有关授权操作和中的方法名称的信息 SDKs。

可以提供条件键值的其他上下文来帮助确定权限的范围。例如，当操作授权时，`iam:PassedToService`可能会出现的值。`iam:PassRole`

并非所有服务都支持此操作到操作的映射。尚不支持此映射的服务将省略该 AuthorizedAction 属性。此外，操作的授权操作信息不包括代表您使用[转发访问会话](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)调用的操作可能需要的权限。

**注意**  
对服务参考信息的更改最长可能需要 24 小时才能在服务的元数据列表中得到反映。

**访问 AWS 服务 参考信息**

1. 导航到服务参考信息以访问可 AWS 服务 用的参考信息列表。

   有两个主要的切入点：

   [http://servicereference.us-east-1.amazonaws.com/](http://servicereference.us-east-1.amazonaws.com/) 显示有哪些 AWS 服务 参考信息的列表。

   以下示例显示了服务的部分列表及其各自 URLs 的参考信息：

   ```
   [ 
       { 
           "service": "s3", 
           "url": "https://servicereference.us-east-1.amazonaws.com/v1/s3/s3.json" 
       }, 
       { 
           "service": "dynamodb", 
           "url": "https://servicereference.us-east-1.amazonaws.com/v1/dynamodb/dynamodb.json" 
       }, 
       …
   ]
   ```

   https://servicereference.us-east-1.amazonaws.com/v1/m@@ [apping.json](https://servicereference.us-east-1.amazonaws.com/v1/mapping.json) 显示了从 SDK 服务到服务参考中可在其中找到信息的位置的映射。

   以下示例显示了映射的部分列表：

   ```
   {
     "SDK" : {
       "Python" : {
         "Boto3" : {
           "accessanalyzer" : {
             "service" : "access-analyzer",
             "url" : "https://servicereference.us-east-1.amazonaws.com/v1/access-analyzer/access-analyzer.json"
           },
           "account" : {
             "service" : "account",
             "url" : "https://servicereference.us-east-1.amazonaws.com/v1/account/account.json"
           },
           "amp" : {
             "service" : "aps",
             "url" : "https://servicereference.us-east-1.amazonaws.com/v1/aps/aps.json"
           },
           ...
         }
       }
     }
   }
   ```

1. 选择一项服务，然后导航到该服务的 `url` 字段的服务信息页面，以查看该服务的操作、资源和条件键列表。

   以下示例显示 Amazon S3 的服务参考信息的部分列表：

   ```
   {
       "Name": "s3",
       "Actions": [
           {
               "Name": "GetObject",
               "ActionConditionKeys": [
                   "s3:AccessGrantsInstanceArn",
                   "s3:AccessPointNetworkOrigin",
                   "s3:DataAccessPointAccount",
                   "s3:DataAccessPointArn",
                   "s3:ExistingObjectTag/key",
                   "s3:ResourceAccount",
                   "s3:TlsVersion",
                   "s3:authType",
                   "s3:if-match",
                   "s3:if-none-match",
                   "s3:signatureAge",
                   "s3:signatureversion",
                   "s3:x-amz-content-sha256"
               ],
               "Annotations" : {
               "Properties" : {
                       "IsList" : false,
                       "IsPermissionManagement" : false,
                       "IsTaggingOnly" : false,
                       "IsWrite" : false
                   }
               },
               "Resources": [
                   {
                       "Name": "object"
                   }
               ],
               "SupportedBy" : {
                   "IAM Access Analyzer Policy Generation" : false,
                   "IAM Action Last Accessed" : false
               }
           },
           {
               "Name": "ListBucket",
               "ActionConditionKeys": [
                   "s3:AccessGrantsInstanceArn",
                   "s3:AccessPointNetworkOrigin",
                   "s3:DataAccessPointAccount",
                   "s3:DataAccessPointArn",
                   "s3:ResourceAccount",
                   "s3:TlsVersion",
                   "s3:authType",
                   "s3:delimiter",
                   "s3:max-keys",
                   "s3:prefix",
                   "s3:signatureAge",
                   "s3:signatureversion",
                   "s3:x-amz-content-sha256"
               ],
               "Annotations" : {
                   "Properties" : {
                       "IsList" : true,
                       "IsPermissionManagement" : false,
                       "IsTaggingOnly" : false,
                       "IsWrite" : false
                   }
               },
               "Resources": [
                   {
                       "Name": "bucket"
                   }
               ],
               "SupportedBy" : {
                   "IAM Access Analyzer Policy Generation" : false,
                   "IAM Action Last Accessed" : false
               }
           },
           ...
       ],
       "ConditionKeys": [
           {
               "Name": "s3:TlsVersion",
               "Types": [
                   "Numeric"
               ]
           },
           {
               "Name": "s3:authType",
               "Types": [
                   "String"
               ]
           },
           ...
       ],
       "Operations": [
           {
               "Name" : "GetObject",
               "AuthorizedActions" : [
                   {
                       "Name" : "GetObject",
                       "Service" : "s3"
                   }, {
                       "Name" : "GetObject",
                       "Service" : "s3-object-lambda"
                   }, {
                       "Name" : "GetObjectLegalHold",
                       "Service" : "s3"
                   }, {
                       "Name" : "GetObjectRetention",
                       "Service" : "s3"
                   }, {
                       "Name" : "GetObjectTagging",
                       "Service" : "s3"
                   }, {
                       "Name" : "GetObjectVersion",
                       "Service" : "s3"
                   }
               ],
               "SDK" : [
                   {
                       "Name" : "s3",
                       "Method" : "get_object",
                       "Package" : "Boto3"
                   }
               ]
           },
           ...
       ],
       "Resources": [
           {
               "Name": "accesspoint",
               "ARNFormats": [
                   "arn:${Partition}:s3:${Region}:${Account}:accesspoint/${AccessPointName}"
               ]
           },
           {
               "Name": "bucket",
               "ARNFormats": [
                   "arn:${Partition}:s3:::${BucketName}"
               ]
           }
           ...
       ],
       "Version": "v1.4"
   }
   ```

1. 通过服务 URL 下载 JSON 文件以用于您的策略制定工作流程。

## 术语表
<a name="service-reference-glossary"></a>
+ 操作-可以调用的 API，通常通过 SDK
+ 操作-执行操作时授权的权限

## 其他字段定义
<a name="service-reference-additional-field-definitions"></a>

**操作属性**提供有关服务操作的其他元数据，有助于根据其权限范围对其进行分类。这些属性位于每个操作的 `Annotations` 字段下。元数据由四个布尔值组成：
+ `IsList` – 提供无需访问资源内容即可发现和列出资源（包括基本元数据）的权限。

  **示例** – 对于 Amazon S3 `ListBucket` 操作，此属性为 `true`，允许用户无需访问对象本身即可查看存储桶列表。
+ `IsPermissionManagement` – 提供修改 IAM 权限或访问凭证的权限。

  **示例**-此属性`true`适用于大多数 IAM 和 AWS Organizations 操作，以及 Amazon S3 操作，例如`PutBucketPolicy`和`DeleteBucketPolicy`。
+ `IsTaggingOnly` – 仅提供修改标签的权限。

  **示例** – 对于 IAM 操作 `TagRole` 和 `UntagRole`，此属性为 `true`；而对于 `CreateRole`，此属性为 `false`，因为它可提供比标记更广的权限。
+ `IsWrite` – 提供修改资源的权限，其中可能包括标签修改。

  **示例** – 对于 Amazon S3 操作 `CreateBucket`、`DeleteBucket` 和 `PutObject`，此属性为 `true`，因为它们允许资源修改。

**注意**  
这些属性并非互斥。一个动作可以有多个属性设置为 `true`。  
也有可能出现所有属性均为 `GetObject` 的情况，例如 Amazon S3 的 `false` 操作。这表示该操作仅授予对对象的读取权限。

这些属性可用于生成有关服务的见解。以下示例显示哪些带有 `s3` 前缀的权限允许改变资源：

```
> curl https://servicereference.us-east-1.amazonaws.com/v1/s3/s3.json | \
    jq '.Actions[] | select(.Annotations.Properties.IsWrite == true) | .Name'

"AssociateAccessGrantsIdentityCenter"
"BypassGovernanceRetention"
"CreateAccessGrant"
"CreateAccessGrantsInstance"
"CreateAccessGrantsLocation"
...
```

以下示例显示您可以使用哪些带有 `lambda` 前缀的操作条件键来限制对权限管理操作的访问：

```
> curl https://servicereference.us-east-1.amazonaws.com/v1/lambda/lambda.json | \
    jq '.Actions[] | select(.Annotations.Properties.IsPermissionManagement == true) | {Name: .Name, ActionConditionKeys: (.ActionConditionKeys // [])}'
 
{
   "Name": "AddLayerVersionPermission",
    "ActionConditionKeys": []
}
{
    "Name": "AddPermission",
    "ActionConditionKeys": [
        "lambda:FunctionUrlAuthType",
        "lambda:Principal"
    ]
}
{
    "Name": "DisableReplication",
    "ActionConditionKeys": []
}
{
    "Name": "EnableReplication",
    "ActionConditionKeys": []
}
{
    "Name": "RemoveLayerVersionPermission",
    "ActionConditionKeys": []
}
{
    "Name": "RemovePermission",
    "ActionConditionKeys": [
        "lambda:FunctionUrlAuthType",
        "lambda:Principal"
    ]
}
```