本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
用于编程访问的简化 AWS 服务 信息
AWS 以 JSON 格式提供服务参考信息,以简化策略管理工作流程的自动化。借助服务参考信息,您可以通过机器可读文件访问可用的操作、操作、资源和条件键。 AWS 服务 服务参考信息包括授权详细信息之外的元数据,其中包括 IAM 操作的上次访问信息和 IAM Access Analyzer 策略生成数据。
安全管理员可以建立防护栏,开发人员可以通过识别每个应用程序的可用操作、资源和条件密钥来确保对应用程序的适当访问。 AWS 服务 AWS 提供了的服务参考信息 AWS 服务 ,使您可以将元数据整合到策略管理工作流程中。
-
有关 IAM 策略中使用的操作、资源和条件键的清单,请参阅面向 AWS 服务的服务授权参考页面。对于共享服务前缀的服务,其操作、资源和条件键可以划分到《服务授权参考》中的多个页面中。
-
有关显示 IAM 操作上次访问信息的列表 AWS 服务 和操作,请参阅 IAM 用户指南中的 IAM 操作上次访问的信息服务和操作。
-
有关 IAM Access Analyzer 生成包含操作级信息的策略的列表 AWS 服务 和操作,请参阅 IAM 用户指南中的 IAM Access Analyzer 策略生成服务。
《服务授权参考》中介绍的内容可能以不同的方式呈现或包含不同的元数据。有关更多信息,请参阅 其他字段定义。
服务参考信息还提供有关操作的元数据,包括有关授权操作和中的方法名称的信息 SDKs。
可以提供条件键值的其他上下文来帮助确定权限的范围。例如,当操作授权时,iam:PassedToService可能会出现的值。iam:PassRole
并非所有服务都支持此操作到操作的映射。尚不支持此映射的服务将省略该 AuthorizedAction 属性。此外,操作的授权操作信息不包括通过转发访问会话代表您调用的操作可能需要的权限。
注意
对服务参考信息的更改最长可能需要 24 小时才能在服务的元数据列表中得到反映。
访问 AWS 服务 参考信息
-
导航到服务参考信息以访问可 AWS 服务 用的参考信息列表。
有两个主要的切入点:
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
显示了从 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" }, ... } } } } -
选择一项服务,然后导航到该服务的
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" } -
通过服务 URL 下载 JSON 文件以用于您的策略制定工作流程。
术语表
-
操作-可以调用的 API,通常通过 SDK
-
操作-执行操作时授权的权限
其他字段定义
操作属性提供有关服务操作的其他元数据,有助于根据其权限范围对其进行分类。这些属性位于每个操作的 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" ] }