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 SDKs)

當您使用 AWS CLI 或 AWS SDKs 來設定應用程式的許可 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