LoginSignup
0
0

AWSのリソースベースポリシーについて!!

Posted at

:one:はじめに

AWSにてCDK開発を行っていた際に、作成したリソースの連携が権限エラーで上手く動かないことがありました。調べてみるとリソースベースポリシーというものが関係しており、そこにたどり着くまでに、結構困らされました。
同じような方が増えないように、リソースベースポリシーについて解説してみようと思います。

:two:リソースベースポリシーとは

ユーザーガイドによると・・・

Amazon S3 バケットなどのリソースにアタッチする JSON ポリシードキュメントです。これらのポリシーでは、そのリソースに対して特定のアクションを実行するために指定されたプリンシパルのアクセス許可を付与するとともに、このアクセス許可が適用される条件を定義します。リソースベースのポリシーはインラインポリシーです。マネージド型のリソースベースのポリシーはありません

つまり、一般的なロールやユーザーに付与するポリシーではなく、リソースに対して付与するポリシーになります。
そして、付与したリソースに対して誰(何)からアクセスを許可するかを定義するものです。

:three:実際にみてみる

EventBridgeRuleからLambdaを呼び出す例を見てみます。

Lambdaを作成

image.png

EventBridgeを作成

先ほど作成したLambdaをターゲットとするEventBridgeRuleを作成します。
image.png

イベントを検知させる

正常に呼び出されることが確認できました。
EventBridgeにはLambdaを呼び出す権限がないのになぜ・・・?
image.png

Lambdaのリソースポリシーが設定されているから!

先ほど作成したLambdaを見てみるとリソースベースポリシーが自動で設定されていることが分かります。
image.png

リソースベースポリシーを削除してみる

エラーメッセージを見るためにRuleにデッドレターキューを設定して実行してみました。
権限エラーが起きていることが分かります。
image.png

:four:つまり・・・

一部リソースでは、リソースベースポリシーが無いと正常に動かないものがあり、コンソール上の作業では自動的に適切なポリシーが付与されるものもあります。
そのため、あまり意識してこなかった部分でしたが、CDKでは明示的にこのリソースベースポリシーを作成しないといけないわけです!
リソースベースポリシーの設定があるかどうかは以下サイトから確認が可能です。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html
image.png

:five:さいごに

適切な権限設定しているはずなのに(本当はできていない)動かないってときは、リソースベースポリシーが原因かも:spy:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0