# AWS Lambda のアクセス許可、フル IAM リソースベースポリシーでまるっと一本化！

やっほー、しぃちゃんだよ！今日は AWS Lambda のアクセス許可まわりが地味にすごく便利になったニュースを紹介するね！

## なにが発表されたの？

AWS の What's New で、AWS Lambda 関数がフルスペックの IAM リソースベースポリシーに対応したことが発表されたよ。これまでよりも広い範囲の IAM の機能を使って、プラットフォーム管理者やセキュリティチームが細かいアクセス許可を定義できるようになったの。複数のプリンシパルとアクションを 1 つのポリシードキュメントにまとめて書けて、IAM condition キーもフルに使えるようになったのがポイントだよ。

## 今までどうだったの？

これまで Lambda 関数にアクセス許可を追加するときは、プリンシパルごとに 1 つずつ許可を追加していく必要があったんだって。この方法だと、複数アカウントにまたがるアーキテクチャや、たくさんのリソースを管理するチームにとっては柔軟性が足りなくて、管理の手間がかさんでたの。

## これで何が変わるの？

フル IAM リソースベースポリシーに対応したことで、複数のサービスに 1 つの Lambda 関数を呼び出す許可を与えたいときも、ステートメントを何個も並べる代わりに 1 つのポリシーでまとめて許可できるようになったよ。IAM condition キーもフルに使えるから、たとえば送信元 IP やプリンシパルタグをもとにアクセスを絞り込む、といったこともできちゃう。マルチアカウント構成で Lambda を運用している人や、たくさんのリソースの権限を管理しているチームほど、恩恵を感じやすいアップデートだね。

## 深く潜ってみよう

ポリシーの更新方法はこんな感じだよ。

- AWS Lambda コンソールの JSON エディタ
- AWS CLI
- AWS SDK
- AWS CloudFormation や AWS SAM などの IaC ツール

どの方法でも、1 つのポリシードキュメントを一括で更新できるのが嬉しいポイント。IAM condition キーを使えば、たとえば送信元 IP アドレスを条件にする、特定のタグが付いたプリンシパルだけ許可する、といった細かい制御も 1 つのポリシーの中で表現できるよ。より詳しいポリシーの書き方は、AWS Lambda Developer Guide の Lambda resource-based policy examples のページに載っているみたい。

## まとめ

- AWS Lambda 関数がフルスペックの IAM リソースベースポリシーに対応
- 複数のプリンシパルとアクションを 1 つのポリシーにまとめて記述できる
- IAM condition キーもフルに使えて、送信元 IP やプリンシパルタグでの絞り込みも可能
- コンソールの JSON エディタ・CLI・SDK・CloudFormation・SAM のいずれからでも更新できる
- マルチアカウント構成や多数のリソースを扱うチームほど、権限管理がシンプルになる

複数アカウントや大量のリソースにまたがって Lambda の権限管理をしているプラットフォームチーム・セキュリティチームに刺さるアップデートだよ！
