

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

# AWS Serverless Application Repository ID ベースのポリシーの例
<a name="security_iam_id-based-policy-examples"></a>

デフォルトでは、IAM ユーザーおよびロールには、 AWS Serverless Application Repository リソースを作成または変更するアクセス許可はありません。また、 AWS マネジメントコンソール、 AWS CLI、または AWS API を使用してタスクを実行することはできません。IAM 管理者は、ユーザーとロールに必要な、指定されたリソースで特定の API オペレーションを実行する権限をユーザーとロールに付与する IAM ポリシーを作成する必要があります。続いて、管理者はそれらの権限が必要な IAM ユーザーまたはグループにそのポリシーをアタッチする必要があります。

JSON ポリシードキュメントのこれらの例を使用して、IAM アイデンティティベースのポリシーを作成する方法については、*IAM ユーザーガイド*の [JSON タブでのポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor)を参照してください。

**Topics**
+ [ポリシーのベストプラクティス](#security_iam_service-with-iam-policy-best-practices)
+ [AWS Serverless Application Repository コンソールの使用](#security_iam_id-based-policy-examples-console)
+ [ユーザーが自分のアクセス許可を表示できるようにする](#security_iam_id-based-policy-examples-view-own-permissions)
+ [お客様が管理するポリシーの例](#security_iam_id-examples)

## ポリシーのベストプラクティス
<a name="security_iam_service-with-iam-policy-best-practices"></a>

アイデンティティベースポリシーは非常に強力です。アカウント内の AWS Serverless Application Repository リソースを作成、アクセス、または削除できるかどうかを決定します。これらのアクションでは、 AWS アカウントのコストが発生する可能性があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:
+ **最小特権を付与する** - カスタムポリシーを作成するときは、タスクの実行に必要な許可のみを付与します。最小限の許可からスタートし、必要に応じて追加の許可を付与します。この方法は、寛容過ぎる許可から始めて、後から厳しくしようとするよりも安全です。詳細については、*「IAM ユーザーガイド」*の[「Grant Least Privilege」](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)(最小権限を付与する) を参照してください。
+ **機密性の高いオペレーションに MFA を有効にする** - 追加セキュリティとして、機密性の高いリソースまたは API オペレーションにアクセスするために IAM ユーザーに対して、多要素認証 (MFA) の使用を要求します。詳細については、*IAM ユーザーガイド*の「[AWSでの多要素認証 (MFA) の使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html)」を参照してください。
+ **追加のセキュリティとしてポリシー条件を使用する** - 実行可能な範囲内で、アイデンティティベースのポリシーがリソースへのアクセスを許可する条件を定義します。例えば、あるリクエストの送信が許可される IP アドレスの範囲を指定するための条件を記述できます。指定された日付または時間範囲内でのみリクエストを許可する条件を書くことも、SSL や MFA の使用を要求することもできます。詳細については、*「IAM ユーザーガイド」*の[「IAM JSON Policy Elements: Condition」](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)(IAM JSON ポリシー要素: 条件) を参照してください。

## AWS Serverless Application Repository コンソールの使用
<a name="security_iam_id-based-policy-examples-console"></a>

 AWS Serverless Application Repository コンソールには、 AWS Serverless Application Repository アプリケーションを検出および管理するための統合環境が用意されています。コンソールには、「」で説明されている API 固有のアクセス許可に加えて、 AWS Serverless Application Repository アプリケーションを管理するためのアクセス許可が必要になることが多い機能とワークフローが用意されています[AWS Serverless Application Repository API アクセス許可: アクションとリソースのリファレンス](serverlessrepo-api-permissions-ref.md)。

 AWS Serverless Application Repository コンソールを使用するために必要なアクセス許可の詳細については、「」を参照してください[お客様が管理するポリシーの例](#security_iam_id-examples)。

## ユーザーが自分のアクセス許可を表示できるようにする
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

この例では、ユーザーアイデンティティにアタッチされたインラインおよびマネージドポリシーの表示を IAM ユーザーに許可するポリシーの作成方法を示します。このポリシーには、コンソールで、または AWS CLI または AWS API を使用してプログラムでこのアクションを実行するアクセス許可が含まれています。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

## お客様が管理するポリシーの例
<a name="security_iam_id-examples"></a>

このセクションの例では、ユーザーにアタッチできるサンプルポリシーのグループが用意されています。ポリシーの作成が初めての場合は、まずアカウントで IAM ユーザーを作成し、次にこのユーザーにポリシーをアタッチします。また、以下の例を使用して、複数のアクションを実行するためのアクセス許可を含む 1 つのカスタマイズされたポリシーを作成し、次にそのポリシーをユーザーにアタッチすることもできます。

 ポリシーをユーザーに追加する方法については、*IAM ユーザーガイド*の[ユーザーへのアクセス許可の追加](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)を参照してください。

**Topics**
+ [発行者の例 1: 発行者にアプリケーションのリストを許可する](#security_iam_id-example-publisher-list-apps)
+ [発行者の例 2: 発行者にアプリケーションまたはアプリケーションのバージョンの詳細の表示を許可する](#security_iam_id-example-publisher-view-app-details)
+ [発行者の例 3: 発行者にアプリケーションまたはアプリケーションのバージョンの作成を許可する](#security_iam_id-example-publisher-create-apps)
+ [発行者の例 4: 他のユーザーとアプリケーションを共有するため発行者にアプリケーションポリシーの作成を許可する](#security_iam_id-example-publisher-create-app-policies)
+ [コンシューマーの例 1: コンシューマーにアプリケーションを検索することを許可する](#security_iam_id-example-consumer-search-apps)
+ [コンシューマーの例 2: コンシューマーにアプリケーションの詳細を表示することを許可する](#security_iam_id-example-consumer-view-app-details)
+ [コンシューマーの例 3: コンシューマーにアプリケーションのデプロイを許可する](#security_iam_id-example-consumer-deploy-apps)
+ [コンシューマーの例 4: デプロイアセットへのアクセスを拒否する](#security_iam_id-example-consumer-deny-deployment-assets)
+ [コンシューマーの例 5: コンシューマーによる公開アプリケーションの検索とデプロイを禁止する](#access-control-identity-based-example-consumer-deny-public-apps)

### 発行者の例 1: 発行者にアプリケーションのリストを許可する
<a name="security_iam_id-example-publisher-list-apps"></a>

アカウントの IAM ユーザーには、`serverlessrepo:ListApplications` オペレーションへのアクセス許可が必要です。アクセス許可がないと、コンソールには何も表示されません。これらのアクセス許可を付与すると、コンソールには、ユーザーが属する特定の AWS リージョンで作成された AWS アカウント内の AWS Serverless Application Repository アプリケーションのリストが表示されます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ListExistingApplications",
            "Effect": "Allow",
            "Action": [
                "serverlessrepo:ListApplications"
            ],
            "Resource": "*"
        }
    ]
}
```

------

 

### 発行者の例 2: 発行者にアプリケーションまたはアプリケーションのバージョンの詳細の表示を許可する
<a name="security_iam_id-example-publisher-view-app-details"></a>

ユーザーは AWS Serverless Application Repository アプリケーションを選択し、アプリケーションの詳細を表示できます。このような詳細には、作成者、説明、バージョン、およびその他の設定情報が含まれます。これを行うには、ユーザーに AWS Serverless Application Repositoryの `serverlessrepo:GetApplication` API オペレーションと`serverlessrepo:ListApplicationVersions` API オペレーションへのアクセス許可が必要です。

次の例では、これらのアクセス許可は、Amazon リソースネーム (ARN) が `Resource` 値として指定されている特定のアプリケーションに付与されます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewApplication",
            "Effect": "Allow",
            "Action": [
                "serverlessrepo:GetApplication",
                "serverlessrepo:ListApplicationVersions"
            ],
            "Resource": "arn:aws:serverlessrepo:us-east-1:111122223333:applications/application-name"
        }
    ]
}
```

------

 

### 発行者の例 3: 発行者にアプリケーションまたはアプリケーションのバージョンの作成を許可する
<a name="security_iam_id-example-publisher-create-apps"></a>

ユーザーに AWS Serverless Application Repository アプリケーションを作成するアクセス許可を付与する場合は、次のポリシーに示すように、 `serverlessrepo:CreateApplication` および `serverlessrepo:CreateApplicationVersions`オペレーションにアクセス許可を付与する必要があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateApplication",
            "Effect": "Allow",
            "Action": [
                "serverlessrepo:CreateApplication",
                "serverlessrepo:CreateApplicationVersion"
            ],
            "Resource": "*"
        }
    ]
}
```

------

 

### 発行者の例 4: 他のユーザーとアプリケーションを共有するため発行者にアプリケーションポリシーの作成を許可する
<a name="security_iam_id-example-publisher-create-app-policies"></a>

ユーザーが他のユーザーとアプリケーションを共有するには、次のポリシーに示すように、アプリケーションポリシーを作成するためのアクセス許可をユーザーに付与する必要があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ShareApplication",
            "Effect": "Allow",
            "Action": [
                "serverlessrepo:PutApplicationPolicy",
                "serverlessrepo:GetApplicationPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

 

### コンシューマーの例 1: コンシューマーにアプリケーションを検索することを許可する
<a name="security_iam_id-example-consumer-search-apps"></a>

コンシューマーがアプリケーションを検索するには、次のアクセス権限を付与する必要があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SearchApplications",
            "Effect": "Allow",
            "Action": [
                "serverlessrepo:SearchApplications"
            ],
            "Resource": "*"
        }
    ]
}
```

------

 

### コンシューマーの例 2: コンシューマーにアプリケーションの詳細を表示することを許可する
<a name="security_iam_id-example-consumer-view-app-details"></a>

ユーザーは AWS Serverless Application Repository アプリケーションを選択し、作成者、説明、バージョン、その他の設定情報など、アプリケーションの詳細を表示できます。これを行うには、ユーザーは次の AWS Serverless Application Repository オペレーションに対するアクセス許可を持っている必要があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewApplication",
            "Effect": "Allow",
            "Action": [
                "serverlessrepo:GetApplication",
                "serverlessrepo:ListApplicationVersions"
            ],
            "Resource": "*"
        }
    ]
}
```

------

 

### コンシューマーの例 3: コンシューマーにアプリケーションのデプロイを許可する
<a name="security_iam_id-example-consumer-deploy-apps"></a>

顧客がアプリケーションをデプロイするには、多くのオペレーションを実行するためのアクセス許可を付与する必要があります。次のポリシーは、顧客に必要な権限を提供します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DeployApplication",
            "Effect": "Allow",
            "Action": [
                "serverlessrepo:CreateCloudFormationChangeSet",
                "cloudformation:CreateChangeSet",
                "cloudformation:ExecuteChangeSet",
                "cloudformation:DescribeStacks"

            ],
            "Resource": "*"
        }
    ]
}
```

------

**注記**  
アプリケーションのデプロイには、追加の AWS リソースを使用するためのアクセス権限が必要になる場合があります。は と同じ基盤となるデプロイメカニズム AWS Serverless Application Repository を使用するため CloudFormation、詳細については、[AWS 「Identity and Access Management によるアクセスの制御](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html)」を参照してください。アクセス許可に関連するデプロイの問題については、「[トラブルシューティング: IAM アクセス権限の不足](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#troubleshooting-errors-insufficient-iam-permissions)」も参照してください。

### コンシューマーの例 4: デプロイアセットへのアクセスを拒否する
<a name="security_iam_id-example-consumer-deny-deployment-assets"></a>

アプリケーションが AWS アカウントとプライベートに共有されている場合、デフォルトでは、そのアカウントのすべてのユーザーは、同じアカウントの他のすべてのユーザーのデプロイアセットにアクセスできます。次のポリシーでは、アカウントのユーザーが AWS Serverless Application Repositoryの Amazon S3 バケットに保存されているデプロイアセットにアクセスすることを禁止します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyDeploymentAssetAccess",
            "Effect": "Deny",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::awsserverlessrepo-changesets*/*"
            ]
        }
    ]
}
```

------

### コンシューマーの例 5: コンシューマーによる公開アプリケーションの検索とデプロイを禁止する
<a name="access-control-identity-based-example-consumer-deny-public-apps"></a>

ユーザーがアプリケーションに対して特定のアクションを実行できないようにすることができます。

次のポリシーは、`serverlessrepo:applicationType` を `public` に指定することで、公開アプリケーションに適用されます。これは、`Effect` を `Deny` 指定することで、ユーザーが多くのアクションを実行することを防ぎます。で使用できる条件キーの詳細については AWS Serverless Application Repository、「 の[アクション、リソース、および条件キー AWS Serverless Application Repository](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsserverlessapplicationrepository.html)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Condition": {
                "StringEquals": {
                    "serverlessrepo:applicationType": "public"
                }
            },
            "Action": [
                "serverlessrepo:SearchApplications",
                "serverlessrepo:GetApplication",
                "serverlessrepo:CreateCloudFormationTemplate",
                "serverlessrepo:CreateCloudFormationChangeSet",
                "serverlessrepo:ListApplicationVersions",
                "serverlessrepo:ListApplicationDependencies"
            ],
            "Resource": "*",
            "Effect": "Deny"
        }
    ]
}
```

------

**注記**  
このポリシーステートメントは、サービスコントロールポリシーとして使用し、 AWS 組織に適用することもできます。サービスコントロールポリシーの詳細については、*AWS Organizations ユーザーガイド*の[サービスコントロールポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scp.html)を参照してください。