

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS Serverless Application Repository アプリケーションポリシーの例
<a name="security_iam_resource-based-policy-examples"></a>

 AWS Serverless Application Repository アプリケーションにアタッチされたアクセス許可ポリシーは、*アプリケーションポリシー*と呼ばれます。アプリケーションポリシーは、指定されたプリンシパルまたは principalOrg が AWS Serverless Application Repository アプリケーションで実行できるアクションを決定します。

 AWS Serverless Application Repository *アプリケーション*は、 の主要な AWS リソースです AWS Serverless Application Repository。 AWS Serverless Application Repository アプリケーションポリシーは、主にパブリッシャーがアプリケーションをデプロイするアクセス許可をコンシューマーに付与するために使用されます。また、これらのアプリケーションを検索して詳細を表示するなどの関連オペレーションも行います。

パブリッシャーは、アプリケーションへのアクセス許可を次の 3 つのカテゴリに設定できます。
+ **非公開** – 同じアカウントで作成され、他のアカウントと共有されていないアプリケーション。 AWS アカウントを共有するコンシューマーのみが、プライベートアプリケーションをデプロイするアクセス許可を持っています。
+ **プライベート共有** – パブリッシャーが特定の AWS アカウントのセットまたは AWS AWS 組織内のアカウントと明示的に共有したアプリケーション。コンシューマーには、自分の AWS アカウントまたは AWS 組織と共有されているアプリケーションをデプロイするアクセス許可があります。 AWS 組織の詳細については、*[AWS Organizations 「 ユーザーガイド](https://docs.aws.amazon.com/organizations/latest/userguide/)*」を参照してください。
+ **公開共有** – パブリッシャーがすべてのユーザーと共有しているアプリケーション。すべてのコンシューマーは、すべての公開共有アプリケーションをデプロイするためのアクセス許可を付与されます。

**注記**  
**プライベート共有アプリケーション**の場合、 はプリンシパルとして*AWS アカウント* AWS Serverless Application Repository のみをサポートします。パブリッシャーは、 AWS アカウント内のすべてのユーザーを単一のグループとして AWS Serverless Application Repository アプリケーションに付与または拒否できます。パブリッシャーは、 AWS アカウント内の個々のユーザーをアプリケーションに AWS Serverless Application Repository 付与または拒否することはできません。

を使用してアプリケーションのアクセス許可を設定する手順については AWS マネジメントコンソール、「」を参照してください[アプリケーションの共有](serverlessrepo-how-to-publish.md#share-application)。

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

## アプリケーションのアクセス許可 (AWS CLI および AWS SDKs)
<a name="application-permissions"></a>

 AWS CLI または AWS SDKs を使用してアプリケーションのアクセス許可 AWS Serverless Application Repository を設定する場合は、次のアクションを指定できます。


****  

| アクション | 説明 | 
| --- | --- | 
| GetApplication |  アプリケーションに関する情報を表示するためのアクセス許可を付与します。  | 
| CreateCloudFormationChangeSet |  アプリケーションをデプロイするためのアクセス許可を付与します。 注意: このアクションではデプロイ以外の他のアクセス許可は*付与されません*。  | 
| CreateCloudFormationTemplate |  アプリケーションの CloudFormation テンプレートを作成するアクセス許可を付与します。  | 
| ListApplicationVersions | アプリケーションのバージョンを一覧表示するためのアクセス許可を付与します。 | 
| ListApplicationDependencies | 上位アプリケーションにネストされているリストアプリケーションを一覧表示するためのアクセス許可を付与します。 | 
| SearchApplications | アプリケーションを検索するためのアクセス許可を付与します。 | 
| デプロイ |  このアクションにより、以上のすべてのアクションが有効になります。つまり、アプリケーションの表示、デプロイ、バージョンの一覧表示、および検索のアクセス許可が付与されます。  | 

## アプリケーションポリシーの例
<a name="access-control-resource-based-examples"></a>

以下の例では、 AWS CLIを使用してアクセス許可を付与する方法を示します。を使用してアクセス許可を付与する方法については AWS マネジメントコンソール、「」を参照してください[アプリケーションの共有](serverlessrepo-how-to-publish.md#share-application)。

このセクションのすべての例では、以下の AWS CLI コマンドを使用して、 AWS Serverless Application Repository アプリケーションに関連付けられたアクセス許可ポリシーを管理します。
+ [put-application-policy](https://docs.aws.amazon.com/cli/latest/reference/serverlessrepo/put-application-policy.html)
+ [get-application-policy](https://docs.aws.amazon.com/cli/latest/reference/serverlessrepo/get-application-policy.html)

**Topics**
+ [例 1: 別の特定のアカウントとアプリケーションを共有する](#access-control-resource-based-example-share-with-specific-account)
+ [例 2: アプリケーションを公開共有する](#access-control-resource-based-example-share-publicly)
+ [例 3: アプリケーションを非公開にする](#access-control-resource-based-example-make-private)
+ [例 4: 複数のアカウントおよびアクセス許可の指定](#access-control-resource-based-example-multiple-permissions)
+ [例 5: AWS 組織内のすべてのアカウントとアプリケーションを共有する](#access-control-resource-based-example-share-organization)
+ [例 6: AWS 組織内の一部のアカウントとアプリケーションを共有する](#access-control-resource-based-example-accounts-in-organization)
+ [例 7: アプリケーションポリシーを取得する](#access-control-resource-based-example-retrieve-app-policy)
+ [例 8: アプリケーションをネストすることを特定のアカウントに許可する](#access-control-resource-based-example-nest-app-policy)

### 例 1: 別の特定のアカウントとアプリケーションを共有する
<a name="access-control-resource-based-example-share-with-specific-account"></a>

アプリケーションを別の特定のアカウントと共有し、他のユーザーと共有しないようにするには、プリンシパルとして共有する AWS アカウント ID を指定します。この設定は、アプリケーションの*非公開共有*とも呼ばれます。これを行うには、次の AWS CLI コマンドを使用します。

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

**注記**  
*プライベート共有*アプリケーションは、アプリケーションが作成されたのと同じ AWS リージョンでのみ使用できます。

### 例 2: アプリケーションを公開共有する
<a name="access-control-resource-based-example-share-publicly"></a>

アプリケーションを公開するには、次の例のように「\$1」をプリンシパルとして指定し、すべてのユーザーとアプリケーションを共有します。公開共有したアプリケーションは、すべてのリージョンで利用できます。

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

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

### 例 3: アプリケーションを非公開にする
<a name="access-control-resource-based-example-make-private"></a>

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

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

**注記**  
*非公開*アプリケーションは、アプリケーションを作成した同じ AWS リージョンでのみ使用できます。

### 例 4: 複数のアカウントおよびアクセス許可の指定
<a name="access-control-resource-based-example-multiple-permissions"></a>

複数のアクセス許可を付与できます。また、複数のアクセス許可を一度に複数の 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 組織内のすべてのアカウントとアプリケーションを共有する
<a name="access-control-resource-based-example-share-organization"></a>

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

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

 AWS 組織の詳細については、*[AWS Organizations 「 ユーザーガイド](https://docs.aws.amazon.com/organizations/latest/userguide/)*」を参照してください。

**注記**  
 AWS アカウントがメンバーである AWS 組織のみを指定できます。自分がメンバーではない AWS 組織を指定しようとすると、エラーが発生します。  
アプリケーションを AWS 組織と共有するには、今後共有を取り消す必要がある場合に備えて、 `UnshareApplication`アクションのアクセス許可を含める必要があります。

### 例 6: AWS 組織内の一部のアカウントとアプリケーションを共有する
<a name="access-control-resource-based-example-accounts-in-organization"></a>

アクセス許可は、 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: アプリケーションポリシーを取得する
<a name="access-control-resource-based-example-retrieve-app-policy"></a>

現在共有されているかどうかを確認するなど、アプリケーションの現在のポリシーを表示するには、次の例のように、`get-application-policy` コマンドを使用します。

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

### 例 8: アプリケーションをネストすることを特定のアカウントに許可する
<a name="access-control-resource-based-example-nest-app-policy"></a>

公開アプリケーションのネストはすべてのユーザーに許可されます。アプリケーションをネストすることを特定のアカウントにのみ許可する場合は、次の例に示すように、以下の最小限のアクセス許可を設定する必要があります。

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