Lambda アクションのリソースと条件 - AWS Lambda

Lambda アクションのリソースと条件

AWS Identity and Access Management (IAM) ポリシーでリソースと条件を指定することで、ユーザーのアクセス許可の範囲を制限できます。ポリシーの各アクションが、それぞれの動作によって異なるリソースタイプと条件タイプの組み合わせをサポートします。

各 IAM ポリシーステートメントによって、リソースで実行されるアクションに対するアクセス許可が付与されます。アクションが名前の付いたリソースで動作しない場合、またはすべてのリソースに対してアクションを実行するアクセス許可を付与した場合、ポリシー内のリソースの値はワイルドカード (*) になります。多くのアクションでは、リソースの Amazon リソースネーム (ARN)、または複数のリソースに一致する ARN パターンを指定することによって、ユーザーによる変更が可能なリソースを制限できます。

リソース別にアクセス許可を制限するには、ARN 別にリソースを指定します。

Lambda リソース ARN 形式
  • 関数 - arn:aws:lambda:us-west-2:123456789012:function:my-function

  • 関数のバージョン - arn:aws:lambda:us-west-2:123456789012:function:my-function:1

  • 関数のエイリアス - arn:aws:lambda:us-west-2:123456789012:function:my-function:TEST

  • イベントソースマッピング - arn:aws:lambda:us-west-2:123456789012:event-source-mapping:fa123456-14a1-4fd2-9fec-83de64ad683de6d47

  • レイヤー - arn:aws:lambda:us-west-2:123456789012:layer:my-layer

  • レイヤーバージョン - arn:aws:lambda:us-west-2:123456789012:layer:my-layer:1

例えば、以下のポリシーでは、my-function という名前の関数を米国西部 (オレゴン) AWS リージョンで呼び出すことを、AWS アカウント 123456789012 のユーザーに対し許可します。

例 関数ポリシーを呼び出す
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Invoke", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:my-function" } ] }

アクションの識別子 (lambda:InvokeFunction) が、API オペレーション (Invoke) と異なる特別なケースです。その他のアクションのアクションの識別子は、lambda: プレフィックスがついたオペレーション名です。

ポリシー条件

条件は、アクションが許可されているかどうかを判断するために追加のロジックを適用するオプションのポリシー要素です。すべてのアクションでサポートされている共通の条件に加えて、Lambda は、一部のアクションが使用する追加パラメータの値を制限するための条件タイプも定義します。

例えば、lambda:Principal 条件では、関数のリソースベースのポリシーへの呼び出しアクセス権をユーザーが付与できる、サービスまたはアカウントを制限できます。次のポリシーを使用すると、ユーザーは、test という名前の関数を呼び出すアクセス許可を Amazon Simple Notification Service (Amazon SNS) トピックに付与できます。

例 関数ポリシーのアクセス許可を管理する
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageFunctionPolicy", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:test:*", "Condition": { "StringEquals": { "lambda:Principal": "sns.amazonaws.com" } } } ] }

この条件では、プリンシパルが Amazon SNS で、別のサービスやアカウントでないことが必要です。リソースパターンでは、関数名が test で、バージョン番号またはエイリアスが含まれている必要があります。例えば、test:v1 と指定します。

Lambda および他の AWS のサービスでのリソースと条件の詳細については、「サービス認証リファレンス」の「AWS のサービスのアクション、リソース、および条件キー」を参照してください。

関数のリソース名

Amazon リソースネーム (ARN) を使用して、ポリシーステートメント内で Lambda 関数を参照します。関数 ARN の形式は、関数全体を参照する (修飾)か、関数のバージョンエイリアスを参照する (非修飾) かに応じて異なります。

Lambda API コールを行うとき、ユーザーは、GetFunction FunctionName パラメータにあるバージョン ARN またはエイリアス ARN を渡すか、 GetFunction Qualifier パラメータにある値を設定することで、バージョンまたはエイリアスを指定することができます。Lambda は、IAM ポリシー内のリソース要素を、API コールで渡された FunctionNameQualifier の両方と比較することによって、認可の決定を行います。一致しないものがある場合、Lambda はそのリクエストを拒否します。

関数に対するアクションを許可するか拒否するかにかかわらず、期待どおりの結果を得るには、ポリシーステートメントで正しい関数の ARN タイプを使用する必要があります。例えば、ポリシーが非修飾 ARN を参照する場合、Lambda は非修飾 ARN を参照するリクエストを受け入れますが、修飾 ARN を参照するリクエストは拒否します。

注記

アカウント ID を照合するためにワイルドカード文字 (*) を使用することはできません。認められる構文の詳細については、「IAM ユーザーガイド」の「IAM JSON ポリシーリファレンス」を参照してください。

例 非修飾 ARN の呼び出しの許可
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction" } ] }

ポリシーが特定の修飾 ARN を参照する場合、Lambda はその ARN を参照するリクエストを受け入れますが、非修飾 ARN や別の修飾 ARN (myFunction:2 など) を参照するリクエストは拒否します。

例 特定の修飾 ARN の呼び出しの許可
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:1" } ] }

ポリシーが :* を使用して任意の修飾 ARN を参照する場合、Lambda は修飾 ARN ならどれでも受け入れますが、非修飾 ARN を参照するリクエストは拒否します。

例 任意の修飾 ARN の呼び出しの許可
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:*" } ] }

ポリシーが * を使用して任意の ARN を参照する場合、Lambda はすべての修飾 ARN と非修飾 ARN を受け入れます。

例 任意の修飾または非修飾 ARN の呼び出しの許可
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction*" } ] }

関数のアクション

以下の表で説明されているように、関数を操作するアクションは、関数、バージョン、またはエイリアス ARN によって特定の関数に制限することができます。リソース制限をサポートしていないアクションは、すべてのリソース (*) に付与されます。

関数のアクション
アクション リソース 条件

AddPermission

RemovePermission

関数

関数のバージョン

関数のエイリアス

lambda:Principal

aws:ResourceTag/${TagKey}

lambda:FunctionUrlAuthType

Invoke

アクセス許可: lambda:InvokeFunction

関数

関数のバージョン

関数のエイリアス

aws:ResourceTag/${TagKey}

lambda:EventSourceToken

CreateFunction

機能

lambda:CodeSigningConfigArn

lambda:Layer

lambda:VpcIds

lambda:SubnetIds

lambda:SecurityGroupIds

aws:ResourceTag/${TagKey}

aws:RequestTag/${TagKey}

aws:TagKeys

UpdateFunctionConfiguration

関数

lambda:CodeSigningConfigArn

lambda:Layer

lambda:VpcIds

lambda:SubnetIds

lambda:SecurityGroupIds

aws:ResourceTag/${TagKey}

CreateAlias

DeleteAlias

DeleteFunction

DeleteFunctionCodeSigningConfig

DeleteFunctionConcurrency

GetAlias

GetFunction

GetFunctionCodeSigningConfig

GetFunctionConcurrency

GetFunctionConfiguration

GetPolicy

ListProvisionedConcurrencyConfigs

ListAliases

ListTags

ListVersionsByFunction

PublishVersion

PutFunctionCodeSigningConfig

PutFunctionConcurrency

UpdateAlias

UpdateFunctionCode

機能

aws:ResourceTag/${TagKey}

CreateFunctionUrlConfig

DeleteFunctionUrlConfig

GetFunctionUrlConfig

UpdateFunctionUrlConfig

機能

関数のエイリアス

lambda:FunctionUrlAuthType

lambda:FunctionArn

aws:ResourceTag/${TagKey}

ListFunctionUrlConfigs

機能

lambda:FunctionUrlAuthType

DeleteFunctionEventInvokeConfig

GetFunctionEventInvokeConfig

ListFunctionEventInvokeConfigs

PutFunctionEventInvokeConfig

UpdateFunctionEventInvokeConfig

機能

aws:ResourceTag/${TagKey}

DeleteProvisionedConcurrencyConfig

GetProvisionedConcurrencyConfig

PutProvisionedConcurrencyConfig

関数のエイリアス

関数のバージョン

aws:ResourceTag/${TagKey}

GetAccountSettings

ListFunctions

*

なし

TagResource

機能

aws:ResourceTag/${TagKey}

aws:RequestTag/${TagKey}

aws:TagKeys

UntagResource

機能

aws:ResourceTag/${TagKey}

aws:TagKeys

イベントソースのマッピングアクション

イベントソースマッピングでは、アクセス許可に関する削除および更新を、特定のイベントソースに制限することができます。lambda:FunctionArn 条件では、ユーザーが呼び出すイベントソースを設定できる関数を制限することができます。

これらのアクションでは、リソースはイベントソースマッピングであるため、Lambda では、イベントソースマッピングで呼び出される関数に基づき、アクセス許可を制限することができる条件を提供します。

イベントソースのマッピングアクション
アクション リソース 条件

DeleteEventSourceMapping

UpdateEventSourceMapping

イベントソースマッピング

lambda:FunctionArn

CreateEventSourceMapping

GetEventSourceMapping

*

lambda:FunctionArn

ListEventSourceMappings

*

なし

レイヤーのアクション

レイヤーアクションでは、関数を使用してユーザーが管理または使用できるレイヤーを制限できます。レイヤーの使用とアクセス許可に関連するアクションはレイヤーのバージョン、PublishLayerVersion はレイヤー名に影響します。ワイルドカードとあわせていずれかを使用して、ユーザーが操作できるレイヤーを名前で制限することができます。

注記

GetLayerVersion アクションは GetLayerVersionByArn もカバーします。Lambda は、GetLayerVersionByArn を IAM アクションとしてサポートしていません。

レイヤーのアクション
アクション リソース 条件

AddLayerVersionPermission

RemoveLayerVersionPermission

GetLayerVersion

GetLayerVersionPolicy

DeleteLayerVersion

レイヤーバージョン

なし

ListLayerVersions

PublishLayerVersion

Layer

なし

ListLayers

*

なし