

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

# CloudFormation メカニズムによる AWS SAM アクセス許可の管理
<a name="sam-permissions-cloudformation"></a>

 AWS リソースへのアクセスを制御するために、 AWS Serverless Application Model (AWS SAM) は と同じメカニズムを使用できます CloudFormation。詳細については、*AWS CloudFormation ユーザーガイド*の「[Controlling access with AWS Identity and Access Management](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html)」を参照してください。

サーバーレスアプリケーションを管理するためのユーザー権限の付与には、3 つの主なオプションがあります。各オプションは、ユーザーに異なるレベルのアクセスコントロールを提供します。
+ 管理者権限を付与する。
+ 必要な AWS 管理ポリシーをアタッチします。
+ 特定の AWS Identity and Access Management (IAM) アクセス許可を付与します。

選択したオプションに応じて、ユーザーはアクセス許可を持つ AWS リソースを含むサーバーレスアプリケーションのみを管理できます。

以下のセクションでは、各オプションがより詳しく説明されています。

## 管理者権限を付与する
<a name="sam-permissions-cloudformation-admin"></a>

管理者権限をユーザーに付与すると、 AWS リソースの任意の組み合わせを含むサーバーレスアプリケーションを管理できます。これは最もシンプルなオプションですが、ユーザーに最も広範な許可のセットを付与するため、最も大きな影響を与えるアクションの実行が可能になります。

ユーザーへの管理者権限の付与に関する詳細については、*IAM ユーザーガイド*の「[最初の IAM 管理者ユーザーおよびユーザーグループの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html)」を参照してください。

## 必要な AWS 管理ポリシーをアタッチする
<a name="sam-permissions-cloudformation-managed-policies"></a>

ユーザーに完全な管理者権限を付与するのではなく、[AWS 管理ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)を使用して権限のサブセットを付与することができます。このオプションを使用する場合は、ユーザーが管理するサーバーレスアプリケーションに必要なすべてのアクションとリソースが AWS 管理ポリシーのセットに含まれていることを確認してください。

たとえば、[サンプルの Hello World アプリケーションをデプロイ](serverless-getting-started-hello-world.md)するには、次の AWS 管理ポリシーで十分です。
+ AWSCloudFormationFullAccess
+ IAMFullAccess
+ AWSLambda\$1FullAccess
+ AmazonAPIGatewayAdministrator
+ AmazonS3FullAccess
+ AmazonEC2ContainerRegistryFullAccess

 IAM ユーザーへのポリシーのアタッチに関する詳細については、*IAM ユーザーガイド*の「[IAM ユーザーのアクセス権限の変更](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)」を参照してください。

## 特定の IAM 許可を付与する
<a name="sam-permissions-cloudformation-policy-statement"></a>

最もきめ細かなレベルのアクセスコントロールには、[ポリシステートメント](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_statement.html)を使用して、ユーザーに特定の IAM 許可を付与することができます。このオプションを使用する場合は、ユーザーが管理するサーバーレスアプリケーションに必要なすべてのアクションとリソースがポリシーステートメントに含まれていることを確認してください。

このオプションのベストプラクティスは、ユーザーが昇格された許可を自分自身に付与できないように、Lambda 実行ロールを含めたロールを作成するための許可をユーザーに付与しないことです。このため、管理者は、ユーザーが管理するサーバーレスアプリケーションで指定される [Lambda 実行ロール](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)を最初に作成する必要があります。Lambda 実行ロールの作成については、「[IAM コンソールでの実行ロールの作成](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html#permissions-executionrole-console)」を参照してください。

[サンプル Hello World アプリケーション](serverless-getting-started-hello-world.md)の実行には、**AWSLambdaBasicExecutionRole** で十分です。Lambda 実行ロールを作成したら、サンプルの Hello World アプリケーションの AWS SAM テンプレートファイルを変更して、次のプロパティを`AWS::Serverless::Function`リソースに追加します。

```
  Role: lambda-execution-role-arn
```

変更された Hello World アプリケーションを使用すると、以下のポリシーステートメントが、アプリケーションをデプロイ、更新、および削除するために十分な許可をユーザーに付与します。

**注記**  
このセクションのポリシーステートメントの例では、[Hello World アプリケーションのサンプル](serverless-getting-started-hello-world.md)をデプロイ、更新、および削除するための十分な権限を付与します。アプリケーションにリソースタイプを追加する場合は、ポリシーステートメントを更新して以下を含める必要があります。  
アプリケーションがサービスのアクションを呼び出すための権限。
サービスのアクションに必要な場合は、サービスプリンシパル。
例えば、Step Functions ワークフローを追加する場合は、[ここに](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstepfunctions.html#awsstepfunctions-actions-as-permissions)リストされているアクションに対するアクセス許可と、`states.amazonaws.com` サービスプリンシパルを追加する必要があります。

IAM ポリシーの詳細については、*IAM ユーザーガイド*の「[IAM ポリシーの管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html)」を参照してください。