re:Invent 2019 IAM Access Analyzerについて調べてみた #reinvent

re:Invent 2019 開催中に発表されたIAM Access Analyzerを調べてみました
2019.12.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。
ご機嫌いかがでしょうか。
"No human labor is no human error" が大好きな吉井 亮です。

re:Invent 2019 に参加しています。
AWS Identity and Access Management Access Analyzer(以下、IAM Access Analyzer)がリリースされましたので調べてみました。

速報はこちらです。

[速報] AWS Identity and Access Management Access Analyzerがリリースされました! #reinvent

IAM Access Analyzer とは

そもそも IAM Access Analyzer とは何でしょうか。
外部プリンシパルと共有しているアカウント内のリソースを検出する機能です。

IAM Access Analyzer を有効したアカウントは「信頼ゾーン」になります。
信頼ゾーンにあるプリンシパルからリリースへのアクセスは信頼済みと判断されます。
同じアカウント内の IAM ユーザーがアクセス許可の無い S3 へアクセスした、といったことは
IAM Access Analyzer では検出しないということです。(CloudTrail などで実現)

分析は24時間ごとに行われます。
検出結果を見て、リソースへのアクセスが正規のものなのか
潜在的なリスク (設定誤りや悪意ある侵入) かを判断する、といった使い方になります。

執筆日時点でサポートされているリソースは以下です。

  • Amazon S3 バケット
  • IAM ロール
  • AWS KMS キー
  • AWS Lambda 関数とレイヤー
  • Amazon SQS キュー

IAM Access Analyzer はアクセスログを調べて実際にアクセスがあったかを調べるものではありません。
外部エンティディからアクセスを許可していることが検出条件になります。
(実際のアクセスは CloudTrail などで調査)

速報ブログにもある通り追加料金は発生しません。
リージョンごとで有効にする必要があります。

やってみた

マネジメントコンソールから Access Analyzer を開きます。

右側にある アナライザーを作成 をクリックします。

[アナライザーを作成] 画面にいくので、任意の名前を付けてアナライザーを作成します。

※画面ショットが見たい方は速報ページをご覧ください。

検出

しばらくすると検出結果が表示されます。

任意の結果 ID をクリックして詳細画面を見てみましょう。
リソース、外部プリンシパル、アクセスレベルなどが確認できます。

これが意図したもの、正規のアクセスである場合は アーカイブ をクリックします。
アーカイブすることで次回の検出結果には表示されなくなります。
マルチアカウントでスイッチロール運用している場合や
S3 を公開している場合、ELB アクセスログを S3 へ保管している場合など
検出対象になってしまいますので、正規のアクセスはアーカイブしておきます。

正規のアクセスではない場合は、次のページに移動します。IAMコンソール をクリックします。
IAM コンソールが開くので不要なアクセス許可を削除する等の処置を行います。

※ 複数リージョンで IAM Access Analyzer を有効にしてみました。
※ 東京リージョンで特定の IAM ロールをアーカイブしました。
※ オレゴンリージョンで IAM Access Analyzer を開くとアーカイブされていない状態でした。
※ 執筆日時点では IAM ロールのアーカイブは有効にしたリージョンごとに実行しないとならないようです。

EventBridge による通知

IAM Access Analyzer で検出した結果を EventBridge で通知します。
通知先は SNS、Lambda などお好みの通知先を選択できます。

EventBridge を開きます。

ルールを作成 をクリックします。

任意の名前と説明を記入します。
[パターンを定義] では イベントパターン を選択します。
[イベント一致パターン] では カスタムパターン を選択します。
イベントパターンに以下を貼り付けて横にある 保存 をクリックします。

{
  "source": [
    "aws.access-analyzer"
  ],
  "detail-type": [
    "Access Analyzer Finding"
  ]
}

[ターゲットを選択] で任意のターゲットを指定します。
作成 をクリックします。

まとめ

アカウント外部からの予期せぬアクセスを未然に防ぐ、または、禁止するために
非常に有効なサービスがリリースされました。
これはもうアカウント作成時に初期作業で有効にしてしまってよいと思います。

参考

What Is IAM Access Analyzer?

以上、吉井 亮 がお届けしました。