LoginSignup
3
6

More than 5 years have passed since last update.

IAMの最小権限を調整するために、Amazon Macieを活用する

Last updated at Posted at 2018-05-21

こんにちは、ひろかずです

IAMのベストプラクティスには、最小権限を付与するという項目があります。
最小権限の確認には、遮断されたAPIを確認したいところです。

お手軽な確認方法としてMacieが使えそうなことに気がついたので、一筆書きます。

ざっくり構成

今回は、デフォルト暗号化をKMS暗号化に設定したs3バケットにオブジェクトをPutするというシチュエーションで試してみました。
ぱっと見で、当該s3に対するPutObjectがあれば良さそうですよね。
KMSへのアクセス権が必要そうですか?
何をつければ良いのでしょう?

figure1.png

まずやってみる

AccessDeniedしてしまいました。

$ aws s3 cp test.txt s3://bucket/ --profile readonly
upload failed: ./file.txt to s3://bucket/test.txt An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

権限を見てみます。
readonlyユーザーにs3putの権限を追加しています。

iam1.png

Limited-s3-put-secretの設定は以下です。

iam2.png

MacieでAccessDeniedされたAPIアクセスを確認する

RESEARCH画面で以下検索クエリーを実行します。

  • コマンド実行から検索可能になるまで肌感で5-10分程度のタイムラグがあります。
  • 自分で試す時は、xxxxx...の部分はAWSアカウントIDに置き換えてください。
  • 自分で試す時は、readonlyの部分を使用しているIAMユーザー名に置き換えてください。
eventNameErrorCode.secondary:"AccessDenied" AND @timestamp:[now-1d TO now]  AND  macieUniqueId:"xxxxxxxxxxxx\:user\:readonly"

スクロールしていくと、検索結果が表示されます。
PutObjectの失敗に混じって、GenerateDataKey:AccessDeniedがありますね。

macie2.png

展開するとこんな感じで表示されます

macie3.png

DenyされているAPIを許可する

GenerateDataKeyを許可するIAMポリシーLimited-kms-generate_datakeyを作成してアタッチしました。
iam3.png

Limited-kms-generate_datakeyの設定は以下です。

iam4.png

もう一度やってみる

成功しました。

$ aws s3 cp test.txt s3://bucket/ --profile readonly
upload: ./test.txt to s3://bucket/test.txt

最後に

これまで、失敗したAPIコールの調査ではCloudTrailを確認する他ありませんでしたが、検索可能にする作り込みの手間や、Athenaの課金が心配な状況でした。
Macieを使うことで、直感的に失敗したAPIコールを調査することができるようになったと思えます。
今後も活用していきたいですね。

今日はここまでです。
お疲れ様でした。

3
6
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
3
6