AWS Serverless Application Repository应用程序策略示例 - AWS Serverless Application Repository

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

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

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

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

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

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

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

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

注意

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

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

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

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

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

操作 描述
GetApplication

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

CreateCloudFormationChangeSet

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

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

CreateCloudFormationTemplate

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

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

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

应用示例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

注意

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

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

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

可以向AWS组织内的特定账户授予权限。为此,您可以将AWS账户列表指定为委托人,并指定您的组织 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
注意

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

要与您的AWS组织共享您的应用程序,您必须包含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