本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
用于编程访问的简化 Amazon Web Services 服务 信息
Amazon 以 JSON 格式提供服务参考信息,以简化策略管理工作流程的自动化。借助服务参考信息,您可以通过机器可读文件访问可用的操作、资源和条件键。 Amazon Web Services 服务 安全管理员可以建立防护栏,开发人员可以通过识别每个应用程序的可用操作、资源和条件密钥来确保对应用程序的适当访问。 Amazon Web Services 服务 Amazon 提供了的服务参考信息 Amazon Web Services 服务 ,使您可以将元数据整合到策略管理工作流程中。
有关在 IAM 策略中使用的操作、资源和条件密钥的清单,请参阅服务授权参考页面 Amazon Web Services 服务。
共享服务前缀的服务的操作、资源和条件密钥可以在《服务授权参考》中分为多个页面。
《服务授权参考》中显示的内容可能以不同的方式呈现或包含不同的元数据。有关更多信息,请参阅 其他字段定义。
注意
对服务参考信息的更改最多可能需要 24 小时才能反映在服务的元数据列表中。
访问 Amazon Web Services 服务 参考信息
-
导航到服务参考信息
以访问提供参考信息的列表。 Amazon Web Services 服务 以下示例显示了服务的部分列表及其各自 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" }, … ]
-
选择一项服务,然后导航到该服务
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" } ] }, { "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" } ] }, ... ], "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.2" }
-
通过服务 URL 下载 JSON 文件以用于您的策略制定工作流程。
其他字段定义
操作属性提供有关服务操作的其他元数据,以帮助根据其权限范围对其进行分类。这些属性位于每个操作的Annotations
字段下。元数据由四个布尔值组成:
-
IsList
— 提供无需访问资源内容即可发现和列出资源(包括基本元数据)的权限。示例-此属性
true
用于 Amazon S3ListBucket
操作,允许用户无需自己访问对象即可查看存储桶列表。 -
IsPermissionManagement
— 提供修改 IAM 权限或访问凭证的权限。示例-此属性
true
适用于大多数 IAM 和 Amazon Organizations 操作,以及 Amazon S3 操作,例如PutBucketPolicy
和DeleteBucketPolicy
。 -
IsTaggingOnly
— 仅提供修改标签的权限。示例 — 此属性
true
用于 IAM 操作TagRole
和UntagRole
,而此属性false
用于,CreateRole
因为它除了标记之外还提供了更广泛的权限。 -
IsWrite
— 提供修改资源的权限,其中可能包括修改标签。示例-此属性
true
适用于 Amazon S3 操作CreateBucket
DeleteBucket
,PutObject
因为它们允许修改资源。
注意
这些属性不是相互排斥的。一个动作可以将多个属性设置为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" ] }