适用于 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。管理员随后可以向角色添加 IAM 策略,用户可以代入角色。

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

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

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

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

使用 Amazon AppSync控制台

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

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

为确保 IAM 用户和角色仍然可以使用 Amazon AppSync 控制台,还需要将 Amazon AppSync ConsoleAccessReadOnly Amazon 托管策略附加到实体。有关更多信息,请参阅《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 账户中的 IAM 用户授予访问您的 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 资源的访问。该示例说明了如何创建允许查看小组件的策略。不过,只有在小组件标签 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 策略元素:条件