AWS Serverless Application Repositoryアプリケーションポリシーの例 - 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 アプリケーションポリシーは、アプリケーションのデプロイと、これらのアプリケーションの検索や詳細の表示などの関連操作に必要なアクセス許可をコンシューマーに付与するためにパブリッシャーが主に使用します。

パブリッシャーは、アプリケーションへのアクセス許可を次の 3 つのカテゴリに設定できます。

  • 非公開 – 同じアカウントで作成され、他のアカウントと共有されていないアプリケーション。非公開アプリケーションをデプロイするアクセス許可を持つのは、AWS アカウントを共有するコンシューマーのみです。

  • 非公開共有 - パブリッシャーが一連の特定の AWS アカウントまたは AWS Organization の AWS アカウントと明示的に共有しているアプリケーション。コンシューマーは、これらの AWS アカウントまたは AWS Organization と共有されているアプリケーションをデプロイするためのアクセス許可を付与されます。AWS Organization の詳細については、AWS Organizations ユーザーガイドを参照してください。

  • 公開共有 – パブリッシャーがすべてのユーザーと共有しているアプリケーション。すべてのコンシューマーは、すべての公開共有アプリケーションをデプロイするためのアクセス許可を付与されます。

注記

非公開共有アプリケーションの場合、AWS Serverless Application Repository は AWS アカウントのみをプリンシパルとしてサポートします。パブリッシャーは、AWS Serverless Application Repository アプリケーションに対して AWS アカウント内のすべてのユーザーを 1 つのグループとして許可または拒否できます。パブリッシャーは、AWS Serverless Application Repository アプリケーションに対して AWS アカウント内の個別のユーザーを許可または拒否することはできません。

AWS Management Console を使用してアプリケーションへのアクセス許可を設定する手順については、「アプリケーションの共有」を参照してください。

AWS CLI を使用してアプリケーションへのアクセス許可を設定する手順と例については、次のセクションを参照してください。

アプリケーションへのアクセス許可 (AWS CLI および AWS SDK)

AWS CLI または AWS SDK を使用して 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
注記

アプリケーションを公開共有するには、SemanticVersion プロパティ LicenseUrl とプロパティの両方が設定されている必要があります。

例 3: アプリケーションを非公開にする

アプリケーションを非公開にして、誰とも共有せず、それを所有する AWS アカウントによってのみデプロイできます。そのためには、ポリシーからプリンシパルとアクションをクリアします。これにより、AWS Organization 内の他のアカウントのアクセス許可もアプリケーションのデプロイから削除されます。

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 Organization のすべてのアカウントでアプリケーションを共有する

アクセス許可は、AWS Organization 内のすべてのユーザーに付与できます。これを行うには、次の例のように、組織 ID を指定します。

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

AWS Organization の詳細については、AWS Organizations ユーザーガイドを参照してください。

注記

指定できるのは、AWS アカウントがメンバーである AWS Organization のみです。メンバーではない AWS Organization を指定しようとすると、エラーが発生します。

アプリケーションを AWS Organization と共有するには、将来共有を取り消す必要がある場合に備えて、UnshareApplication アクションのアクセス許可を含める必要があります。

例 6: AWS Organization の一部のアカウントとアプリケーションを共有する

アクセス許可は、AWS Organization 内の特定のアカウントに付与できます。これを行うには、次の例のように 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 Organization のみです。メンバーではない AWS Organization を指定しようとすると、エラーが発生します。

アプリケーションを AWS Organization と共有するには、将来共有を取り消す必要がある場合に備えて、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