本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Serverless Application Repository 基于身份的策略示例
预设情况下,IAM 用户和角色没有创建或修改 Amazon Serverless Application Repository 资源的权限。它们还无法使用 Amazon Web Services Management Console、Amazon CLI 或 Amazon API 执行任务。IAM 管理员必须创建 IAM policy,以便为用户和角色授予权限以对所需的指定资源执行特定的 API 操作。然后,管理员必须将这些策略附加到需要这些权限的 IAM 用户或组。
要了解如何使用这些示例 JSON 策略文档创建 IAM 基于身份的策略,请参阅 IAM 用户指南中的在 JSON 选项卡上创建策略。
策略最佳实践
基于身份的策略非常强大。它们确定某个人是否可以创建、访问或删除您账户中的 Amazon Serverless Application Repository 资源。这些操作可能会使 Amazon 账户产生成本。创建或编辑基于身份的策略时,请遵循以下准则和建议:
-
授予最低权限 – 创建自定义策略时,仅授予执行任务所需的许可。最开始只授予最低权限,然后根据需要授予其它权限。这样做比起一开始就授予过于宽松的权限而后再尝试收紧权限来说更为安全。有关更多信息,请参阅 IAM 用户指南中的授予最低权限。
-
为敏感操作启用 MFA – 为增强安全性,要求 IAM 用户使用多重身份验证 (MFA) 来访问敏感资源或 API 操作。有关更多信息,请参阅 IAM 用户指南中的在 Amazon 中使用多重身份验证(MFA)。
-
使用策略条件来增强安全性 – 在切实可行的范围内,定义基于身份的策略在哪些情况下允许访问资源。例如,您可编写条件来指定请求必须来自允许的 IP 地址范围。您也可以编写条件,以便仅允许指定日期或时间范围内的请求,或者要求使用 SSL 或 MFA。有关更多信息,请参阅《IAM 用户指南》中的 IAM JSON 策略元素:条件。
使用 Amazon Serverless Application Repository 控制台
Amazon Serverless Application Repository 控制台为您提供了一个发现和管理 Amazon Serverless Application Repository 应用程序的集成环境。此控制台提供了多种功能和工作流,通常需要管理 Amazon Serverless Application Repository 应用程序的权限以及 Amazon Serverless Application RepositoryAPI 权限:操作和资源参考中记录的特定于 API 的权限。
有关使用 Amazon Serverless Application Repository 控制台所需的权限的更多信息,请参阅客户托管策略示例。
允许用户查看他们自己的权限
该示例说明了您如何创建策略,以允许 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": "*" } ] }
客户托管策略示例
此部分中的示例提供了一组可附加到用户的示例策略。如果您是首次创建策略,建议您先在账户中创建 IAM 用户并按顺序将策略附加到用户。您还可以使用这些示例创建单个自定义策略(其中包括执行多个操作的权限),然后将其附加到用户。
有关如何向用户附加策略的更多信息,请参阅 IAM 用户指南中的向用户添加权限。
示例
发布者示例 1:允许发布者列出应用程序
您的账户中的 IAM 用户必须先具有 serverlessrepo:ListApplications
操作权限,然后才能在控制台中查看任何内容。授予这些权限时,控制台可以显示在用户所属的特定Amazon区域创建的Amazon账户中的Amazon Serverless Application Repository应用程序列表。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListExistingApplications", "Effect": "Allow", "Action": [ "serverlessrepo:ListApplications" ], "Resource": "*" } ] }
发布者示例 2:允许发布者查看应用程序或应用程序版本的详细信息
用户可以选择一个 Amazon Serverless Application Repository 应用程序并查看该应用程序的详细信息。此类详细信息包括作者、说明、版本和其他配置信息。为此,用户需要 Amazon Serverless Application Repository 的 serverlessrepo:ListApplicationVersions
和 serverlessrepo:GetApplication
API 操作的权限。
在以下示例中,为将其 Amazon 资源名称 (ARN) 指定为 Resource
值的特定应用程序授予这些权限。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewApplication", "Effect": "Allow", "Action": [ "serverlessrepo:GetApplication", "serverlessrepo:ListApplicationVersions" ], "Resource": "arn:aws:serverlessrepo:
region
:account-id
:applications/application-name
" } ] }
发布者示例 3:允许发布者创建应用程序或应用程序版本
如果您希望允许用户具有创建 Amazon Serverless Application Repository 应用程序的权限,则需要授予 serverlessrepo:CreateApplication
和 serverlessrepo:CreateApplicationVersions
操作的权限,如以下策略所示。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateApplication", "Effect": "Allow", "Action": [ "serverlessrepo:CreateApplication", "serverlessrepo:CreateApplicationVersion", ], "Resource": "*" } ] }
发布者示例 4:允许发布者创建应用程序策略以与其他人共享应用程序
要使用户与其他人共享应用程序,您必须向这些用户授予创建应用程序策略的权限,如以下策略所示。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ShareApplication", "Effect": "Allow", "Action": [ "serverlessrepo:PutApplicationPolicy", "serverlessrepo:GetApplicationPolicy", ], "Resource": "*" } ] }
使用者示例 1:允许使用者搜索应用程序
要使使用者能够搜索应用程序,您必须向他们授予以下权限。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SearchApplications", "Effect": "Allow", "Action": [ "serverlessrepo:SearchApplications" ], "Resource": "*" } ] }
使用者示例 2:允许使用者查看应用程序的详细信息
用户可以选择一个 Amazon Serverless Application Repository 应用程序并查看该应用程序的详细信息,如作者、说明、版本和其他配置信息。为此,用户必须具有以下 Amazon Serverless Application Repository 操作的权限。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewApplication", "Effect": "Allow", "Action": [ "serverlessrepo:GetApplication", "serverlessrepo:ListApplicationVersions" ], "Resource": "*" } ] }
使用者示例 3:允许使用者部署应用程序
要使使用者能够部署应用程序,您必须向他们授予执行许多操作的权限。以下策略为客户提供了所需权限。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DeployApplication", "Effect": "Allow", "Action": [ "serverlessrepo:CreateCloudFormationChangeSet", "cloudformation:CreateChangeSet", "cloudformation:ExecuteChangeSet", "cloudformation:DescribeStacks" ], "Resource": "*" } ] }
注意
部署应用程序可能需要权限才能使用其他Amazon资源。由于Amazon Serverless Application Repository使用与相同的底层部署机制,因此有关更多信息Amazon CloudFormation,请参阅使用Ident Amazonity and Access Management 控制访问权限。如需有关解决与权限相关的部署问题的帮助,请参阅问题排查:IAM 权限不足。
使用者示例 4:拒绝访问部署资产
当应用程序与某个Amazon账户私下共享时,默认情况下,该账户中的所有用户都可以访问同一账户中所有其他用户的部署资产。以下策略禁止账户中的用户访问部署资产,这些资产存储在 Amazon S3 存储桶中Amazon Serverless Application Repository。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyDeploymentAssetAccess", "Effect": "Deny", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::awsserverlessrepo-changesets*/*" ] } ] }
使用者示例 5:防止使用者搜索和部署公有应用程序
您可以阻止用户对应用程序执行某些操作。
以下策略通过将 serverlessrepo:applicationType
指定为 public
来应用于公有应用程序。它可以通过将 Effect
指定为 Deny
来阻止用户执行许多操作。有关可用于 Amazon Serverless Application Repository 的条件键的更多信息,请参阅 Amazon Serverless Application Repository 的操作、资源和条件键。
{ "Version": "2012-10-17", "Statement": [ { "Condition": { "StringEquals": { "serverlessrepo:applicationType": "public" } }, "Action": [ "serverlessrepo:SearchApplications", "serverlessrepo:GetApplication", "serverlessrepo:CreateCloudFormationTemplate", "serverlessrepo:CreateCloudFormationChangeSet", "serverlessrepo:ListApplicationVersions", "serverlessrepo:ListApplicationDependencies" ], "Resource": "*", "Effect": "Deny" } ] }
注意
此政策声明也可以用作服务控制策略并应用于Amazon组织。有关服务控制策略的更多信息,请参阅Amazon Organizations用户指南中的服务控制策略。