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

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

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

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

要了解如何使用这些示例 JSON 策略文档创建基于 IAM 身份的策略,请参阅 I AM 用户指南中的 “在 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 应用程序的权限,此外还需要中记录的特定于 API 的权限。Amazon Serverless Application Repository 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: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:允许发布者创建应用程序或应用程序版本

如果要允许用户拥有创建 Amazon 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:允许使用者查看应用程序的详细信息

用户可以选择 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 Amazon ity 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 用户指南》中的服务控制策略