メニュー
AWS Lambda
開発者ガイド

AWS Lambda でアイデンティティベースのポリシー (IAM ポリシー) を使用する

このトピックでは、アカウント管理者が IAM アイデンティティ (ユーザー、グループ、ロール) へのアクセス権限ポリシーをアタッチする、アイデンティティベースのポリシーの例を示します。

重要

初めに、AWS Lambda リソースへのアクセスを管理するための基本概念と使用可能なオプションについて説明する概要トピックを読むことをお勧めします。詳細については、「AWS Lambda リソースへのアクセス権限の管理の概要」を参照してください。

このセクションでは、次のトピックを対象としています。

以下に示しているのは、アクセス権限ポリシーの例です。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateFunctionPermissions", "Effect": "Allow", "Action": [ "lambda:CreateFunction" ], "Resource": "*" }, { "Sid": "PermissionToPassAnyRole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::account-id:role/*" } ] }

このポリシーには以下の 2 つのステートメントがあります。

  • 最初のステートメントでは、Lambda 関数の Amazon リソースネーム (ARN) を使用してリソースに対し AWS Lambda アクション (lambda:CreateFunction) のアクセス権限を付与します。現在、AWS Lambda では、リソースレベルでこの特定のアクションを実行するためのアクセス権限はサポートされていません。したがって、ポリシーでは Resource の値としてワイルドカード文字 (*) を指定します。

  • 2 番目のステートメントは、IAM ロールに対して IAM アクション (iam:PassRole) を実行するためのアクセス権限を付与します。このステートメントで Resource 値の末尾のワイルドカード文字 (*) は、任意の IAM ロールに対して iam:PassRole アクションを実行するためのアクセス権限を付与することを意味します。このアクセス権限を特定のロールに制限するには、リソース ARN 内のワイルドカード文字 (*) を特定のロール名に置き換えます。

アイデンティティベースのポリシーでアクセス権限を得るプリンシパルを指定していないため、ポリシーでは Principal 要素を指定していません。ユーザーにポリシーをアタッチすると、そのユーザーが暗黙のプリンシパルになります。IAM ロールにアクセス権限ポリシーをアタッチすると、ロールの信頼ポリシーで識別されたプリンシパルがアクセス権限を得ることになります。

すべての AWS Lambda API アクションとそれらが適用されるリソースの表については、「Lambda API のアクセス権限: アクション、リソース、条件リファレンス」を参照してください。

AWS Lambda コンソールを使用するために必要なアクセス権限

AWS Lambda コンソールは、Lambda 関数の作成および管理のための統合された環境を提供します。コンソールには、「Lambda API のアクセス権限: アクション、リソース、条件リファレンス」に説明されている API 固有のアクセス権限に加えて、Lambda 関数の作成権限を必要とすることが多い機能やワークフローが多数あります。コンソールのこれらその他のアクセス権限の詳細については、「AWS Lambda コンソールを使用するために必要なアクセス権限」を参照してください。

AWS Lambda での AWS 管理 (事前定義) ポリシー

AWS は、AWS によって作成され管理されるスタンドアロンの IAM ポリシーが提供する多くの一般的ユースケースに対応します。管理ポリシーは、一般的ユースケースに必要なアクセス権限を付与することで、どの権限が必要なのかをユーザーが調査する必要をなくすることができます。詳細については、「AWS 管理ポリシー」 (IAM ユーザーガイド) を参照してください。

アカウントのユーザーに添付可能な以下の AWS 管理ポリシーは、AWS Lambda に固有のもので、ユースケースシナリオ別にグループ化されます。

  • AWSLambdaReadOnlyAccess – AWS Lambda リソースへの読み取り専用アクセスを付与します。このポリシーは、lambda:InvokeFunction アクションに対する権限を付与しないことに注意してください。ユーザーが Lambda 関数を呼び出す場合は、AWSLambdaRole AWS 管理ポリシーを添付します。

  • AWSLambdaFullAccess – AWS Lambda リソースへのフルアクセスを付与します。

  • AWSLambdaRole – 任意の Lambda 関数を呼び出す権限を付与します。

注記

IAM コンソールにサインインし、特定のポリシーを検索することで、これらのアクセス権限ポリシーを確認することができます。

そのほか、Lambda 関数の作成時に指定された IAM ロール (実行ロール) を使用するのが適当な AWS 管理ポリシーもあります。詳細については、「AWS Lambda アクセス権限モデル」を参照してください。

独自のカスタム IAM ポリシーを作成して、AWS Lambda API アクションとリソースのためのアクセス権限を許可することもできます。これらのカスタムポリシーを、それらの権限を必要としている、または Lambda 関数で作成したロール (IAM ロール) のカスタム実行を行う IAM ユーザーまたはグループに添付できます。

お客様が管理するポリシーの例

このセクションの例では、ユーザーに添付できるサンプルポリシーのグループが用意されています。ポリシーの作成が初めての場合は、このセクションの手順で説明されているように、お客様のアカウントに IAM ユーザーを作成し、ポリシーをユーザーにシーケンシャルに添付することをお勧めします。

コンソールを使用して、ユーザーにポリシーを添付しながら各ポリシーの効果を確認できます。最初は、ユーザーにアクセス権限が付与されてないため、コンソール使用して何もできません。ユーザーにポリシーを添付することで、ユーザーがコンソールで多様なアクションを実行できることを確認できます。 

2 つのブラウザウィンドウを使用することをお勧めします。1 つでユーザーを作成してアクセス権限を付与し、もう 1 つでユーザーの認証情報を使用して AWS マネジメントコンソール にサインインして、アクセス権限をユーザーに付与するごとに確認します。

Lambda 関数の実行ロールとして使用する IAM ロールの作成方法の例については、IAM ユーザーガイドIAM ロールの作成を参照してください。

ステップ 1: IAM ユーザーを作成する

まず、IAM ユーザーを作成し、管理者アクセス権限を持つ IAM グループにユーザーを追加したら、作成した IAM ユーザーに管理者アクセス権限を付与する必要があります。その後、特別な URL とその IAM ユーザーの認証情報を使用して AWS にアクセスできます。

手順については、IAM ユーザーガイド最初の IAM ユーザーと管理者グループの作成を参照してください。

ステップ 2: ユーザーに Lambda 関数のリストを許可する

アカウントの IAM ユーザーに lambda:ListFunctions アクションに対する権限がないと、コンソールには何も表示されません。これらのアクセス権限を付与すると、コンソールに、ユーザーが属する特定の AWS リージョンに作成された AWS アカウントの Lambda 関数のリストが表示できるようになります。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListExistingFunctions", "Effect": "Allow", "Action": [ "lambda:ListFunctions" ], "Resource": "*" } ] }

ステップ 3: ユーザーに Lambda 関数の詳細の表示を許可する

ユーザーが以下の AWS Lambda アクションの権限を持っている場合、Lambda 関数を選択してその関数の詳細 (エイリアス、バージョン、その他設定情報など) を表示できます。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DisplayFunctionDetailsPermissions", "Effect": "Allow", "Action": [ "lambda:ListVersionsByFunction", "lambda:ListAliases", "lambda:GetFunction", "lambda:GetFunctionConfiguration", "lambda:ListEventSourceMappings", "lambda:GetPolicy" ], "Resource": "*" } ] }

ステップ 4: ユーザーに Lambda 関数の呼び出しを許可する

ユーザーが手動で関数を呼び出すことを許可するには、以下のように lambda:InvokeFunction アクションに対する権限を付与する必要があります。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "InvokePermission", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "*" } ] }

ステップ 5: ユーザーに Lambda 関数のモニタリングと CloudWatch Logs の表示を許可する

ユーザーが Lambda 関数を呼び出すと、AWS Lambda はそれを実行し、結果を返します。Lambda 関数をモニタリングするには、追加のアクセス権限が必要です。

ユーザーがコンソールの [Monitoring] タブまたはコンソールのホームページにあるグリッドビューで Lambda 関数の CloudWatch メトリクスを閲覧できるようにするには、次のアクセス権限を付与する必要があります。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchPermission", "Effect": "Allow", "Action": [ "cloudwatch:GetMetricStatistics" ], "Resource": "*" } ] }

ユーザーが AWS Lambda コンソールにある CloudWatch Logs へのリンクをクリックして CloudWatch Logs でログ出力を閲覧できるようにするには、次のアクセス権限を付与する必要があります。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchLogsPerms", "Effect": "Allow", "Action": [ "cloudwatchlog:DescribeLogGroups", "cloudwatchlog:DescribeLogStreams", "cloudwatchlog:GetLogEvents" ], "Resource": "arn:aws:logs:region:account-id:log-group:/aws/lambda/*" } ] }

ステップ 6: ユーザーに Lambda 関数の作成を許可する

ユーザーが Lambda 関数を作成できるようにするには、次のアクセス権限を付与する必要があります。IAM に関連するアクションのアクセス権限は、ユーザーが Lambda 関数を作成する場合、Lambda 関数を実行するために AWS Lambda に割り当てられる IAM 実行ロールを選択する必要があるために必要です。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListExistingRolesAndPolicies", "Effect": "Allow", "Action": [ "iam:ListRolePolicies", "iam:ListRoles" ], "Resource": "*" }, { "Sid": "CreateFunctionPermissions", "Effect": "Allow", "Action": [ "lambda:CreateFunction" ], "Resource": "*" }, { "Sid": "PermissionToPassAnyRole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::account-id:role/*" } ] }

ユーザーが Lambda 関数を作成する際に IAM ロールを作成できるようにするには、次のように iam:PutRolePolicy アクションを実行する権限が必要です。

Copy
{ "Sid": "CreateARole", "Effect": "Allow", "Action": [ "iam:CreateRole" "iam:CreatePolicy" "iam:AttachRolePolicy" ], "Resource": "arn:aws:iam::account-id:role/*" }

重要

各 IAM ロールにはアクセス権限ポリシーが添付されており、これらによってロールに特定のアクセス権限が付与されています。ユーザーが新しいロールを作成する場合でも、既存のロールを使用する場合でも、ユーザーにはそのロールに関連付けられたアクセス権限ポリシーで付与されているすべてのアクションに対するアクセス権限が必要です。したがって、ユーザーに追加のアクセス権限を付与する必要があります。