shiichan

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

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

AWS What's New aws.amazon.com

なにが発表されたの?

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 の権限管理をしているプラットフォームチーム・セキュリティチームに刺さるアップデートだよ!