适用于 Amazon AppSync 的基于身份的策略 - Amazon AppSync
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

适用于 Amazon AppSync 的基于身份的策略

默认情况下,用户和角色没有创建或修改 Amazon AppSync 资源的权限。他们也无法使用 Amazon Web Services Management Console、Amazon Command Line Interface(Amazon CLI)或 Amazon API 执行任务。IAM 管理员必须创建 IAM policy,以便为用户和角色授予权限,以对所需资源执行操作。然后,管理员必须为需要这些策略的用户附加这些策略。

要了解如何使用这些示例 JSON 策略文档创建基于 IAM 身份的策略,请参阅《IAM 用户指南》中的创建 IAM policy

有关定义的操作和资源类型的详细信息Amazon AppSync,包括每种资源类型的 ARN 格式,请参阅服务授权参考Amazon AppSync中的操作、资源和条件键

要了解创建和配置基于身份的 IAM 策略的最佳实践,请参阅IM 策略最佳实践

有关的 IAM 基于身份的策略列表Amazon AppSync,请参阅Amazon适用于 Amazon AppSync 的托管策略

使用 Amazon AppSync 控制台

要访问 Amazon AppSync 控制台,您必须拥有一组最低的权限。这些权限必须允许您列出和查看有关您的Amazon Web Services 账户中的 Amazon AppSync 资源的详细信息。如果创建比必需的最低权限更为严格的基于身份的策略,对于附加了该策略的实体(用户或角色),控制台将无法按预期正常运行。

对于只需要调用 Amazon CLI 或 Amazon API 的用户,无需为其提供最低控制台权限。相反,只允许访问与您尝试执行的 API 操作相匹配的操作。

为确保 IAM 用户和角色仍然可以使用Amazon AppSync 控制台,还要将Amazon AppSync ConsoleAccessReadOnlyAmazon托管策略附加到实体。有关更多信息,请参阅 IAM 用户指南中的为用户添加权限

允许用户查看他们自己的权限

该示例说明了您如何创建策略,以允许 IAM 用户查看附加到其用户身份的内联和托管式策略。此策略包括在控制台上完成此操作或者以编程方式使用 Amazon CLI 或 Amazon API 所需的权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

访问一个 Amazon S3 存储桶

在本示例中,您想要为您的Amazon账户中的 IM 用户授予访问其中一个 Amazon S3 存储桶的权限examplebucket。您还想要允许该用户添加、更新和删除对象。

除了授予该用户 s3:PutObjects3:GetObjects3:DeleteObject 权限外,此策略还授予 s3:ListAllMyBucketss3:GetBucketLocations3:ListBucket 权限。这些是控制台所需的其他权限。此外,s3:PutObjectAcls3:GetObjectAcl 操作需要能够在控制台中复制、剪切和粘贴对象。有关向用户授予权限并使用控制台测试这些权限的示例演练,请参阅示例演练:使用用户策略控制对存储桶的访问

{ "Version":"2012-10-17", "Statement":[ { "Sid":"ListBucketsInConsole", "Effect":"Allow", "Action":[ "s3:ListAllMyBuckets" ], "Resource":"arn:aws:s3:::*" }, { "Sid":"ViewSpecificBucketInfo", "Effect":"Allow", "Action":[ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource":"arn:aws:s3:::examplebucket" }, { "Sid":"ManageBucketContents", "Effect":"Allow", "Action":[ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:GetObjectAcl", "s3:DeleteObject" ], "Resource":"arn:aws:s3:::examplebucket/*" } ] }

根据标签查看Amazon AppSync 小部件

您可以在基于身份的策略中使用条件,以便基于标签控制对 Amazon AppSync 资源的访问。此示例演示了如何创建允许查看小部件的策略。但是,仅当 widget 标签Owner具有该用户的用户名值时,才授予权限。此策略还授予在控制台上完成此操作的必要权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListWidgetsInConsole", "Effect": "Allow", "Action": "appsync:ListWidgets", "Resource": "*" }, { "Sid": "ViewWidgetIfOwner", "Effect": "Allow", "Action": "appsync:GetWidget", "Resource": "arn:aws:appsync:*:*:widget/*", "Condition": { "StringEquals": {"aws:ResourceTag/Owner": "${aws:username}"} } } ] }

您可以将该策略附加到您账户中的 IAM 用户。如果名为的用户richard-roe尝试查看Amazon AppSync小组件,则该小组件必须被标记为Owner=richard-roeowner=richard-roe。否则,他会被拒绝访问。条件标签键 Owner 匹配 Ownerowner,因为条件键名称不区分大小写。有关更多信息,请参阅《IAM 用户指南》中的 IAM JSON 策略元素:条件