Lambda での属性ベースのアクセスコントロールの使用
属性ベースのアクセス制御 (ABAC) では、タグを使用して Lambda リソースへのアクセスを制御できます。タグは、特定の Lambda リソースにアタッチしたり、特定の API リクエストに渡したり、リクエストを実行する AWS Identity and Access Management (IAM) プリンシパルにアタッチしたりすることができます。AWS による属性ベースアクセスの付与の詳細については、「IAM ユーザーガイド」の「タグを使用した AWS リソースへのアクセスの制御」を参照してください。
ABAC を使用すると、IAM ポリシーで Amazon リソースネーム (ARN) または ARN パターンを指定しなくても、最小特権を付与することができます。代わりに、IAM ポリシーの条件要素で、アクセスを制御するためのタグを指定します。新しいリソースを作成する際の IAM ポリシーの更新が必要なくなるため、ABAC を使用するとスケーリングが容易になります。代わりに、新しいリソースには、アクセスを制御するためのタグを追加します。
Lambda では、タグは次のリソースで機能します。
関数 — 関数のタグ付けの詳細については、「Lambda 関数でのタグの使用」を参照してください。
コード署名設定 — コード署名設定のタグ付けの詳細については、「コード署名設定でのタグの使用」を参照してください。
イベントソースマッピング — イベントソースマッピングのタグ付けの詳細については、「イベントソースマッピングでのタグの使用」を参照してください。
レイヤーではタグはサポートされていません。
次の条件キーを使用すると、タグに基づいて IAM ポリシールールを記述できます。
-
aws:ResourceTag/tag-key: Lambda リソースにアタッチされているタグに基づいてアクセスを制御します。
-
aws:RequestTag/tag-key: 新しい関数の作成時などに、リクエスト内のタグを要求します。
-
aws:PrincipalTag/tag-key: IAM プリンシパル (リクエストを行っているユーザー) が実行できる操作内容を、IAM ユーザーまたはロールにアタッチされたタグに基づき制御します。
-
aws:TagKeys: リクエストで特定のタグキーを使用できるかどうかを制御します。
それらをサポートするアクションに対してのみ、条件を指定できます。各 Lambda アクションでサポートされる条件のリストについては、「サービス認可リファレンス」の「AWS Lambda のアクション、リソース、および条件キー」を参照してください。aws:ResourceTag/tag-key のサポートについては、「AWS Lambda で定義されるリソースタイプ」を参照してください。aws:RequestTag/tag-key および aws:TagKeys のサポートについては、「AWS Lambda で定義されるアクション」を参照してください。