AWS Serverless Application Repository 基于身份的策略示例 - AWS Serverless Application Repository
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

AWS Serverless Application Repository 基于身份的策略示例

默认情况下,IAM 用户和角色没有创建或修改 AWS Serverless Application Repository 资源的权限。它们还无法使用 AWS 管理控制台、AWS CLI 或 AWS API 执行任务。IAM 管理员必须创建 IAM 策略,为用户和角色授予权限,以便对他们所需的指定资源执行特定的 API 操作。然后,管理员必须将这些策略附加到需要这些权限的 IAM 用户或组。

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

策略最佳实践

基于身份的策略非常强大。它们确定某个人是否可以创建、访问或删除您账户中的 AWS Serverless Application Repository 资源。这些操作可能会使 AWS 账户产生成本。创建或编辑基于身份的策略时,请遵循以下准则和建议:

  • 授予最低权限 – 创建自定义策略时,仅授予执行任务所需的许可。最开始只授予最低权限,然后根据需要授予其他权限。这样做比起一开始就授予过于宽松的权限而后再尝试收紧权限来说更为安全。有关更多信息,请参阅 IAM 用户指南 中的授予最小权限

  • 为敏感操作启用 MFA – 为增强安全性,要求 IAM 用户使用多重身份验证 (MFA) 来访问敏感资源或 API 操作。有关更多信息,请参阅 IAM 用户指南 中的在 AWS 中使用多重身份验证 (MFA)

  • 使用策略条件来增强安全性 – 在切实可行的范围内,定义基于身份的策略在哪些情况下允许访问资源。例如,您可编写条件来指定请求必须来自允许的 IP 地址范围。您也可以编写条件,以便仅允许指定日期或时间范围内的请求,或者要求使用 SSL 或 MFA。有关更多信息,请参阅 IAM 用户指南 中的 IAM JSON 策略元素:Condition

使用 AWS Serverless Application Repository 控制台

AWS Serverless Application Repository 控制台为您提供了一个发现和管理 AWS Serverless Application Repository 应用程序的集成环境。此控制台提供了多种功能和工作流,通常需要管理 AWS Serverless Application Repository 应用程序的权限以及 AWS Serverless Application Repository API 权限:操作和资源参考中记录的特定于 API 的权限。

有关使用 AWS Serverless Application Repository 控制台所需的权限的更多信息,请参阅客户托管策略示例

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

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws-cn: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 操作权限,然后才能在控制台中查看任何内容。在您授予这些权限时,控制台会显示在用户所属的特定 AWS 区域中创建的 AWS 账户中的 AWS Serverless Application Repository 应用程序列表。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListExistingApplications", "Effect": "Allow", "Action": [ "serverlessrepo:ListApplications" ], "Resource": "*" } ] }

 

发布者示例 2:允许发布者查看应用程序或应用程序版本的详细信息

用户可以选择一个 AWS Serverless Application Repository 应用程序并查看该应用程序的详细信息。此类详细信息包括作者、说明、版本和其他配置信息。为此,用户需要 AWS Serverless Application Repository 的 serverlessrepo:ListApplicationVersionsserverlessrepo: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:允许发布者创建应用程序或应用程序版本

如果您希望允许用户具有创建 AWS Serverless Application Repository 应用程序的权限,则需要授予 serverlessrepo:CreateApplicationserverlessrepo: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:允许使用者查看应用程序的详细信息

用户可以选择一个 AWS Serverless Application Repository 应用程序并查看该应用程序的详细信息,如作者、说明、版本和其他配置信息。为此,用户必须具有以下 AWS 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": "*" } ] }
注意

部署应用程序可能需要使用其他 AWS 资源的权限。由于 AWS Serverless Application Repository 使用与 AWS CloudFormation 相同的基础部署机制,请参阅使用 AWS Identity and Access Management 控制访问权限来了解更多信息。如需有关解决与权限相关的部署问题的帮助,请参阅问题排查:IAM 权限不足

使用者示例 4:拒绝访问部署资产

当应用程序与 AWS 账户私下共享时,默认情况下,该账户中的所有用户都可以访问同一账户中所有其他用户的部署资产。以下策略阻止账户中的用户访问部署资产,这些资产存储在 AWS Serverless Application Repository 的 Amazon S3 存储桶中。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyDeploymentAssetAccess", "Effect": "Deny", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::awsserverlessrepo-changesets*/*" ] } ] }

使用者示例 5:防止使用者搜索和部署公有应用程序

您可以阻止用户对应用程序执行某些操作。

以下策略通过将 serverlessrepo:applicationType 指定为 public 来应用于公有应用程序。它可以通过将 Effect 指定为 Deny 来阻止用户执行许多操作。有关可用于 AWS Serverless Application Repository 的条件键的更多信息,请参阅 AWS 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" } ] }
注意

此策略语句也可用作服务控制策略,并应用于 AWS 组织。有关服务控制策略的更多信息,请参阅 AWS Organizations 用户指南 中的服务控制策略