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

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

Amazon Serverless Application Repository应用程序策略示例

附加到Amazon Serverless Application Repository应用程序的权限策略称为应用程序策略。应用程序策略决定了指定委托人或PrincipalOrg可以对Amazon Serverless Application Repository应用程序执行的操作。

Amazon Serverless Application Repository应用程序是中的主要Amazon资源Amazon Serverless Application Repository。 Amazon Serverless Application Repository发布者主要使用应用程序策略向消费者授予部署其应用程序以及相关操作(例如搜索和查看这些应用程序的详细信息)的权限。

发布者可以将应用程序权限设置为以下三个类别:

  • 人 — 使用相同账户创建且未与任何其他账户共享的应用程序。只有共享您Amazon账户的消费者才有权部署私有应用程序。

  • 私密共享 — 发布商明确与一组特定Amazon帐户或Amazon组织中的Amazon帐户共享的应用程序。消费者有权部署已与其Amazon账户或Amazon组织共享的应用程序。有关Amazon组织的更多信息,请参阅Amazon Organizations用户指南

  • 公开共享-发布者与所有人共享的应用程序。所有使用者都有权部署任何公开共享的应用程序。

注意

对于私有共享应用程序,Amazon Serverless Application Repository仅支持将Amazon账户作为委托人。发布者可以将一个Amazon账户中的所有用户作为一个群组授予或拒绝该Amazon Serverless Application Repository应用程序。发布者不能授予或拒绝Amazon账户内的个人用户访问Amazon Serverless Application Repository应用程序。

有关使用 Amazon Web Services Management Console设置应用程序权限的说明,请参阅共享应用程序

有关使用 Amazon CLI 和示例设置应用程序权限的说明,请参阅以下部分。

应用程序权限(Amazon CLI和Amazon SDK)

使用Amazon CLI或 SAmazon DK 为Amazon Serverless Application Repository应用程序设置权限时,可以指定以下操作:

操作 描述
GetApplication

授予查看有关应用程序的信息的权限。

CreateCloudFormationChangeSet

授予部署应用程序的权限。

注意:此操作不会授予除部署之外的任何其他权限。

CreateCloudFormationTemplate

授予为应用程序创建 Amazon CloudFormation 模板的权限。

ListApplicationVersions 授予列出应用程序的版本的权限。
ListApplicationDependencies 授予列出包含应用程序中嵌套的应用程序的权限。
SearchApplications 授予搜索应用程序的权限。
部署

此操作启用表中前面列出的所有操作。也就是说,它授予查看应用程序、部署应用程序、列出版本以及搜索应用程序的权限。

应用示例

以下示例演示如何使用 Amazon CLI 授予权限。有关如何使用 Amazon Web Services Management Console授予权限的信息,请参阅共享应用程序

本节中的所有示例都使用这些 Amazon CLI 命令来管理与 Amazon Serverless Application Repository 应用程序关联的权限策略:

示例 1:与其他账户共享应用程序

要与其他特定帐户共享应用程序,但不与他人共享,您需要指定要共享的Amazon账户 ID 作为委托人。这也称为将应用程序设置为私下共享。要执行此操作,请使用以下 Amazon CLI 命令。

aws serverlessrepo put-application-policy \ --region region \ --application-id application-arn \ --statements Principals=account-id,Actions=Deploy
注意

私有共享应用程序只能在创建应用程序的同一Amazon区域中使用。

示例 2:公开共享应用程序

要使应用程序公开,请通过将“*”指定为委托人来与每个人共享应用程序,如以下示例所示。公开共享的应用程序在所有区域中都可用。

aws serverlessrepo put-application-policy \ --region region \ --application-id application-arn \ --statements Principals=*,Actions=Deploy
注意

要公开共享应用程序,它必须同时设置了 SemanticVersionLicenseUrl 属性。

示例 3:使应用程序成为私有的

您可以将应用程序设为私有,这样它就不会与任何人共享,只能由拥有它的Amazon账户部署。为此,您需要从策略中清除主体和操作,这还会删除Amazon组织内其他账户的部署应用程序的权限。

aws serverlessrepo put-application-policy \ --region region \ --application-id application-arn \ --statements '[]'
注意

私有应用程序只能在创建应用程序的同一Amazon区域中使用。

示例 4:指定多个账户和权限

您可以授予多个权限,也可以一次将它们授予多个Amazon账户。为此,您可以将列表指定为委托人和操作,如以下示例所示。

aws serverlessrepo put-application-policy \ --region region \ --application-id application-arn \ --statements Principals=account-id-1,account-id-2,Actions=GetApplication,CreateCloudFormationChangeSet

示例 5:与Amazon组织中的所有帐户共享应用程序

可以向Amazon组织内的所有用户授予权限。您可以通过指定组织 ID 来执行此操作,如以下示例所示。

aws serverlessrepo put-application-policy \ --region region \ --application-id application-arn \ --statements Principals=*,PrincipalOrgIDs=org-id,Actions=Deploy,UnshareApplication

有关Amazon组织的更多信息,请参阅Amazon Organizations用户指南

注意

您只能指定您的Amazon账户所属的Amazon组织。如果您尝试指定您不是其成员的Amazon组织,则会出现错误。

要与您的Amazon组织共享您的应用程序,您必须包含UnshareApplication操作权限,以防将来需要撤消共享。

示例 6:与Amazon组织中的某些帐户共享应用程序

可以向Amazon组织内的特定账户授予权限。为此,您可以将Amazon账户列表指定为委托人,并指定您的组织 ID,如以下示例所示。

aws serverlessrepo put-application-policy \ --region region \ --application-id application-arn \ --statements Principals=account-id-1,account-id-2,PrincipalOrgIDs=org-id,Actions=Deploy,UnshareApplication
注意

您只能指定您的Amazon账户所属的Amazon组织。如果您尝试指定您不是其成员的Amazon组织,则会出现错误。

要与您的Amazon组织共享您的应用程序,您必须包含UnshareApplication操作权限,以防将来需要撤消共享。

示例 7:检索应用程序策略

要查看应用程序的当前策略,例如,要查看它当前是否共享,您可以使用 get-application-policy 命令,如以下示例所示。

aws serverlessrepo get-application-policy \ --region region \ --application-id application-arn

示例 8:允许特定账户嵌套应用程序

允许任何人嵌套公有应用程序。如果您希望只允许特定账户嵌套您的应用程序,则必须设置以下最低权限,如以下示例所示。

aws serverlessrepo put-application-policy \ --region region \ --application-id application-arn \ --statements Principals=account-id-1,account-id-2,Actions=GetApplication,CreateCloudFormationTemplate