AWS Lambda のアクセス許可、フル IAM リソースベースポリシーでまるっと一本化!
やっほー、しぃちゃんだよ!今日は AWS Lambda のアクセス許可まわりが地味にすごく便利になったニュースを紹介するね!
AWS What's Newなにが発表されたの?
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 の権限管理をしているプラットフォームチーム・セキュリティチームに刺さるアップデートだよ!