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

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

适用于 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 基于身份的策略的最佳实践,请参阅IAM IM 策略最佳实践.

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

使用 Amazon AppSync 控制台

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

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

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

AWSAwesomeConsoleAccess

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

该示例说明了您如何创建策略,以允许 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 存储桶

在此示例中,您想要在中授予一个 IAM 用户Amazon账户访问其中一个 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-roe要么owner=richard-roe. 否则,他会被拒绝访问。条件标签键 Owner 匹配 Ownerowner,因为条件键名称不区分大小写。有关更多信息,请参阅IAM JSON 策略元素:条件中的IAM 用户指南.