用于编程访问的简化 AWS 服务 信息 - 服务授权参考

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

用于编程访问的简化 AWS 服务 信息

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

安全管理员可以建立防护栏,开发人员可以通过识别每个应用程序的可用操作、资源和条件密钥来确保对应用程序的适当访问。 AWS 服务 AWS 提供了的服务参考信息 AWS 服务 ,使您可以将元数据整合到策略管理工作流程中。

《服务授权参考》中显示的内容可能以不同的方式呈现或包含不同的元数据。有关更多信息,请参阅 其他字段定义

注意

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

访问 AWS 服务 参考信息
  1. 导航到服务参考信息以访问提供参考信息的列表。 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" }, … ]
  2. 选择一项服务,然后导航到该服务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" ] }, ... ], "Resources": [ { "Name": "accesspoint", "ARNFormats": [ "arn:${Partition}:s3:${Region}:${Account}:accesspoint/${AccessPointName}" ] }, { "Name": "bucket", "ARNFormats": [ "arn:${Partition}:s3:::${BucketName}" ] } ... ], "Version": "v1.3" }
  3. 通过服务 URL 下载 JSON 文件以用于您的策略制定工作流程。

其他字段定义

操作属性提供有关服务操作的其他元数据,以帮助根据其权限范围对其进行分类。这些属性位于每个操作的Annotations字段下。元数据由四个布尔值组成:

  • IsList— 提供无需访问资源内容即可发现和列出资源(包括基本元数据)的权限。

    示例-此属性true用于 Amazon S3 ListBucket 操作,允许用户无需自己访问对象即可查看存储桶列表。

  • IsPermissionManagement— 提供修改 IAM 权限或访问凭证的权限。

    示例-此属性true适用于大多数 IAM 和 AWS Organizations 操作,以及 Amazon S3 操作,例如PutBucketPolicyDeleteBucketPolicy

  • IsTaggingOnly— 仅提供修改标签的权限。

    示例 — 此属性true用于 IAM 操作TagRoleUntagRole,而此属性false用于,CreateRole因为它除了标记之外还提供了更广泛的权限。

  • IsWrite— 提供修改资源的权限,其中可能包括修改标签。

    示例-此属性true适用于 Amazon S3 操作 CreateBucketDeleteBucketPutObject因为它们允许修改资源。

注意

这些属性不是相互排斥的。一个动作可以将多个属性设置为true

从Amazon S3的GetObject操作中可以看出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" ] }