この記事の概要
以下の記事を参考にAWS EC2上でAmazon Chime SDKを動かそうとしたら、AWS KMS関連のエラーが理解できず困ったが、最終的に「とりあえず」動くようになった話。
Amazon Chime SDKをEC2を使ってサクッと動かしてみる
状況
- 知人から記事を参考にChime SDKをとりあえず動かそうとしたら、うまくいかないので助けてほしいと依頼された。
- 概要にある記事を参考にEC2(t2.small)上で、Amazon Chime SDKのdemos/serverlessを起動してみた。
- CloudFormation eventsを確認しつつ、不足したIAMポリシーをchimeTestUserに順次追加して解決済み。
- IAMポリシーの追加では、KMSのエラーが解決できなかった。
- 筆者のAWS関連技術は低い。
- EC2のログインユーザーは一般ユーザーで、本記事ではchimeTestUserと記述する。
課題
CloudFormation events from stack operationsで、以下のログが確認できた。つまり、AWS KMSの設定に関する不備がある。
Resource handler returned message: "The new key policy will not allow you to update the key policy in the future.
(Service: Kms, Status Code: 400, Request ID: xxxxxxxx-xxxx-xxxx-xxx x-xxxxxxxxxxxx, Extended Request ID: null)"
(RequestToken: xxxxxxxx-xxxx-xxxx-xxx x-xxxxxxxxxxxx, HandlerErrorCode: InvalidRequest)
参考情報
最初に参照した記事で質問したら以下のサイトが参考になるのではと紹介されました。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/update-key-policy-future/
実は質問以前に上記の記事を見ていたのだが、AWSの知識が乏しいのでイマイチ理解できず、有効に生かせなかった。
対策
demos/serverless/template.yaml を変更した。この方法が完璧とは思えないが、とりあえず動作させるという目的は果たせた。
EC2でdemos/serverlessを起動したユーザーにKMSの権限を全て与えたことになる(はず)。
ChimeKMSKey:
Type: AWS::KMS::Key
- Sid: Enable IAM User Permissions
Effect: Allow
Principal:
AWS: !Sub arn:aws:iam::${AWS::AccountId}:root
Action: kms:*
Resource: '*'
+ - Sid: Allow access for Key Administrators
+ Effect: Allow
+ Principal:
+ AWS: !Sub arn:aws:iam::${AWS::AccountId}:user/chimeTestUser
+ Action: kms:*
+ Resource: '*'
あとから見つけた情報
KMSでは、いざという状況で完全な管理を行うrootとは別に、利用する際の管理者、利用者を分けるのが普通らしい。
今回の対策では、chimeTestUserに管理者、利用者を任せたことになる。「とりあえず」の動作なので問題ないが、実際にChimeを運用するのであれば、KMSの設定を見直す必要がある。