AWS Lambdaを環境変数を用いて実行する際に""次のことを実行する権限がありません: kms:Encrypt.""と表示されてしまうので解消しようと思ったらできなかった

AWS Lambdaを環境変数を用いて実行する際に""次のことを実行する権限がありません: kms:Encrypt.""と表示されてしまうので解消しようと思ったらできなかった:


AWS Lambdaを環境変数を用いて実行する際に""次のことを実行する権限がありません: kms:Encrypt.""と表示されてしまうので解消してみたできなかった


何を目的に、何をしたのか。(達成できてない場合は「できてません」も冒頭で)

ロールにポリシーを付与しているにもかかわらず、Lambda上で環境変数を用いて関数を作成しようとしてみると、下記のエラーメッセージが出てしまう。
image.png


結論やわかったこと

わからなかった。mustな機能ではないので今回は見送る。


実際に行った事


検証①そもそもポリシーがkms:Encryptの権限を認証するように書かれていない

まずAWS管理チームから頂いたKMSを認証するポリシーをシュミレートしたところ、単体では

kms:Encrypt 
をサポートしていなかった。つまりルートユーザーで管理しているKMSにかかるポリシーではkms:Encryptへのアクセスを承認していない。

image.png

そのためインラインポリシー内にkms:Encryptを追加して、ロールをシュミレートしてみたところ実際に結果としてallowedが帰ってきた。

ポリシーのシュミレートについては下記参照。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_testing-policies.html

しかし、インラインポリシーにkms:Encryptを設定して,

シュミレータ上でallowになっていてもエラーメッセージは消えなかった。

ルートユーザーが作成したポリシー内に権限が入っているべきなのだろうか。


検証②キーポリシーに入っていないケース

{ 
      "Sid": "Allow use of the key", 
      "Effect": "Allow", 
      "Principal": { 
        "AWS": [ 
          "arn:aws:iam::XXXX:role/XXXX", 
          "arn:aws:iam::XXXX:user/XXXX" 
        ] 
      }, 
      "Action": [ 
        "kms:Encrypt", 
        "XXXXXXXXXXX" 
      ], 
      "Resource": "*" 
    }, 
実際にキーポリシーにはアクセス権限の付与が入っているのでここは問題ない。


結論やわかったことに対する補足

AWSで公開したくないパラメータを扱う3つの方法について
http://yebisupress.dac.co.jp/2017/02/14/aws%e3%81%aecredentials%e3%82%92%e6%b3%a8%e6%84%8f%e3%81%97%e3%81%a6%e5%8f%96%e3%82%8a%e6%89%b1%e3%81%86%e8%a9%b1/

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)